Ubuntu Server 18.04をインストールしましたが、古い/etc/network/interfaces
の代わりに、私のネットワーク構成は/etc/netplan
の一連のYAMLファイルに存在するようです。実際に持っているのは/etc/netplan/50-cloud-init.yaml
だけです:
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens3:
addresses: []
dhcp4: true
dhcp6: true
nameservers: {}
optional: true
ens4:
addresses: []
dhcp4: true
dhcp6: true
nameservers: {}
optional: true
version: 2
それはcloud-init
から/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg
によって生成されたようです:
network:
ethernets:
ens3:
addresses: []
dhcp4: true
dhcp6: true
nameservers: {}
optional: true
ens4:
addresses: []
dhcp4: true
dhcp6: true
nameservers: {}
optional: true
version: 2
この構成を編集し、実行中のマシンに変更を適用する正しい方法は何ですか? Netplanファイルのコメントは、一時的なものであり、cloud-init
による再起動時に生成されることを示唆していたため、cloud-init
の構成を編集する必要があります。しかし、それを編集して再起動した後でも、Netplanファイルへの変更は見られません。また、cloud-init
configの変更を手動で適用する方法がわかりません。そして、コメントをもう一度読んで、今では機械の破壊と再作成で持続しない変更について話しているように思えますが、これは言うまでもありません。だから明らかに私は何かを誤解しています。
だから私の質問は:
新しいcloud-init
/netplan
システムのどこに想定手動のネットワーク構成を配置するのですか?
/etc/netplan
で行った変更を適用するにはどうすればよいですか?
/etc/cloud/cloud.cfg.d
で行った変更を適用するにはどうすればよいですか?
最初に、現在の/etc/netplan/*.yaml
ファイルを/etc/netplan/*.yaml.BAK
のようなものにバックアップします。
次に、/etc/netplan/*.yaml
に必要な変更を加えます。 .yamlファイルを作成/編集する際には、インデントとスペースがあり、タブはありません。これは非常に重要です。
参考:既存の.yamlファイルは次で始まる必要があります:
network:
version: 2
renderer: networkd
次に:
Sudo netplan --debug generate
#設定ファイルを生成
Sudo netplan apply
#現在のシステムに適用
reboot
#適切な動作を確認するため
その他の例と構成ガイドラインについては、 https://netplan.io/examples を参照してください
Cfgからyamlを生成するためのトリックは...
cloud-init clean -r
次の問題は、そのcfgをseed.isoまたはnocloud-netメタデータから設定する方法です
rフラグは、再起動shutdown -r now
と同じです
cloud-init init
(再起動せずに)を実行すると、/ etc/netplan/50-cloud-init.yamlに目に見える変更はありません。
それで、リブートせずにそれをトリガーする方法についてまだ明確ではありませんか? cloud-init init
を試した後、systemctl restart cloud-init
を試しました
cloud-init -d modules --mode config
とcloud-init -d modules --mode final
も試しました
わかったよ、見つけたと思う...
systemctl restart cloud-init-local.service
cloud-init clean
を実行するとcloud-init init
が実行しないと、クラウドcfgからnetplan yamlを再構築するようです。 [Ubuntu 19.04 cloud-init 19]
[このデザインの可動部品が多すぎる]
注:これらのコマンドの両方が望ましい結果を達成することをさらに明確にする改善が見つかりました。
cloud-init clean --logs
cloud-init init --local