cloud-init#
cloud-init.vendor-datacloud-init.user-datacloud-init.network-config
しかし、 cloud-init を使おうとする前に、これから使おうとするイメージ・ソース
をどれにするかをまず決めてください。というのも、全てのイメージに
cloud-init パッケージがインストールされているわけではないからです。
ubuntu と ubuntu-daily の remote にあるイメージは全て cloud-init が有効です。
images remote のイメージで cloud-init が有効なイメージがあるものは /cloud という接尾辞がつきます(例: images:ubuntu/20.04/cloud)。
vendor-data と user-data は同じルールに従いますが、以下の制約があります。
ユーザーは vendordata に対して究極のコントロールが可能です。実行を無効化したりマルチパートの入力の特定のパートの処理を無効化できます。
デフォルトでは初回ブート時のみ実行されます。
vendordata はユーザーにより無効化できます。インスタンスの実行に vendordata の使用が必須な場合は vendordata を使うべきではありません。
ユーザーが指定した cloud-config は vendordata の cloud-config の上にマージされます。
LXD のインスタンスではインスタンスの設定よりもプロファイル内の vendor-data を使うべきです。
cloud-config の例はこちらにあります。 https://cloudinit.readthedocs.io/en/latest/topics/examples.html
カスタムネットワーク設定#
cloud-init は、network-config データを使い、Ubuntu リリースに応じて ifupdown もしくは netplan のどちらかを使って、システム上の関連する設定 を行います。
デフォルトではインスタンスの eth0 インタフェースで DHCP クライアントを使うように なっています。
これを変更するためには設定ディクショナリ内の cloud-init.network-config キーを
使ってあなた自身のネットワーク設定を定義する必要があります。その設定が
デフォルトの設定をオーバーライドするでしょう(これはテンプレートがそのように
構成されているためです)。
例えば、ある特定のネットワーク・インタフェースを静的 IPv4 アドレスを持ち、 カスタムのネームスペースを使うようにするには、以下のようにします。
config:
cloud-init.network-config: |
version: 1
config:
- type: physical
name: eth1
subnets:
- type: static
ipv4: true
address: 10.10.101.20
netmask: 255.255.255.0
gateway: 10.10.101.1
control: auto
- type: nameserver
address: 10.10.10.254
この結果、インスタンスの rootfs には以下のファイルが作られます。
/var/lib/cloud/seed/nocloud-net/network-config/etc/network/interfaces.d/50-cloud-init.cfg(ifupdown を使う場合)/etc/netplan/50-cloud-init.yaml(netplan を使う場合)