Terraform プランを使用して Amazon Elastic Compute Cloud に Amazon Linux 2 インスタンスをデプロイし、それを Azure Arc に接続する
この記事では、提供された Terraform プランを使用してアマゾン ウェブ サービス (AWS) の Amazon Elastic Compute Cloud (EC2) Linux 2 インスタンスをデプロイし、それを Azure Arc 対応サーバー リソースとして接続するためのガイダンスを提供します。
前提条件
Azure Arc Jumpstart リポジトリをクローンします。
git clone https://github.com/microsoft/azure_arc.git
Azure CLI をインストールまたは更新します。 Azure CLI は、バージョン 2.7.0 以降を実行している必要があります。 現在インストールされているバージョンを確認するには、
az --version
を使用します。SSH キーを生成します (または既存の SSH キーを使用します)
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 を構成する必要があります。
AWS マネジメント コンソールにサインインします
サインインしたら、左上の [サービス] ドロップダウン リストを選択します。 [Security, Identity, and Compliance](セキュリティ、ID、およびコンプライアンス) で、 [IAM] を選択して、ID およびアクセス管理のページにアクセスします
左側のメニューで [ユーザー] をクリックし、 [ユーザーを追加] を選択して新しい IAM ユーザーを作成します。
[ユーザーを追加] ページで、ユーザーに
Terraform
という名前を指定し、 [プログラムによるアクセス] チェックボックスをオンにして、 [次のステップ] を選択します「アクセス許可の設定」ページで、「既存のポリシーを直接添付する」を選択し、スクリーンショットに示されているようにAmazonEC2FullAccessの横のチェックボックスをオンにしてから、「次のステップ」を選択します。
[タグ] ページで、
azure-arc-demo
というキーを持つタグを割り当て、 [次のステップ] を選択して [確認] ページに進みます。すべてが正しいことを確認し、 [ユーザーの作成] を選択します。
ユーザーが作成されると、ユーザーのアクセス キー ID とシークレット アクセス キーが表示されます。 これらの値をコピーしてから [閉じる] を選択します。 次のページでは、これがどのように表示されるかの例を確認できます。 これらのキーを取得すると、これらを Terraform で使用して AWS リソースを作成できるようになります。
Terraform を構成する
Terraform プランを実行する前に、プランで使用される環境変数をエクスポートする必要があります。 これらの変数は、Azure サブスクリプションとテナント、Azure サービス プリンシパル、および先ほど作成した AWS IAM ユーザーとキーに基づいています。
az account list
コマンドを使用して、Azure サブスクリプション ID とテナント ID を取得します。Terraform プランでは、Microsoft Azure と AWS の両方にリソースが作成されます。 次に、AWS EC2 仮想マシンでスクリプトを実行されて、Azure Arc エージェントと必要なすべてのアーティファクトがインストールされます。 このスクリプトには、AWS および Azure 環境に関する特定の情報が必要です。
scripts/vars.sh
を編集し、各変数を適切な値で更新します。TF_VAR_subscription_id
= お使いの Azure サブスクリプション IDTF_VAR_client_id
= お使いの Azure サービス プリンシパル アプリケーション IDTF_VAR_client_secret
= お使いの Azure サービス プリンシパル パスワードTF_VAR_tenant_id
= お使いの Azure テナント IDAWS_ACCESS_KEY_ID
= AWS アクセス キーAWS_SECRET_ACCESS_KEY
= AWS シークレット キー
Azure CLI から、複製されたリポジトリの
azure_arc_servers_jumpstart/aws/al2/terraform
ディレクトリに移動します。次に示すように、ソース コマンドを使用して
scripts/vars.sh
を実行することにより、編集した環境変数をエクスポートします。 Terraform ではプランを適切に実行するために、これらを設定する必要があります。 このスクリプトは、Terraform のデプロイの一部として、AWS 仮想マシンでも自動的にリモートで実行されることに注意してください。source ./scripts/vars.sh
SSH キーが
~/.ssh
で使用可能であり、かつid_rsa.pub
およびid_rsa
という名前であることを確認します。ssh-keygen
上記のガイドをフォローしてキーを作成した場合は、これはすでに正しく設定されているはずです。 されていない場合は、別のパスのキーを使用するようにmain.tf
を変更する必要があります。Terraform AzureRM プロバイダーをダウンロードする
terraform init
コマンドを実行します。
展開
terraform apply --auto-approve
コマンドを実行して、プランが終了するまで待ちます。 完了すると、AWS Amazon Linux 2 EC2 インスタンスがデプロイされ、新しいリソース グループ内の新しい Azure Arc 対応サーバーとして接続されます。Azure portal を開き、
arc-servers-demo
リソース グループに移動します。 AWS に作成された仮想マシンはリソースとして表示されます。
半自動デプロイ (省略可能)
お気付きかもしれませんが、実行の最後の段階では、VM を新しい Azure Arc 対応サーバー リソースとして登録します。
実際の登録プロセスのデモまたは制御を行う場合は、次の手順を行います。
install_arc_agent.sh.tmpl
スクリプト テンプレートでrun connect command
セクションをコメント アウトし、ファイルを保存します。terraform output
を実行して、AWS VM のパブリック IP を取得します。ssh ec2-user@xx.xx.xx.xx
を使用して VM に SSH 接続します。ここで、xx.xx.xx.xx
はホスト IP です。vars.sh
のすべての環境変数をエクスポートします。次のコマンドを実行します。
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
完了すると、VM は Azure Arc に登録され、Azure portal 経由でリソース グループに表示されます。
デプロイの削除
このデモの一部として作成したすべてのリソースを削除するには、次のように terraform destroy --auto-approve
コマンドを使用します。
または、AWS コンソールから AWS EC2 インスタンスを終了して、インスタンスを直接削除することもできます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示