第12章 Amazon EC2 でのクラウドインスタンスのプロビジョニング

Amazon Elastic Compute Cloud (Amazon EC2) は、パブリッククラウドコンピュートリソースを提供する Web サービスです。Red Hat Satellite 6 を使用すると、Amazon EC2 の パブリック API で新規クラウドインスタンスを作成し、それらの電源管理の状態を制御することができます。本章の手順を使用して、接続を ACME の Amazon EC2 アカウントに追加し、クラウドインスタンスをプロビジョニングします。

12.1. Amazon EC2 プロビジョニングの要件

Amazon EC2 プロビジョニングの要件には以下が含まれます。

  • Red Hat Enterprise Linux 7 の同期済みのコンテンツリポジトリー。詳細は、『コンテンツ管理ガイド』の「Red Hat リポジトリーの同期」を参照してください。
  • EC2 環境でネットワークを管理する Capsule Server。ホストと Capsule Server 間のネットワークのセキュリティーを確保するために、Virtual Private Cloud (VPC) を使用します。
  • イメージベースのプロビジョニング用の Amazon Machine Image (AMI)
  • ホスト登録用のアクティベーションキー。詳細は、『コンテンツ管理ガイド』の「アクティベーションキーの作成」を参照してください。

12.2. Satellite Server への Amazon EC2 接続の追加

この手順を使用して、Satellite Server のコンピュートリソースに Amazon EC2 接続を追加します。

時間設定および Amazon Web Services

Amazon Web Services は、認証プロセスの一環として時間設定を使用します。Satellite Server の時間が正常に同期されていること、さらに、ntpd または chronyd などの NTP サービスが Satellite Server で適切に実行されていることを確認します。Amazon Web Services に正確な時間を指定できないと、認証が失敗する可能性があります。時間の同期に関する詳細は、『インストールガイド』の「chronyd とのシステムクロックの同期」を参照してください。

手順

Amazon EC2 接続を追加するには、以下の手順を実行します。

  1. Satellite Web UI で インフラストラクチャー > コンピュートリソース に移動して、コンピュートリソースのウィンドウで コンピュートリソースの作成 をクリックします。
  2. 名前 フィールドには、Amazon EC2 コンピュートリソースを識別するための名前を入力します。
  3. プロバイダー の一覧から EC2 を選択します。
  4. 説明 フィールドには、今後使用する時にリソースを特定できるように名前を入力します。
  5. オプション: HTTP プロキシー リストから、外部 API サービスに接続する HTTP プロキシーを選択します。このリストからプロキシーを選択する前に、HTTP プロキシーを追加する必要があります。詳細は、『オンラインネットワークからの Satellite Server のインストール』の「HTTP プロキシーでの Satellite Server の設定」を参照してください。
  6. アクセスキーシークレットキー フィールドで、Amazon EC2 アカウントのアクセスキーを入力します。詳細情報は、Amazon ドキュメントの Web サイトで 「Managing Access Keys for your AWS Account」を参照してください。
  7. オプション: リージョンのロード (Load Regions) ボタンをクリックして リージョン リストにデータを入力します。
  8. リージョン リストから、使用する Amazon EC2 リージョンとデータセンターを選択します。
  9. ロケーション タブをクリックして、使用するロケーションが選択されていることを確認します。あるいは、別のロケーションを追加します。
  10. 組織 タブをクリックして、使用する組織が選択されていることを確認します。あるいは、別のロケーションを追加します。
  11. 送信 をクリックして Amazon EC2 接続を保存します。
  12. 新規コンピュートリソースを選択して、SSH キー タブをクリックし、ダウンロード をクリックして、SSH 認証に使用するために SSH キーのコピーを保存します。BZ1793138 が解決するまで、Amazon EC2 コンピュートリソースのコピーの作成直後に SSH キーのコピーをダウンロードします。後で SSH キーが必要な場合には、「SSH での Amazon EC2 インスタンスへの接続」の手順を実行してください。

CLI をご利用の場合

