7.9. Cloud-Init を使用した仮想マシンの設定の自動化

Cloud-Init は、ホスト名、ネットワークインターフェイス、認可キーの設定など、仮想マシンの初期設定を自動化するツールです。これは、ネットワーク上での競合を回避するためにテンプレートに基づいてデプロイされた仮想マシンをプロビジョニングする場合に使用できます。

このツールを使用するには、まず cloud-init パッケージを仮想マシンにインストールする必要があります。インストールが完了すると、起動プロセス中に Cloud-Init サービスが開始し、設定の指示を検索します。次に、Run Once ウィンドウのオプションを使用して、これらの指示を 1 回だけ指定するか、または New Virtual MachineEdit Virtual Machine、および Edit Template ウィンドウのオプションを使用して、仮想マシンの起動ごとにこれらの指示を指定できます。

注記

あるいは、AnsiblePythonJava、または Ruby を使用して Cloud-Init を設定できます。

7.9.1. Cloud-Init ユースケースのシナリオ

Cloud-Init を使用して、さまざまなシナリオでの仮想マシンの設定を自動化することができます。以下に、一般的なシナリオをいくつか示します。

  • テンプレートに基づいて作成された仮想マシン

    Run Once ウィンドウの Initial Run セクションの Cloud-Init オプションを使用して、テンプレートに基づいて作成された仮想マシンを初期化できます。これにより、仮想マシンの初回起動時に仮想マシンをカスタマイズできます。

  • 仮想マシンテンプレート

    Edit Template ウィンドウの Initial Run タブの Use Cloud-Init/Sysprep オプションを使用して、そのテンプレートに基づいて作成された仮想マシンをカスタマイズするオプションを指定できます。

  • 仮想マシンプール

    New Pool ウィンドウの Initial Run タブの Use Cloud-Init/Sysprep オプションを使用して、その仮想マシンプールから取得する仮想マシンをカスタマイズするオプションを指定できます。これにより、その仮想マシンプールから仮想マシンを取得するたびに適用される標準設定のセットを指定できます。仮想マシンのベースとなるテンプレートに指定されたオプションを継承もしくは上書きするか、または仮想マシンプール自体のオプションを指定することができます。

7.9.2. Cloud-Init のインストール

この手順では、仮想マシンに Cloud-Init をインストールする方法を説明します。Cloud-Init をインストールしたら、この仮想マシンに基づいてテンプレートを作成できます。このテンプレートに基づいて作成された仮想マシンは、起動時のホスト名、タイムゾーン、root パスワード、認証キー、ネットワークインターフェイス、DNS サービスの設定など、Cloud-Init 機能を活用できます。

Cloud-Init のインストール

  1. 仮想マシンにログインします。
  2. リポジトリーを有効にします。

    • Red Hat Enterprise Linux 6 の場合:

      # subscription-manager repos \
          --enable=rhel-6-server-rpms \
          --enable=rhel-6-server-rh-common-rpms
    • Red Hat Enterprise Linux 7 の場合:

      # subscription-manager repos \
          --enable=rhel-7-server-rpms \
          --enable=rhel-7-server-rh-common-rpms
    • Red Hat Enterprise Linux 8 の場合は、通常、Cloud-Init をインストールするのにリポジトリーを有効にする必要はありません。Cloud-Init パッケージは AppStream リポジトリー rhel-8-for-x86_64-appstream-rpms の一部で、Red Hat Enterprise Linux 8 ではデフォルトで有効になっています。
  3. cloud-init パッケージおよび依存関係をインストールします。

    # dnf install cloud-init
    注記

    バージョン 8 よりも前のバージョンの Red Hat Enterprise Linux の場合は、dnf install cloud-init の代わりに yum install cloud-init コマンドを使用します。

7.9.3. Cloud-Init を使用したテンプレートの準備

cloud-init パッケージが Linux 仮想マシンにインストールされている限り、仮想マシンを使用して cloud-init が有効なテンプレートを作成できます。以下の手順で説明されているように、テンプレートに追加する標準設定のセットを指定します。あるいは、Cloud-Init 設定のステップを省略し、このテンプレートに基づいて仮想マシンを作成する際に設定します。

注記

以下の手順では、テンプレートを準備する際に Cloud-Init を使用する方法の概要を説明しますが、同じ設定は New Virtual MachineEdit Template、および Run Once ウィンドウでも利用可能です。

