第11章 カスタムインスタンスの作成


クラウドユーザーは、インスタンスがブート時に実行するシェルスクリプトなど、インスタンスを起動する際に使用する追加データを指定することができます。クラウドユーザーは、以下の手段を使用してデータをインスタンスに渡すことができます。

ユーザーデータ
cloud-init が実行するインスタンスの起動コマンドに指示を追加するのに使用します。
インスタンスメタデータ
インスタンスの作成または更新時に指定することができるキー/値のペアのリスト

コンフィグドライブまたはメタデータサービスを使用して、インスタンスに渡される追加データにアクセスすることができます。

コンフィグドライブ
インスタンスのブート時に、インスタンスにコンフィグドライブを接続することができます。コンフィグドライブは読み取り専用ドライブとしてインスタンスに提示されます。インスタンスはこのドライブをマウントして、そこからファイルを読み取ることができます。このコンフィグドライブを cloud-init の情報源として使用できます。コンフィグドライブは、cloud-init (サーバーのブートストラップ用) と組み合わせる場合や、インスタンスに大容量のファイルを渡す場合に有用です。たとえば、cloud-init を設定して、インスタンスの初回ブート中にコンフィグドライブを自動的にマウントして設定スクリプトを実行することができます。コンフィグドライブは config-2 のボリュームラベルで作成され、インスタンスのブート時にインスタンスにアタッチされます。コンフィグドライブに渡される追加ファイルの内容は、コンフィグドライブの openstack/{version}/ ディレクトリー内の user_data ファイルに追加されます。cloud-init はこのファイルからユーザーデータを取得します。
メタデータサービス
インスタンス固有のデータを取得するための REST API を提供します。インスタンスは、169.254.169.254 または fe80::a9fe:a9fe からこのサービスにアクセスします。

cloud-init は、コンフィグドライブとメタデータサービスの両方を使用して、インスタンスのカスタマイズ用の追加データを利用することができます。cloud-init パッケージは、さまざまなデータ入力形式をサポートします。シェルスクリプトおよび cloud-config 形式が、最も一般的な入力形式です。

  • シェルスクリプト: データ宣言は #! または Content-Type: text/x-shellscript で始まります。シェルスクリプトは、ブートプロセスの最後に呼び出されます。
  • cloud-config format: データ宣言は #cloud-config または Content-Type: text/cloud-config で始まります。cloud-config ファイルが cloud-init により解析および実行されるためには、有効な YAML でなければなりません。
注記

cloud-init では、インスタンスに渡されるユーザーデータの最大サイズは 16384 バイトです。サイズの制限を変更することはできないため、サイズの制限を超えるデータが必要な場合は、gzip 圧縮を使用します。

ベンダー固有のデータ

RHOSP 管理者は、インスタンスの作成時にデータを渡すこともできます。クラウドユーザーは、このデータ (例: インスタンスを Active Directory に登録するための暗号化トークン) にアクセスすることができない場合があります。

RHOSP 管理者は、ベンダーデータ機能を使用してデータをインスタンスに渡します。ベンダーデータの設定は読み取り専用で、以下のファイルのいずれかにあります。

  • /openstack/{version}/vendor_data.json
  • /openstack/{version}/vendor_data2.json

メタデータサービスを使用して、またはインスタンス上のコンフィグドライブから、これらのファイルを確認することができます。メタデータサービスを使用してファイルにアクセスするには、http://169.254.169.254/openstack/{version}/vendor_data.json または http://169.254.169.254/openstack/{version}/vendor_data2.json のいずれかに対して GET リクエストを行います。

11.1. ユーザーデータを使用したインスタンスのカスタマイズ

ユーザーデータを使用して、インスタンスの起動コマンドに指示を追加することができます。cloud-init はこれらのコマンドを実行して、ブートプロセスの最後のステップとしてインスタンスをカスタマイズします。

手順

  1. cloud-init への指示が含まれるファイルを作成します。たとえば、インスタンス上に Web サーバーをインストールして有効にする bash スクリプトを作成します。

    $ vim /home/scripts/install_httpd
    #!/bin/bash
    
    yum -y install httpd python-psycopg2
    systemctl enable httpd --now
  2. --user-data オプションを使用してインスタンスを起動し、bash スクリプトを渡します。

    $ openstack server create \
    --image rhel8 \
    --flavor default \
    --nic net-id=web-server-network \
    --security-group default \
    --key-name web-server-keypair \
    --user-data /home/scripts/install_httpd \
    --wait web-server-instance
  3. インスタンスの状態がアクティブになったら、Floating IP アドレスを割り当てます。

    $ openstack floating ip create web-server-network
    $ openstack server add floating ip web-server-instance 172.25.250.123
  4. SSH でインスタンスにログインします。

    $ ssh -i ~/.ssh/web-server-keypair cloud-user@172.25.250.123
  5. カスタマイズが正常に実行されたことを確認します。たとえば、Web サーバーがインストールされ有効になっていることを確認するには、以下のコマンドを入力します。

    $ curl http://localhost | grep Test
    <title>Test Page for the Apache HTTP Server on Red Hat Enterprise Linux</title>
    <h1>Red Hat Enterprise Linux <strong>Test Page</strong></h1>
  6. /var/log/cloud-init.log が実行したかどうかなど、関連するメッセージの有無を cloud-init ファイルで確認します。

    $ sudo less /var/log/cloud-init.log
    ...output omitted...
    ...util.py[DEBUG]: Cloud-init v. 0.7.9 finished at Sat, 23 Jun 2018 02:26:02 +0000. Datasource DataSourceOpenStack [net,ver=2].  Up 21.25 seconds
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.