hammer compute-resource create コマンドで接続を作成します。--user および --password オプションを使用して、アクセスキーとシークレットキーをそれぞれ追加します。

# hammer compute-resource create --name "My_EC2" --provider "EC2" \
--description "Amazon EC2 Public Cloud` --user "user_name" \
--password "secret_key" --region "us-east-1" --locations "New York" \
--organizations "My_Organization"

12.3. コンピュートリソースと HTTP プロキシーとの連携

使用する EC2 コンピュートリソースで、Satellite との通信に特定の HTTP プロキシーが必要となる場合があります。Satellite では、HTTP プロキシーを作成して、その HTTP プロキシーをお使いの EC2 コンピュートリソースに割り当てことができます。

ただし、管理 > 設定 で Sattelite の HTTP プロキシーを設定してから、お使いのコンピュートリソース用に別の HTTP プロキシーを追加した場合には、 管理 > 設定 で定義した HTTP プロキシーが優先されます。

手順

  1. Satellite Web UI で、インフラストラクチャー > HTTP プロキシー に移動して、新規 HTTP プロキシー を選択します。
  2. 名前 フィールドで、HTTP プロキシーの名前を入力します。
  3. URL フィールドには、ポート番号を含めて HTTP プロキシーの URL を入力します。
  4. オプション: HTTP プロキシーに認証が必要な場合には、認証に使用するユーザーとパスワードを入力します。
  5. テスト接続 をクリックして Satellite から HTTP プロキシーに対する接続できることを確認します。
  6. ロケーション タブで、ロケーションを追加します。
  7. 組織 タブをクリックして、組織を追加します。
  8. 送信 をクリックします。

12.4. Satellite Server への Amazon EC2 イメージの追加

Amazon EC2 はイメージベースのプロビジョニングを使用して新規ホストを作成します。イメージの詳細を Satellite Server に追加する必要があります。これにはアクセスの詳細およびイメージの場所が含まれます。

手順

  1. Satellite Web UI で、インフラストラクチャー > コンピュートリソース に移動し、Amazon EC2 接続を選択します。
  2. イメージ タブをクリックして、新規イメージ をクリックします。
  3. 名前 フィールドには、今後使用する時にイメージを特定できるように名前を入力します。
  4. オペレーティングシステム リストから、追加するイメージに対応するオペレーティングシステムを選択します。
  5. アーキテクチャー リストから、オペレーティングシステムのアーキテクチャーを選択します。
  6. ユーザー名 フィールドには、イメージにアクセスするための SSH ユーザー名を入力します。通常、これは root ユーザーになります。
  7. イメージ ID フィールドには、イメージの Amazon Machine Image (AMI) ID を入力します。通常、この形式は ami-xxxxxxxx になります。
  8. オプション: イメージが cloud-init データなどのユーザーデータ入力をサポートする場合には、ユーザーデータ チェックボックスを選択します。ユーザーデータを有効にすると、Finish スクリプトは自動的に無効になります。これは、逆の場合にも当てはまります。Finish スクリプトを有効にすると、ユーザーデータが無効になります。
  9. オプション: IAM ロール リストから、イメージの作成に使用する Amazon のセキュリティーロールを入力します。
  10. 送信 をクリックしてイメージの詳細を保存します。

CLI をご利用の場合

hammer compute-resource image create コマンドでイメージを作成します。--uuid フィールドを使用して Amazon EC2 サーバーのイメージの場所の完全パスを保存します。

# hammer compute-resource image create --name "Test Amazon EC2 Image" \
--operatingsystem "RedHat 7.2" --architecture "x86_64" --username root \
--user-data true --uuid "ami-my_ami_id" --compute-resource "My_EC2"

12.5. Amazon EC2 の詳細のコンピュートプロファイルへの追加

Amazon EC2 のインストールのハードウェア設定をコンピュートプロファイルに追加します。

手順