Cloud-Init を使用したテンプレートの準備

  1. ComputeTemplates をクリックし、テンプレートを選択します。
  2. Edit をクリックします。
  3. Show Advanced Options をクリックします。
  4. Initial Run タブをクリックし、Use Cloud-Init/Sysprep チェックボックスを選択します。
  5. VM Hostname テキストフィールドにホスト名を入力します。
  6. Configure Time Zone チェックボックスを選択し、Time Zone ドロップダウンリストからタイムゾーンを選択します。
  7. Authentication セクションを展開します。

    • Use already configured password チェックボックスを選択して既存の認証情報を使用するか、そのチェックボックスの選択を解除して、Password および Verify Password のテキストフィールドに root パスワードを入力し、新しい root パスワードを指定します。
    • SSH Authorized Keys テキストエリアに、仮想マシンの認可ホストファイルに追加する SSH キーを入力します。
    • Regenerate SSH Keys チェックボックスを選択して、仮想マシンの SSH キーを再生成します。
  8. Networks セクションを展開します。

    • DNS Servers テキストフィールドに DNS サーバーを入力します。
    • DNS Search Domains テキストフィールドに DNS 検索ドメインを入力します。
    • In-guest Network Interface チェックボックスを選択し、+ Add new および - Remove selected ボタンを使用して、仮想マシンにネットワークインターフェイスを追加または削除します。

      重要

      適切なネットワークインターフェイス名と番号を指定する必要があります (例:eth0eno3enp0s)。そうしないと、仮想マシンのインターフェイス接続は起動しますが、cloud-init ネットワーク設定が定義されません。

  9. Custom Script セクションを展開し、Custom Scriptテキストエリアにカスタムスクリプトを入力します。
  10. OK をクリックします。

このテンプレートを使用して新規仮想マシンをプロビジョニングできるようになりました。

7.9.4. Cloud-Init を使用した仮想マシンの初期化

Cloud-Init を使用して、Linux 仮想マシンの初期設定を自動化します。Cloud-Init フィールドを使用して、仮想マシンのホスト名、タイムゾーン、root パスワード、認証キー、ネットワークインターフェイス、および DNS サービスを設定できます。起動時に実行するカスタムスクリプトを YAML 形式で指定することもできます。カスタムスクリプトにより、Cloud-Init がサポートしているが、Cloud-Init フィールドでは利用できない追加の Cloud-Init 設定が可能です。カスタムスクリプトの例の詳細は、クラウド設定の例 を参照してください。

Cloud-Init を使用した仮想マシンの初期化

この手順では、Cloud-Init の設定セットで仮想マシンを起動します。仮想マシンのベースとなるテンプレートに該当する設定が含まれている場合は、設定を確認し、必要に応じて変更を行い、OK をクリックして仮想マシンを起動します。

  1. ComputeVirtual Machines をクリックし、仮想マシンを選択します。
  2. Run ドロップダウンボタンをクリックして、Run Once を選択します。
  3. Initial Run セクションを展開し、Cloud-Init チェックボックスを選択します。
  4. VM Hostname テキストフィールドにホスト名を入力します。
  5. Configure Time Zone チェックボックスを選択し、Time Zone ドロップダウンメニューからタイムゾーンを選択します。
  6. Use already configured password チェックボックスを選択して既存の認証情報を使用するか、そのチェックボックスの選択を解除して、Password および Verify Password のテキストフィールドに root パスワードを入力し、新しい root パスワードを指定します。
  7. SSH Authorized Keys テキストエリアに、仮想マシンの認可ホストファイルに追加する SSH キーを入力します。
  8. Regenerate SSH Keys チェックボックスを選択して、仮想マシンの SSH キーを再生成します。
  9. DNS Servers テキストフィールドに DNS サーバーを入力します。
  10. DNS Search Domains テキストフィールドに DNS 検索ドメインを入力します。
  11. Network チェックボックスを選択し、+ ボタンおよび - ボタンを使用して、仮想マシンにネットワークインターフェイスを追加または削除します。

    重要

    適切なネットワークインターフェイス名と番号を指定する必要があります (例:eth0eno3enp0s)。そうしないと、仮想マシンのインターフェイス接続は起動しますが、そこにcloud-init ネットワーク設定が定義されません。

  12. Custom Scriptテキストエリアにカスタムスクリプトを入力します。スクリプトで指定した値が適切であることを確認します。そうしないと、アクションは失敗します。
  13. OK をクリックします。
注記

仮想マシンに Cloud-Init がインストールされているかどうかを確認するには、仮想マシンを選択し、Applications サブタブをクリックします。ゲストエージェントがインストールされている場合にのみ表示されます。