cloud-init#
cloud-init.vendor-data
cloud-init.user-data
cloud-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 を使う場合)