ハードウェア設定を追加するには、以下の手順を行います。

  1. Satellite Web UI で インフラストラクチャー > コンピュートプロファイル に移動して、プロファイルの名前をクリックして EC2 接続の名前をクリックします。
  2. フレーバー リストから、ホストに使用する EC2 のハードウェアのプロファイルを選択します。
  3. イメージ リストから、イメージベースのプロビジョニングに使用するイメージを選択します。
  4. 利用可能ゾーン (Availability zone) リストから、EC2 リージョン内で使用するターゲットクラスターを選択します。
  5. サブネット リストから EC2 インスタンスのサブネットを追加します。新規ホストのプロビジョニング用の VPC がある場合は、そのサブネットを使用します。
  6. セキュリティーグループ リストから、ホストに適用するポートおよび IP アドレスのクラウドベースのアクセスルールを定義します。
  7. 管理 IP リストから、パブリック IP または プライベート IP のいずれかを選択します。
  8. 送信 をクリックしてコンピュートプロファイルを保存します。

CLI をご利用の場合

コンピュートプロファイルの CLI コマンドは、Red Hat Satellite 6.6 ではまだ実装されていません。代わりに、ホストの作成プロセスで同じ設定を直接組み込むことができます。

12.6. Amazon EC2 でのイメージベースのホストの作成

Amazon EC2 プロビジョニングプロセスでは、Amazon EC2 サーバーで既存イメージから新規ホストを作成します。

手順

  1. Satellite Web UI で、ホスト > ホストの作成 に移動します。
  2. 名前 フィールドには、ホストの名前を入力します。
  3. ホストグループ リストから、ホストグループを選択して、新規ホストのフィールドの大部分にデータを投入することができます。
  4. デプロイ先 リストから、EC2 接続を選択します。
  5. インターフェース タブをクリックしてから、ホストのインターフェースの 編集 をクリックし、フィールドに値が投入されていることを確認します。Mac アドレス のフィールドは空白にします。Satellite Server は自動的に、ホストの最初のインターフェースの IP アドレスと Managed, Primary および Provision オプションを選択します。
  6. オペレーティングシステム タブをクリックして、全フィールドに値が投入されていることを確認します。
  7. 仮想マシン タブをクリックして、全フィールドに値が投入されていることを確認します。
  8. パラメーター タブをクリックして、存在するパラメーターでアクティベーションキーが提供されていることを確認します。提供されていない場合には、アクティベーションキーを追加します。
  9. 送信 をクリックして変更を保存します。

この新規ホストのエントリーは、Amazon EC2 サーバーが新規ボリュームのベースとして既存イメージを使用し、インスタンスを作成するようトリガーします。

CLI をご利用の場合

hammer host create コマンドでホストを作成し、--provision-method image を組み込んでイメージベースのプロビジョニングを使用します。

# hammer host create --name "ec2-test1" --organization "My_Organization" \
--location "New York" --hostgroup "Base" \
--compute-resource "My_EC2" --provision-method image \
--image "Test Amazon EC2 Image" --enabled true --managed true \
--interface "managed=true,primary=true,provision=true,subnet_id=EC2" \
--compute-attributes="flavor_id=m1.small,image_id=TestImage,availability_zones=us-east-1a,security_group_ids=Default,managed_ip=Public"

このコンピュートリソースのホスト作成パラメーターに関する情報は、付録B Hammer CLI の追加のホストパラメーターを参照してください。

12.7. SSH での Amazon EC2 インスタンスへの接続

SSH を使用して、Satellite Server から Amazon EC2 インスタンスにリモートで接続することができますが、Red Hat Satellite を介してプロビジョニングする Amazon Web Services EC2 インスタンスへ接続するには、Foreman データベースのコンピュートリソースに関連するプライベートキーに最初にアクセスし、このキーを使って認証する必要があります。

