18.7. クラウドデプロイメント用の Ignition 設定の作成
AWS、Azure、Google Cloud、その他のクラウドプラットフォーム上で bootc インスタンスをプロビジョニングするには、クラウドプロバイダーのユーザーデータメカニズムを通じて Ignition の設定を渡すことができます。
前提条件
-
Ignition が有効な
bootcイメージがクラウドプロバイダーにアップロードされている。bootc-image-builder を使用した AMI イメージの作成および AWS へのアップロード を参照してください。 - クラウドプロバイダーのコンソールまたは CLI にアクセスできる。
Butane YAML 設定を Ignition JSON に変換するために、
butaneユーティリティーがローカルマシンにインストールされている。$ sudo dnf install -y butane
手順
cloud-config.buという名前の Butane 設定ファイルを作成します。variant: r4e version: 1.5.0 passwd: users: - name: core groups: - wheel - sudo storage: files: - path: /etc/hostname mode: 0644 contents: inline: <hostname> - path: /etc/sysconfig/network-scripts/ifcfg-eth0 mode: 0644 contents: inline: | DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes - path: /etc/profile.d/cloud-env.sh mode: 0644 contents: inline: | export CLOUD_PROVIDER="aws" export ENVIRONMENT="production" directories: - path: /var/log/applications mode: 0755 systemd: units: - name: cloud-init-replacement.service enabled: true contents: | [Unit] Description=Cloud initialization tasks After=network-online.target Wants=network-online.target ConditionFirstBoot=yes [Service] Type=oneshot ExecStart=/bin/sh -c '/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id > /var/lib/instance-id' ExecStart=/usr/bin/echo "Cloud initialization complete" [Install] WantedBy=multi-user.targetButane 設定を Ignition JSON ファイルに変換します。
$ butane --strict cloud-config.bu > cloud-config.ignIgnition 設定をユーザーデータとしてインスタンスをデプロイします。
AWS EC2 の場合は、以下を実行します。
$ aws ec2 run-instances --image-id <ami_id> --instance-type <instance_type> --user-data file://cloud-config.ign --key-name <key_pair_name>Azure の場合は、以下を実行します。
$ az vm create --resource-group <resource_group> --name <vm_name> --image <ignition_image> --custom-data cloud-config.ign --admin-username coreGoogle Cloud の場合は、以下を実行します。
$ gcloud compute instances create <instance_name> --image <ignition_image> --metadata-from-file user-data=cloud-config.ign --machine-type <machine_type>QEMU/KVM のテストを行うには、以下を実行します。
$ qemu-system-x86_64 \ -machine q35 \ -cpu host \ -enable-kvm \ -m 4096 \ -fw_cfg name=opt/com.coreos/config,file=<path_to_config_file> \ -drive file=bootc-image.qcow2,format=qcow2 \ -netdev user,id=net0,hostfwd=tcp::2222-:22 \ -device virtio-net-pci,netdev=net0 \ -append "ignition.platform.id=qemu ignition.firstboot"
検証
インスタンスに接続します。
$ ssh core@<instance_ip>クラウド環境変数が正しく設定されていることを確認します。
$ source /etc/profile.d/cloud-env.sh$ echo ${CLOUD_PROVIDER}Ignition の実行ステータスを確認します。
$ journalctl -t ignition --no-pagerインスタンス ID が取得されたことを確認します (AWS の例):
$ cat /var/lib/instance-id