Terraform プランを使用して Google Cloud Platform Ubuntu インスタンスをデプロイし、Azure Arc に接続する
この記事では、指定された Terraform プランを使用して Google Cloud Platform (GCP) インスタンスをデプロイし、Azure Arc 対応サーバー リソースとして接続するためのガイダンスを提供します。
前提条件
Azure Arc Jumpstart リポジトリを複製します。
git clone https://github.com/microsoft/azure_arc.git
バージョン 2.7 以降の Azure CLI をインストールするか、更新します。 次のコマンドを使用して、現在インストールされているバージョンを確認します。
az --version
SSH キーを生成します (または既存の SSH キーを使用します)
Azure サービス プリンシパルを作成します。
GCP 仮想マシンを Azure Arc に接続するには、共同作成者ロールが割り当てられた Azure サービス プリンシパルが必要です。 これを作成するには、Azure アカウントにサインインして、次のコマンドを実行します。 このコマンドは、Azure Cloud Shell 内で実行することもできます。
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://AzureArcGCP" --role contributor --scopes "/subscriptions/00000000-0000-0000-0000-000000000000"
出力は次のようになります。
{ "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "displayName": "http://AzureArcGCP", "password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "tenant": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
Note
サービス プリンシパルのスコープを、特定の Azure サブスクリプションとリソース グループに限定することを強くお勧めします。
新しい GCP プロジェクトを作成する
Google API コンソールに移動し、お使いの Google アカウントでサインインします。 ログインしたら、
Azure Arc demo
という名前の新しいプロジェクトを作成します。 作成した後は、プロジェクト ID を必ずコピーしてください。通常、これはプロジェクト名とは異なるためです。新しいプロジェクトが作成され、ページ上部にあるドロップダウン リストで選択されたら、そのプロジェクトに対して Compute Engine API のアクセスを有効にする必要があります。 [+ Enable APIs and Services](API とサービスを有効にする) をクリックし、"compute engine" を検索します。 次に、 [Enable](有効にする) を選択して、API アクセスを有効にします。
次に、Terraform で GCP プロジェクトのリソースを作成および管理するために使用されるサービス アカウント キーを設定します。 サービス アカウント キーの作成ページにアクセスします。 ドロップダウン リストから [新しいサービス アカウント] を選択し、名前を指定してから、プロジェクト、ロールとしての所有者、キーの種類としての JSON を順に選択し、 [作成] を選択します。 これによって、Terraform でリソースを管理するために必要なすべての資格情報を含む JSON ファイルがダウンロードされます。 ダウンロードした JSON ファイルを
azure_arc_servers_jumpstart/gcp/ubuntu/terraform
ディレクトリにコピーします。最後に、SSH キーが
~/.ssh
で使用可能であり、かつid_rsa.pub
およびid_rsa
という名前であることを確認します。ssh-keygen
上記のガイドをフォローしてキーを作成した場合、それはすでに正しく設定されているはずです。 されていない場合は、別のパスのキーを使用するようにmain.tf
を変更する必要があります。
デプロイ
Terraform プランを実行する前に、プランで使用される環境変数をエクスポートする必要があります。 これらの変数は、先ほど作成した Azure サービス プリンシパル、Azure サブスクリプションとテナント、GCP プロジェクト名に基づいています。
az account list
コマンドを使用して、Azure サブスクリプション ID とテナント ID を取得します。Terraform プランでは、Microsoft Azure と Google Cloud Platform の両方にリソースが作成されます。 次に、GCP 仮想マシンでスクリプトが実行され、Azure Arc エージェントと必要なすべてのアーティファクトがインストールされます。 このスクリプトには、GCP および Azure 環境に関する特定の情報が必要です。
scripts/vars.sh
を編集し、各変数を適切な値で更新します。TF_VAR_subscription_id
= お使いの Azure サブスクリプション IDTF_VAR_client_id
= お使いの Azure サービス プリンシパル アプリケーション IDTF_VAR_client_secret
= お使いの Azure サービス プリンシパル パスワードTF_VAR_tenant_id
= お使いの Azure テナント IDTF_VAR_gcp_project_id
= GCP プロジェクト IDTF_VAR_gcp_credentials_filename
= GCP 資格情報 JSON ファイル名
CLI から、クローンされたリポジトリの
azure_arc_servers_jumpstart/gcp/ubuntu/terraform
ディレクトリに移動します。下に示すように、source コマンドを使って
scripts/vars.sh
を実行することにより、編集した環境変数をエクスポートします。 Terraform ではプランを適切に実行するために、これらを設定する必要があります。 このスクリプトは、Terraform のデプロイの一部として、GCP 仮想マシンでも自動的にリモートで実行されることに注意してください。source ./scripts/vars.sh
Terraform AzureRM プロバイダーをダウンロードする
terraform init
コマンドを実行します。次に、
terraform apply --auto-approve
コマンドを実行して、プランが終了するまで待ちます。 完了すると、GCP Ubuntu VM がデプロイされ、新しいリソース グループ内の新しい Azure Arc 対応サーバーとして接続されます。Azure portal を開き、
arc-gcp-demo
リソース グループに移動します。 GCP に作成された仮想マシンはリソースとして表示されます。
半自動デプロイ (省略可能)
お気付きかもしれませんが、実行の最後の段階では、VM を新しい Azure Arc 対応サーバー リソースとして登録します。
実際の登録プロセスのデモまたは制御を行う場合は、次の手順を行います。
install_arc_agent.sh.tmpl
スクリプト テンプレートでrun connect command
セクションをコメント アウトし、ファイルを保存します。terraform output
を実行して、GCP VM のパブリック IP を取得します。ssh arcadmin@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 "Azure Arc gcp-demo" --tenant-id $TF_VAR_tenant_id --location "westus2" --subscription-id $TF_VAR_subscription_id
完了すると、VM は Azure Arc に登録され、Azure portal 経由でリソース グループに表示されます。
デプロイの削除
このデモの一部として作成したすべてのリソースを削除するには、下のように terraform destroy --auto-approve
コマンドを使用します。
または、GCP コンソールから直接 GCP VM を削除することもできます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示