7.8. Cloud-Init を使用した仮想マシンの設定の自動化
Cloud-Init は、ホスト名、ネットワークインターフェース、承認キーなどの仮想マシンの初期設定を自動化するためのツールです。テンプレートをベースにデプロイされた仮想マシンをプロビジョニングする際に、ネットワーク上における競合を回避するために使用することができます。
このツールを使用するには、まず仮想マシンに cloud-init
パッケージをインストールする必要があります。インストールの完了後には、ブートプロセス中に Cloud-Init サービスが起動し、設定の指示を検索するようになります。次に 1 回実行 ウィンドウのオプションを使用してそれらの指示を 1 回のみ指定するか、新規仮想マシン、仮想マシンの編集、テンプレートの編集 ウィンドウのオプションで、仮想マシンが起動するたびにそれらの指示を指定することができます。
7.8.1. Cloud-Init のユースケースシナリオ
Cloud-Init を使用すると、さまざまなシナリオの仮想マシン設定を自動化することができます。一般的なシナリオには以下のような例があります。
テンプレートをベースとして作成された仮想マシン
1 回実行 ウィンドウの 初期起動 のセクションの Clund-Init オプションを使用して、テンプレートをベースに作成された仮想マシンの設定を初期化することができます。これにより、仮想マシンの初回起動時の設定をカスタマイズすることができます。
仮想マシンのテンプレート
テンプレートの編集 ウィンドウの 初期起動 タブで Cloud-Init/Sysprep を使用 のオプションを使用して、そのテンプレートをベースに作成される仮想マシンをカスタマイズするオプションを指定することができます。
仮想マシンプール
新規プール ウィンドウの 初期起動 タブで Cloud-Init/Sysprep を使用 オプションを使用して、仮想マシンプールから取得する仮想マシンをカスタマイズするオプションを指定することができます。これにより、仮想マシンプールから仮想マシンが取得される度に適用される標準の設定項目一式を指定することができます。仮想マシンのベースとなるテンプレートに指定されているオプションを継承または上書きしたり、仮想マシンプール自体にオプションを指定したりすることができます。
7.8.2. Cloud-Init のインストール
以下の手順は、仮想マシンに Cloud-Init をインストールする方法を説明します。Cloud-Init がインストールされたら、この仮想マシンをベースにしたテンプレートを作成することができます。このテンプレートで作成された仮想マシンは、起動時のホスト名、タイムゾーン、root パスワード、認証鍵、ネットワークインターフェース、DNS サービスの設定など、Cloud-Init の機能を活用することができます。
Cloud-Init のインストール
- 仮想マシンにログインします。
必要なリポジトリーを有効にします。
Red Hat Enterprise Linux 6 の場合:
# subscription-manager repos --enable=rhel-6-server-rpms # subscription-manager repos --enable=rhel-6-server-rh-common-rpms
Red Hat Enterprise Linux 7 の場合:
# subscription-manager repos --enable=rhel-7-server-rpms # subscription-manager repos --enable=rhel-7-server-rh-common-rpms
cloud-init
パッケージと依存関係をインストールします。# yum install cloud-init
7.8.3. Cloud-Init を使用したテンプレートの準備
cloud-init
パッケージが Linux 仮想マシンにインストールされている限りは、仮想マシンにより Cloud-Init が有効化されたテンプレートを作成することができます。以下の手順に記載されているように、テンプレートに含める標準の設定項目一式を指定するか、Cloud-Init の設定ステップを省略して、このテンプレートをベースにして仮想マシンを作成する際に設定します。
以下の手順では、テンプレートの作成時における Cloud-Init の使用方法について説明していますが、同じ設定を 新規仮想マシン、テンプレートの編集、および 1 回実行 ウィンドウでも使用できます。
Cloud-Init を使用したテンプレートの準備
- → をクリックして、テンプレートを選択します。
- をクリックします。
- をクリックします。
- 初期起動 タブをクリックし Cloud-Init/Sysprep を使用 のチェックボックスを選択します。
- 仮想マシンのホスト名 のテキストフィールドにホスト名を入力します。
- タイムゾーンを設定 のチェックボックスを選択し、タイムゾーン のドロップダウンリストからタイムゾーンを選択します。
認証 のセクションを展開します。
- 設定済みのパスワードを使用 のチェックボックスを選択して既存の認証情報を使用するか、チェックを外して パスワード と パスワードを確認 のテキストフィールドに root のパスワードを入力して新しい root パスワードを指定します。
- SSH 認証キー のテキストフィールドに、仮想マシン上の承認済みホストのファイルに追加する SSH キーを入力します。
- SSH キーを再生成 のチェックボックスを選択して仮想マシン用の SSH キーを再生成します。
ネットワーク のセクションを展開します。
- DNS サーバー のテキストフィールドに任意の DNS サーバーを入力します。
- DNS 検索ドメイン のテキストフィールドに任意の DNS 検索ドメインを入力します。
ゲスト内のネットワークインターフェース のチェックボックスを選択し、+ 新規追加 および - 削除 のボタンを使用して仮想マシンにネットワークインターフェースを追加または削除します。
重要適切なネットワークインターフェース名および番号を指定する必要があります (例:
eth0
、eno3
、enp0s
)。適切に指定しないと、仮想マシンのインターフェース接続は有効になりますが、cloud-init ネットワーク設定が定義されません。
- カスタムスクリプト のセクションを展開し、カスタムスクリプト のテキストフィールドに任意のカスタムスクリプトを入力します。
- をクリックします。
このテンプレートを使用して、新規仮想マシンをプロビジョニングできるようになりました。
7.8.4. Cloud-Init を使用した仮想マシンの設定の初期化
cloud-init を使用して、Linux 仮想マシンの初期設定を自動化します。Cloud-Init フィールドを使用して、仮想マシンのホスト名、タイムゾーン、root パスワード、認証鍵、ネットワークインターフェース、DSN サービスを設定することができます。また、カスタムスクリプト (YAML 形式のスクリプト) を指定して、起動時に実行することもできます。このカスタムスクリプトにより、Cloud-Init でサポートされるが、Cloud-Init フィールドに存在しない追加の Cloud-Init 設定を指定することができます。カスタムスクリプトに関する詳しい情報は、Cloud config examples を参照してください。
Cloud-Init を使用した仮想マシンの設定の初期化
以下の手順では、一連の Cloud-Init 設定により仮想マシンを起動します。仮想マシンがベースにするテンプレートに関連の設定が含まれる場合には、設定を見直して随時変更を加え、
をクリックして仮想マシンを起動します。- → をクリックして仮想マシンを選択します。
- 1 回実行 を選択します。 のドロップダウンボタンをクリックし、
- 初期起動 セクションを展開し、Cloud-Init を使用 チェックボックスを選択します。
- 仮想マシンのホスト名 のテキストフィールドにホスト名を入力します。
- タイムゾーンを設定 のチェックボックスを選択し、タイムゾーン のドロップダウンメニューからタイムゾーンを選択します。
- 設定済みのパスワードを使用 のチェックボックスを選択して既存の認証情報を使用するか、チェックを外して パスワード と パスワードを確認 のテキストフィールドに root のパスワードを入力して新しい root パスワードを指定します。
- SSH 認証キー のテキストフィールドに、仮想マシン上の承認済みホストのファイルに追加する SSH キーを入力します。
- SSH キーを再生成 のチェックボックスを選択して仮想マシン用の SSH キーを再生成します。
- DNS サーバー のテキストフィールドに任意の DNS サーバーを入力します。
- DNS 検索ドメイン のテキストフィールドに任意の DNS 検索ドメインを入力します。
ゲスト内のネットワークインターフェース のチェックボックスを選択し、+ および - のボタンを使用して仮想マシンにネットワークインターフェースを追加または削除します。
重要適切なネットワークインターフェース名および番号を指定する必要があります (例:
eth0
、eno3
、enp0s
)。適切に指定しないと、仮想マシンのインターフェース接続は有効になりますが、その cloud-init ネットワーク設定が定義されません。- カスタムスクリプト のテキストフィールドにカスタムスクリプトを入力します。スクリプトで指定した値が適切であることを確認します。適切でない場合にはアクションが失敗します。
- をクリックします。
仮想マシンに Cloud-Init がインストールされているかどうかを確認するには、仮想マシンを選択して、アプリケーション のサブタブをクリックします。ゲストエージェントがインストールされている場合にのみ表示されます。