Terraform プランを使用して Google Cloud Platform Ubuntu インスタンスをデプロイし、Azure Arc に接続する

この記事では、指定された Terraform プランを使用して Google Cloud Platform (GCP) インスタンスをデプロイし、Azure Arc 対応サーバー リソースとして接続するためのガイダンスを提供します。

前提条件

  1. Azure Arc Jumpstart リポジトリを複製します。

    git clone https://github.com/microsoft/azure_arc.git
    
  2. バージョン 2.7 以降の Azure CLI をインストールするか、更新します。 次のコマンドを使用して、現在インストールされているバージョンを確認します。

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

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

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

  6. 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 プロジェクトを作成する

  1. Google API コンソールに移動し、お使いの Google アカウントでサインインします。 ログインしたら、Azure Arc demo という名前の新しいプロジェクトを作成します。 作成した後は、プロジェクト ID を必ずコピーしてください。通常、これはプロジェクト名とは異なるためです。

    First screenshot of the New Project page in the GCP console.

    Second screenshot of the New Project page in the GCP console.

  2. 新しいプロジェクトが作成され、ページ上部にあるドロップダウン リストで選択されたら、そのプロジェクトに対して Compute Engine API のアクセスを有効にする必要があります。 [+ Enable APIs and Services](API とサービスを有効にする) をクリックし、"compute engine" を検索します。 次に、 [Enable](有効にする) を選択して、API アクセスを有効にします。

    First screenshot of Compute Engine API in the GCP console.

    Second screenshot of Compute Engine API in the GCP console.

  3. 次に、Terraform で GCP プロジェクトのリソースを作成および管理するために使用されるサービス アカウント キーを設定します。 サービス アカウント キーの作成ページにアクセスします。 ドロップダウン リストから [新しいサービス アカウント] を選択し、名前を指定してから、プロジェクト、ロールとしての所有者、キーの種類としての JSON を順に選択し、 [作成] を選択します。 これによって、Terraform でリソースを管理するために必要なすべての資格情報を含む JSON ファイルがダウンロードされます。 ダウンロードした JSON ファイルを azure_arc_servers_jumpstart/gcp/ubuntu/terraform ディレクトリにコピーします。

    A screenshot of how to create a service account in the GCP console.

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

デプロイ

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

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

  2. Terraform プランでは、Microsoft Azure と Google Cloud Platform の両方にリソースが作成されます。 次に、GCP 仮想マシンでスクリプトが実行され、Azure Arc エージェントと必要なすべてのアーティファクトがインストールされます。 このスクリプトには、GCP および 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
    • TF_VAR_gcp_project_id = GCP プロジェクト ID
    • TF_VAR_gcp_credentials_filename = GCP 資格情報 JSON ファイル名
  3. CLI から、クローンされたリポジトリの azure_arc_servers_jumpstart/gcp/ubuntu/terraform ディレクトリに移動します。

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

    source ./scripts/vars.sh
    
  5. Terraform AzureRM プロバイダーをダウンロードする terraform init コマンドを実行します。

    A screenshot of the terraform init command.

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

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

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

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

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

A screenshot of running the azcmagent connect command.

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

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

    A screenshot showing main.tf being commented out to disable automatic onboarding of an Azure Arc agent.

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

    A screenshot of output from Terraform.

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

    A screenshot of an SSH key connecting to a GCP server.

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

    A screenshot of environment variables exporting with vars.sh.

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

    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
    

    A screenshot of the azcmagent connect command completing successfully.

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

デプロイの削除

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

A screenshot of the terraform destroy command.

または、GCP コンソールから直接 GCP VM を削除することもできます。

A screenshot showing how to delete a virtual machine from the GCP console.