web-dev-qa-db-ja.com

cloud-initを使用してネットワーク構成をリロードするにはどうすればよいですか?

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の変更を手動で適用する方法がわかりません。そして、コメントをもう一度読んで、今では機械の破壊と再作成で持続しない変更について話しているように思えますが、これは言うまでもありません。だから明らかに私は何かを誤解しています。

だから私の質問は:

  1. 新しいcloud-init/netplanシステムのどこに想定手動のネットワーク構成を配置するのですか?

  2. /etc/netplanで行った変更を適用するにはどうすればよいですか?

  3. /etc/cloud/cloud.cfg.dで行った変更を適用するにはどうすればよいですか?

6
interfect

最初に、現在の/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 を参照してください

2
heynnema

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 configcloud-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
1
Master James