第4章 cloud-init の設定
cloud-init を使用すると、さまざまな設定タスクを実行できます。cloud-init 設定では、cloud.cfg ファイルおよび cloud.cfg.d ディレクトリーへのディレクティブの追加を必要とすることがあります。あるいは、特定のデータソースでは、ユーザーデータファイルやメタデータファイルなどのファイルにディレクティブを追加する必要がある場合があります。データソースでは、ディレクティブの HTTP サーバーへのアップロードが必要な場合があります。データソースの要件を確認し、それに応じてディレクティブを追加します。
4.1. NoCloud データソースの cloud-init を含む仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init を含む新しい仮想マシン (VM) を作成するには、meta-data ファイルと user-data ファイルを作成します。
-
meta-dataファイルには、インスタンスの詳細が含まれます。 -
user-dataファイルには、ユーザーを作成し、アクセスを付与するための情報が含まれます。
これらのファイルを新しい ISO イメージに追加し、KVM ゲストイメージから作成した新しい仮想マシンに ISO ファイルをアタッチします。このシナリオでは、データソースは NoCloud です。
手順
cloudinitisoという名前のディレクトリーを作成し、作業ディレクトリーとして設定します。$ mkdir cloudinitiso $ cd cloudinitisometa-dataファイルを作成し、次の情報を追加します。instance-id: citest local-hostname: citest-1user-dataファイルを作成し、次の情報を追加します。#cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com注記user-dataファイルの最後の行は、SSH 公開鍵を参照します。~/.ssh/id_rsa.pubで SSH 公開鍵を検索します。このサンプル手順を行う場合は、行を変更して公開鍵の 1 つを含めます。genisoimageコマンドを使用して、user-dataおよびmeta-dataを含む ISO イメージを作成します。# genisoimage -output ciiso.iso -volid cidata -joliet -rock user-data meta-data I: -input-charset not specified, using utf-8 (detected in locale settings) Total translation table size: 0 Total rockridge attributes bytes: 331 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 0 183 extents written (0 MB)-
Red Hat カスタマーポータルから、
/var/lib/libvirt/imagesディレクトリーに KVM ゲストイメージをダウンロードします。 virt-installユーティリティーを使用して KVM ゲストイメージから新しい仮想マシンを作成し、ダウンロードしたイメージを既存のイメージにアタッチします。# virt-install \ --memory 4096 \ --vcpus 4 \ --name mytestcivm \ --disk /var/lib/libvirt/images/rhel-8.1-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \ --disk /home/sample/cloudinitiso/ciiso.iso,device=cdrom \ --os-type Linux \ --os-variant rhel9.0 \ --virt-type kvm \ --graphics none \ --importユーザー名
cloud-userとパスワードcilogonを使用してイメージにログオンします。citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
検証
cloud-initステータスをチェックして、ユーティリティーが定義されたタスクを完了したことを確認します。[cloud-user@citest-1 instance]$ cloud-init status status: donecloud-initユーティリティーは、実行時に/var/lib/cloudの下のcloud-initディレクトリーレイアウトを作成し、指定したディレクティブに基づいて特定のディレクトリーコンテンツを更新または変更します。たとえば、データソースファイルをチェックして、データソースが
NoCloudであることを確認できます。$ cd /var/lib/cloud/instance $ cat datasource DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]cloud-initは、user-data を/var/lib/cloud/instance/user-data.txtにコピーします。$ cat user-data.txt #cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com
OpenStack の場合、インスタンスの作成と管理 には、cloud-init を使用してインスタンスを設定するための情報が含まれています。具体的な手順については、カスタマイズされたインスタンスの作成を 参照してください。