10.7. プロビジョニングでの VMware cloud-init と userdata テンプレートの使用
Cloud-init と Userdata テンプレートと VMware を併用して、ユーザーデータを新規の仮想マシンに挿入し、VMware をさらにカスタマイズして、VMware がホストする仮想マシンを使用して Satellite にコールバックできるようになります。
同じ手順を使用して、Satellite 内で、ワークフローに変更をいくつか加えて、VMware コンピュートリソースを設定できます。
図10.1 VMware cloud-init プロビジョニングの概要
Satellite で VMware プロビジョニング用にコンピュートリソースとイメージを設定する場合に、プロビジョニングのイベントは以下の順番に発生します。
- ユーザーが Satellite Web UI、API、または Hammer を使用して 1 つ以上の仮想マシンをプロビジョニングする。
- Satellite が VMware vCenter を呼び出して仮想マシンテンプレートのクローンを作成する。
-
Satellite
userdataのプロビジョニングテンプレートがカスタマイズされたアイデンティティー情報を追加する。 -
プロビジョニングが完了すると、
cloud-initプロビジョニングテンプレートが仮想マシンに対して、cloud-initの実行時に Capsule にコールバックするように指示を出す。 - VMware vCenter がこのテンプレートのクローンを仮想マシンに作成する。
- VMware vCenter がホスト名、IP、DNS など、仮想マシンの ID のカスタマイズを適用する。
-
仮想マシンがビルドされて、
cloud-initが呼びされ、ポート80で Satellite にコールバックしてから、443にリダイレクトする。
前提条件
-
必要な接続ができるように、ポートとファイアウォールが設定されている。
cloud-initサービスがあるので、仮想マシンを Capsule に登録している場合でさえも、仮想マシンは常に Satellite に対してコールバックします。詳細は、オンラインネットワーク環境での Satellite Server のインストール の ポートとファイアウォールの要件 および Capsule Server のインストール の ポートとファイアウォールの要件 を参照してください。 Satellite Server の代わりに Capsule Server を使用する場合は、Capsule Server が適切に設定されていることを確認してください。
重要Capsule Server を Satellite Server 上の信頼できるプロキシーのリストに追加することが重要です。
詳細は、Capsule Server のインストール の ホストの登録とプロビジョニングのための Capsule の設定 を参照してください。
以下の設定ファイルをバックアップします。
-
/etc/cloud/cloud.cfg.d/01_network.cfg -
/etc/cloud/cloud.cfg.d/10_datasource.cfg -
/etc/cloud/cloud.cfg
-
Userdata および Cloud-init テンプレートとオペレーティングシステムの関連付け
- Satellite Web UI で、Hosts > Templates > Provisioning Templates に移動します。
- CloudInit default テンプレートを検索し、その名前をクリックします。
- Association タブをクリックします。
- テンプレートを適用するすべてのオペレーティングシステムを選択し、Submit をクリックします。
- UserData open-vm-tools テンプレートに対して上記の手順を繰り返します。
- Hosts > Provisioning Setup > Operating Systems に移動します。
- プロビジョニングに使用するオペレーティングシステムを選択します。
- Templates タブをクリックします。
- Cloud-init template リストから CloudInit default を選択します。
- User data template リストから UserData open-vm-tools を選択します。
- Submit をクリックして変更を保存します。
cloud-init テンプレートを使用するためのイメージの準備
イメージを準備するには、先に仮想マシンに必要な設定を行ってからでないと、Satellite で使用するイメージとして保存できません。
プロビジョニングに cloud-init テンプレートを使用するには、cloud-init をインストールして、有効化し、Satellite Server に対してコールバックを行うように、仮想マシンを設定する必要があります。
セキュリティー上の理由から CA 証明書をインストールして、全通信に HTTPS を使用するようにする必要があります。この手順には、不要な情報がプロビジョニングに使用するイメージに転送されないように、仮想マシンをクリーンアップする手順が含まれます。
cloud-init が含まれるイメージの場合は、cloud-init がデフォルトで無効になっているので、cloud-init が Satellite と通信できるように以下の手順を実行する必要があります。
手順
イメージの作成に使用する仮想マシンに、必要なパッケージをインストールします。
# dnf install cloud-init open-vm-tools perl-interpreter perl-File-TempRed Hat Enterprise Linux 9 では、ネットワーク接続に
dbus-toolsパッケージも必要です。cloud-initによるネットワーク設定を無効にします。# cat << EOM > /etc/cloud/cloud.cfg.d/01_network.cfg network: config: disabled EOMSatellite からデータをフェッチするように
cloud-initを設定します。# cat << EOM > /etc/cloud/cloud.cfg.d/10_datasource.cfg datasource_list: [NoCloud] datasource: NoCloud: seedfrom: https://satellite.example.com/userdata/ EOMCapsule Server を通じてプロビジョニングする場合は、
seedfromオプションで Capsule Server の URL (https://capsule.example.com:9090/userdata/など) を使用します。cloud-initで使用するモジュールを設定します。# cat << EOM > /etc/cloud/cloud.cfg cloud_init_modules: - bootcmd - ssh cloud_config_modules: - runcmd cloud_final_modules: - scripts-per-once - scripts-per-boot - scripts-per-instance - scripts-user - phone-home system_info: distro: rhel paths: cloud_dir: /var/lib/cloud templates_dir: /etc/cloud/templates ssh_svcname: sshd EOMイメージの CA 証明書を有効にします。
# update-ca-trust enableSatellite Server から
katello-server-ca.crtファイルをダウンロードします。# wget -O /etc/pki/ca-trust/source/anchors/cloud-init-ca.crt https://satellite.example.com/pub/katello-server-ca.crtCapsule Server を通じてプロビジョニングする場合は、Capsule Server (
https://capsule.example.com/pub/katello-server-ca.crtなど) からファイルをダウンロードします。証明書のレコードを更新します。
# update-ca-trust extractrsyslogサービスおよびauditdサービスを停止します。# systemctl stop rsyslog # systemctl stop auditdイメージ上のパッケージを消去します。
Red Hat Enterprise Linux 8 以降の場合:
# dnf remove --oldinstallonlyRed Hat Enterprise Linux 7 以前の場合:
# package-cleanup --oldkernels --count=1 # dnf clean all
ログスペースの削減、古いログの削除、ログの切り詰めを実行します。
# logrotate -f /etc/logrotate.conf # rm -f /var/log/*-???????? /var/log/*.gz # rm -f /var/log/dmesg.old # rm -rf /var/log/anaconda # cat /dev/null > /var/log/audit/audit.log # cat /dev/null > /var/log/wtmp # cat /dev/null > /var/log/lastlog # cat /dev/null > /var/log/grubbyudevハードウェアルールを削除します。# rm -f /etc/udev/rules.d/70*既存のネットワーク設定に関連する
ifcfgスクリプトを削除します。# rm -f /etc/sysconfig/network-scripts/ifcfg-ens* # rm -f /etc/sysconfig/network-scripts/ifcfg-eth*SSH ホストキーを削除します。
# rm -f /etc/ssh/ssh_host_*root ユーザーの SSH 履歴を削除します。
# rm -rf ~root/.ssh/known_hostsroot ユーザーの shell 履歴を削除します。
# rm -f ~root/.bash_history # unset HISTFILE- この仮想マシンからイメージを作成します。
- イメージを Satellite に追加します。