プライベートキーの場所を確認し、SSH を使用して Amazon EC2 サーバーへ接続するには、以下の手順を実行します。

  1. Satellite Server ベースシステムで、コンピュートリソースリストの場所を確認するには、以下のコマンドを入力し、使用するコンピュートリソースの ID を確認します。

    # hammer compute-resource list
  2. ユーザーを postgres ユーザーに切り替えます。

    # su - postgres
  3. postgres シェルを開始します。

    $ psql
  4. postgres ユーザーとして、Foreman データベースに接続します。

    # postgres=# \c foreman
  5. compute_resource_id = 3 である key_pairs から、シークレットを選択します。

    # select secret from key_pairs where compute_resource_id = 3; secret
  6. -----BEGIN RSA PRIVATE KEY----- 以降、-----END RSA PRIVATE KEY----- までキーをコピーします。
  7. .pem ファイルを作成し、ファイルにキーを貼り付けます。

    # vim Keyname.pem
  8. .pem ファイルへのアクセスを制限するよう確認します。

    # chmod 600 Keyname.pem
  9. Amazon EC2 インスタンスへ接続するには、以下のコマンドを入力します。

    ssh -i Keyname.pem   ec2-user@example.aws.com

12.8. Amazon Web Service EC2 環境向け finish テンプレートの設定

Amazon EC2 環境で Red Hat Enterprise Linux インスタンスをプロビジョニングする間、Red Hat Satellite の finish テンプレートを使用できます。

Amazon EC2 向けの finish テンプレートを設定するには、以下の手順を実行します。

  1. Red Hat Satellite 6 Web UI で、ホスト > プロビジョニングテンプレート に移動します。
  2. プロビジョニングテンプレート ページの検索フィールドに Kickstart default finish を入力し、検索 をクリックします。
  3. Kickstart default finish テンプレートで、クローン を選択します。
  4. 名前 フィールドに、テンプレート向けに独自の名前を入力します。
  5. テンプレートで、subscription-manager register コマンドおよび yum コマンド以外の root 権限が必要な各コマンドを sudo で指定します。または、以下の行を追加してテンプレート全体を sudo ユーザーとして実行します。

    sudo -s << EOS
    _Template_ _Body_
    EOS
  6. 関連付け タブをクリックし、使用する Red Hat Enterprise Linux オペレーティングシステムとテンプレートを関連付けします。
  7. ロケーション タブをクリックして、ホストがある場所を追加します。
  8. 組織 タブをクリックして、ホストが属する組織を追加します。
  9. 必要なカスタマイズまたは変更を追加したら、送信 をクリックしてテンプレート保存します。
  10. ホスト > オペレーティングシステム に移動し、ホスト用に必要なオペレーティングシステムを選択します。
  11. テンプレート タブをクリックし、finish テンプレート リストから、finish テンプレートを選択します。
  12. ホスト > ホストの作成 に移動し、作成するホストの情報を入力します。
  13. パラメーター タブをクリックし、ホストパラメーター に移動します。
  14. ホストパラメーター で、パラメーターの追加 ボタンを 3 回クリックし、新しいパラメーターフィールドを 3 つ追加します。以下の 3 つのパラメーターを追加します。

    1. 名前 フィールドで、remote_execution_ssh_keys を入力します。対応する フィールドで、cat /usr/share/foreman-proxy/.ssh/id_rsa_foreman_proxy.pub の出力を入力します。
    2. 名前 フィールドで、remote_execution_ssh_user を入力します。対応する フィールドで、ec2-user を入力します。
    3. 名前 フィールドで、activation_keys を入力します。対応する フィールドで、アクティベーションキーを入力します。
  15. 送信 をクリックして変更を保存します。

12.9. Amazon Web Services と Satellite に関する詳細情報

Amazon Web Services EC2 で Red Hat Gold Images を確認する方法の詳細は、How to Locate Red Hat Cloud Access Gold Images on AWS EC2 を参照してください。

Linux で Amazon Web Service Client をインストールして使用する方法の詳細は、Amazon Web Services ドキュメンテーションの Install the AWS Command Line Interface on Linux を参照してください。

Amazon Web Services における仮想マシンのインポートおよびエクスポートに関する詳細は、Amazon Web Services ドキュメンテーションの VM Import/Export を参照してください。