Terraform プランを使用して Amazon Elastic Compute Cloud に Amazon Linux 2 インスタンスをデプロイし、それを Azure Arc に接続する

この記事では、提供された Terraform プランを使用してアマゾン ウェブ サービス (AWS) の Amazon Elastic Compute Cloud (EC2) Linux 2 インスタンスをデプロイし、それを Azure Arc 対応サーバー リソースとして接続するためのガイダンスを提供します。

前提条件

  1. Azure Arc Jumpstart リポジトリをクローンします。

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Azure CLI をインストールまたは更新します。 Azure CLI は、バージョン 2.7.0 以降を実行している必要があります。 現在インストールされているバージョンを確認するには、az --version を使用します。

  3. SSH キーを生成します (または既存の SSH キーを使用します)

  4. 無料の AWS アカウントを作成します

  5. 0.12 以降の Terraform をインストールします

  6. Azure サービス プリンシパルを作成します。

    AWS 仮想マシンを Azure Arc に接続するには、共同作成者ロールが割り当てられた Azure サービス プリンシパルが必要です。 これを作成するには、自分の Azure アカウントにサインインして、次のコマンドを実行します。

    az login
    az account set -s <Your Subscription ID>
    az ad sp create-for-rbac -n "<Unique SP Name>" --role contributor --scopes "/subscriptions/<Your Subscription ID>"
    

    次に例を示します。

    az ad sp create-for-rbac -n "http://AzureArcAWS" --role contributor --scopes "/subscriptions/00000000-0000-0000-0000-000000000000"
    

    出力は次のようになります。

    {
      "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "displayName": "http://AzureArcAWS",
      "password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "tenant": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    }
    

    Note

    サービス プリンシパルのスコープを、特定の Azure サブスクリプションとリソース グループに限定することを強くお勧めします。

AWS ID を作成する

Terraform で AWS にリソースを作成するには、適切なアクセス許可を持つ新しい AWS IAM ロールを作成し、それを使用するように Terraform を構成する必要があります。

  1. AWS マネジメント コンソールにサインインします

  2. サインインしたら、左上の [サービス] ドロップダウン リストを選択します。 [Security, Identity, and Compliance](セキュリティ、ID、およびコンプライアンス) で、 [IAM] を選択して、ID およびアクセス管理のページにアクセスします

    A screenshot of the AWS cloud console.

    A screenshot of an identity and access management AWS cloud console.

  3. 左側のメニューで [ユーザー] をクリックし、 [ユーザーを追加] を選択して新しい IAM ユーザーを作成します。

    A screenshot of how to create a new user in an AWS cloud console.

  4. [ユーザーを追加] ページで、ユーザーに Terraform という名前を指定し、 [プログラムによるアクセス] チェックボックスをオンにして、 [次のステップ] を選択します

    Second screenshot of how to create a new user in an AWS cloud console.

  5. 「アクセス許可の設定」ページで、「既存のポリシーを直接添付する」を選択し、スクリーンショットに示されているようにAmazonEC2FullAccessの横のチェックボックスをオンにしてから、「次のステップ」を選択します。

    Third screenshot of how to create a new user in an AWS cloud console.

  6. [タグ] ページで、azure-arc-demo というキーを持つタグを割り当て、 [次のステップ] を選択して [確認] ページに進みます。

    A screenshot of tags in an AWS cloud console.

  7. すべてが正しいことを確認し、 [ユーザーの作成] を選択します。

    Fourth screenshot of how to create a new user in an AWS cloud console.

  8. ユーザーが作成されると、ユーザーのアクセス キー ID とシークレット アクセス キーが表示されます。 これらの値をコピーしてから [閉じる] を選択します。 次のページでは、これがどのように表示されるかの例を確認できます。 これらのキーを取得すると、これらを Terraform で使用して AWS リソースを作成できるようになります。

    A screenshot of creating a user successfully in an AWS cloud console.

Terraform を構成する

Terraform プランを実行する前に、プランで使用される環境変数をエクスポートする必要があります。 これらの変数は、Azure サブスクリプションとテナント、Azure サービス プリンシパル、および先ほど作成した AWS IAM ユーザーとキーに基づいています。

  1. az account list コマンドを使用して、Azure サブスクリプション ID とテナント ID を取得します。

  2. Terraform プランでは、Microsoft Azure と AWS の両方にリソースが作成されます。 次に、AWS EC2 仮想マシンでスクリプトを実行されて、Azure Arc エージェントと必要なすべてのアーティファクトがインストールされます。 このスクリプトには、AWS および Azure 環境に関する特定の情報が必要です。 scripts/vars.sh を編集し、各変数を適切な値で更新します。

    • TF_VAR_subscription_id = お使いの Azure サブスクリプション ID
    • TF_VAR_client_id = お使いの Azure サービス プリンシパル アプリケーション ID
    • TF_VAR_client_secret = お使いの Azure サービス プリンシパル パスワード
    • TF_VAR_tenant_id = お使いの Azure テナント ID
    • AWS_ACCESS_KEY_ID = AWS アクセス キー
    • AWS_SECRET_ACCESS_KEY = AWS シークレット キー
  3. Azure CLI から、複製されたリポジトリの azure_arc_servers_jumpstart/aws/al2/terraform ディレクトリに移動します。

  4. 次に示すように、ソース コマンドを使用して scripts/vars.sh を実行することにより、編集した環境変数をエクスポートします。 Terraform ではプランを適切に実行するために、これらを設定する必要があります。 このスクリプトは、Terraform のデプロイの一部として、AWS 仮想マシンでも自動的にリモートで実行されることに注意してください。

    source ./scripts/vars.sh
    
  5. SSH キーが ~/.ssh で使用可能であり、かつ id_rsa.pub および id_rsa という名前であることを確認します。 ssh-keygen上記のガイドをフォローしてキーを作成した場合は、これはすでに正しく設定されているはずです。 されていない場合は、別のパスのキーを使用するように main.tf を変更する必要があります。

  6. Terraform AzureRM プロバイダーをダウンロードする terraform init コマンドを実行します。

    A screenshot of the terraform init command.

展開

  1. terraform apply --auto-approve コマンドを実行して、プランが終了するまで待ちます。 完了すると、AWS Amazon Linux 2 EC2 インスタンスがデプロイされ、新しいリソース グループ内の新しい Azure Arc 対応サーバーとして接続されます。

  2. Azure portal を開き、arc-servers-demo リソース グループに移動します。 AWS に作成された仮想マシンはリソースとして表示されます。

    A screenshot showing an Azure Arc-enabled server in the Azure portal.

半自動デプロイ (省略可能)

お気付きかもしれませんが、実行の最後の段階では、VM を新しい Azure Arc 対応サーバー リソースとして登録します。

A screenshot of the azcmagent connect command.

実際の登録プロセスのデモまたは制御を行う場合は、次の手順を行います。

  1. install_arc_agent.sh.tmplスクリプト テンプレートで run connect command セクションをコメント アウトし、ファイルを保存します。

    A screenshot of the azcmagent connect command commented out.

  2. terraform output を実行して、AWS VM のパブリック IP を取得します。

    A screenshot of output from Terraform.

  3. ssh ec2-user@xx.xx.xx.xx を使用して VM に SSH 接続します。ここで、xx.xx.xx.xx はホスト IP です。

    A screenshot of an SSH key connecting to an EC2 server.

  4. vars.sh のすべての環境変数をエクスポートします。

    A screenshot of exported environment variables in var.sh.

  5. 次のコマンドを実行します。

    azcmagent connect --service-principal-id $TF_VAR_client_id --service-principal-secret $TF_VAR_client_secret --resource-group "Arc-Servers-Demo" --tenant-id $TF_VAR_tenant_id --location "westus2" --subscription-id $TF_VAR_subscription_id
    

    Another screenshot of the azcmagent connect command.

  6. 完了すると、VM は Azure Arc に登録され、Azure portal 経由でリソース グループに表示されます。

デプロイの削除

このデモの一部として作成したすべてのリソースを削除するには、次のように terraform destroy --auto-approve コマンドを使用します。 A screenshot of the terraform destroy command.

または、AWS コンソールから AWS EC2 インスタンスを終了して、インスタンスを直接削除することもできます。 A screenshot of how to terminate an instance in the AWS console.