11.7. プロビジョニングでの VMware vSphere cloud-init と userdata テンプレートの使用

Cloud-inituserdata テンプレートと VMware を併用して、ユーザーデータを新規の仮想マシンに挿入し、VMware をさらにカスタマイズして、VMware がホストする仮想マシンを使用して Satellite にコールバックできるようになります。

同じ手順を使用して、Satellite 内で、ワークフローに変更をいくつか加えて、VMware コンピュートリソースを設定できます。

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 のインストール』の「ポートとファイアウォールの要件」 およびCapsule Server のインストール 』の「ポート とファイアウォールの 要件」を参照してください。

userdata および Cloud-init テンプレートとオペレーティングシステムの関連付け

  1. Satellite Web UI で、ホスト > オペレーティングシステム に移動し、プロビジョニングに使用するオペレーティングシステムを選択します。
  2. テンプレート タブをクリックします。
  3. Cloud-init テンプレート リストから Cloudinit デフォルト を選択します。
  4. User data テンプレート リストからUserData open-vm-tools を選択します。
  5. 送信 をクリックして変更を保存します。

cloud-init テンプレートを使用するためのイメージの準備

イメージを準備するには、先に仮想マシンに必要な設定を行ってからでないと、Satellite で使用するイメージとして保存できません。

プロビジョニングに cloud-init テンプレートを使用するには、cloud-init をインストールして、有効化し、Satellite Server に対してコールバックを行うように、仮想マシンを設定する必要があります。

セキュリティー上の理由から CA 証明書をインストールして、全通信に HTTPS を使用するようにする必要があります。この手順には、不要な情報がプロビジョニングに使用するイメージに転送されないように、仮想マシンをクリーンアップする手順が含まれます。

cloud-init が含まれるイメージの場合は、cloud-init がデフォルトで無効になっているので、cloud-init が Satellite と通信できるように以下の手順を実行する必要があります。

  1. イメージの作成に使用する仮想マシンで、cloud-initopen-vm-tools および perl をインストールします。

    # yum -y install cloud-init open-vm-tools perl
  2. cloud-init の設定ファイルを作成します。

    # vi /etc/cloud/cloud.cfg.d/example_cloud-init_config.cfg
  3. example_cloud_init_config.cfg ファイルに以下の情報を追加します。

    datasource_list: [NoCloud]
    datasource:
      NoCloud:
        seedfrom: https://satellite.example.com/userdata/
    EOF
  4. イメージの CA 証明書を有効にします。

    # update-ca-trust enable
  5. Satellite Server から katello-server-ca.crt ファイルをダウンロードします。

    # wget -O /etc/pki/ca-trust/source/anchors/cloud-init-ca.crt http://satellite.example.com/pub/katello-server-ca.crt
  6. 証明書の記録を更新するには、次のコマンドを入力します。

    # update-ca-trust extract
  7. 次のコマンドを使用して、イメージを消去します。

    # systemctl stop rsyslog
    # systemctl stop auditd
    # package-cleanup --oldkernels --count=1
    # yum clean all
  8. ログスペースの削減、古いログの削除、ログの省略には、以下のコマンドを使用します。

    # 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/grubby
  9. udev ハードウェアルールを削除します。

    # rm -f /etc/udev/rules.d/70*
  10. ifcfg スクリプトから uuid を削除します。

    # cat > /etc/sysconfig/network-scripts/ifcfg-ens192 <<EOM
    DEVICE=ens192
    ONBOOT=yes
    EOM
  11. SSH ホストキーを削除します。

    # rm -f /etc/ssh/SSH_keys
  12. root ユーザーの Shell 履歴を削除します。

    # rm -f ~root/.bash_history
    # unset HISTFILE
  13. root ユーザーの SSH 履歴を削除します。

    # rm -rf ~root/.ssh/known_hosts

この仮想マシンからイメージを作成できるようになりました。

「Satellite Server への VMware vSphere イメージの追加」 セクションを使用して、イメージを Satellite に追加できます。

ユーザーデータテンプレートを転送するための Capsule の設定

Capsuleテンプレート機能を使用して Satellite をデプロイする場合に、X-Forwarded-For HTTP ヘッダーで転送されたホストの IP アドレスを認識して正しいテンプレートペイロードを提供するように Satellite を設定する必要があります。

セキュリティー上の理由から Satellite はローカルホストからのみ、この HTTP ヘッダーを認識します。個別の Capsule ごとに、ホストの IP アドレスを認識するための正規表現を設定する必要があります。Web UI で 管理 > 設定 > プロビジョニング に移動して、リモートアドレス の設定を変更します。CLI では、以下のコマンドを入力して設定できます。

# hammer settings set --name remote_addr --value '(localhost(4|6|4to6)?|192.168.122.(1|2|3))'