演習 - 環境を設定する

完了

重要

この演習を行うには、独自の Azure サブスクリプションが必要です。また、料金が発生することがあります。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

おもちゃ会社の再利用可能な Bicep コードの発行を開始する前に、環境を構成する必要があります。 このセクションでは、このモジュールの残りの部分を完了するために、Azure と GitHub 環境が設定されていることを確認します。

これらの目的を達成するには、次の作業を行います。

  • このモジュール向けに GitHub リポジトリを設定します。
  • リポジトリをコンピューターに複製します。
  • Azure でリソース グループを作成する。
  • GitHub にシークレットを作成します。

GitHub リポジトリを取得する

ここでは、テンプレート リポジトリに基づく新しい GitHub リポジトリを作成します。 テンプレート リポジトリには、このモジュールを開始するために必要なファイルが含まれています。

このラーニング パスのモジュールは、段階的に進めるラーニング パスの一部となっています。 各モジュールには、学習のための、関連する GitHub テンプレート リポジトリがあります。

ヒント

ラーニング パスで前のモジュールを完了した場合でも、次の手順に従って新しいリポジトリを作成し、新しい名前を付けます。

テンプレート リポジトリから開始する

GitHub リポジトリを設定するテンプレートを実行します。

GitHub サイトで、次の手順を実行して、テンプレートからリポジトリを作成します。

  1. GitHub にサインインします。

  2. [このテンプレートを使用]>[新しいリポジトリの作成] の順に選択します。

    テンプレート リポジトリを示す GitHub インターフェイスのスクリーンショット。テンプレートを使用するボタンが強調表示されています。

  3. 所有者の場合は、自分の GitHub アカウントを選択します。

  4. 新しいプロジェクトのリポジトリ名を入力します (toy-reusable など)。

  5. [Public](パブリック) オプションを選択します

    独自のリポジトリを作成するときに、プライベートにしたい場合もあります。 このモジュールでは、パブリック リポジトリと GitHub Enterprise アカウントを組み合わせた場合にのみ機能する GitHub の機能を使用します。

  6. [Create repository] (リポジトリの作成) を選択します。

    リポジトリの作成ページを示す GitHub インターフェイスのスクリーンショット。

重要

このモジュールの最後の演習には、重要なクリーンアップ ステップが含まれています。 クリーンアップ手順は、このモジュールを完了しなかった場合でも必ず行ってください。

リポジトリの複製

これで自分のアカウントにテンプレート リポジトリのコピーが用意されたので、このリポジトリをローカルに複製して、そこで作業を開始できるようにします。

  1. [コード] を選択し、[クリップボードに URL をコピーする] アイコンを選択します。

    新しいリポジトリを示す GitHub インターフェイスのスクリーンショット。リポジトリ URL コピー ボタンが強調表示されています。

  2. Visual Studio Code を開きます。

  3. [ターミナル]>[新しいターミナル] を選択して、Visual Studio Code ターミナル ウィンドウを開きます。 このウィンドウは通常、画面の下部に表示されます。

  4. ターミナルで、ローカル コンピューター上の GitHub リポジトリをクローンするディレクトリに移動します。 たとえば、repositories フォルダー内にリポジトリをクローンするには、次のコマンドを実行します。

    cd repositories
    
  5. git clone」と入力し、前にコピーした URL を貼り付けると、次のようになります。

    git clone https://github.com/mygithubuser/toy-reusable.git
    
  6. Visual Studio Code ターミナルで次のコマンドを実行して、リポジトリ フォルダー内の Visual Studio Code を再度開きます。

    code --reuse-window toy-reusable
    

Azure へのサインイン

Azure でリソース グループを使用するには、Visual Studio Code ターミナルから Azure アカウントにサインインします。 Azure CLI ツールと Visual Studio Code 用 Azure アカウント拡張機能がインストールされていることを確認します。

  1. [ターミナル] メニューで、[新しいターミナル] を選択します。 通常、ターミナル ウィンドウは画面の下半分に表示されます。

    ターミナル ウィンドウの右側に示されているように、通常、既定のシェルは pwsh です。

    シェル オプションとして pwsh が表示されている Visual Studio Code のターミナル ウィンドウのスクリーンショット。

  2. [起動プロファイル] ドロップダウン リストを選択し、[Azure Cloud Shell (Bash)] を選択します。

    Visual Studio Code のターミナル ウィンドウのスクリーンショット。ターミナル シェルのドロップダウン リストと Azure Cloud Shell (Bash) メニュー項目が表示されます。

    新しいシェルが開きます。

Azure CLI を使用して Azure にサインインする

  1. Visual Studio Code のターミナルで次のコマンドを実行して、Azure にサインインします。

    az login
    
  2. 開いたブラウザーで、Azure アカウントにサインインします。

Azure でリソース グループを使用するには、Visual Studio Code ターミナルから Azure アカウントにサインインします。 Azure PowerShellVisual Studio Code 用 Azure アカウント拡張機能がインストールされていることを確認します。

  1. [ターミナル] メニューで、[新しいターミナル] を選択します。 通常、ターミナル ウィンドウは画面の下半分に表示されます。

    ターミナル ウィンドウの右側に示されているように、通常、既定のシェルは pwsh です。

    シェル オプションとして pwsh が表示されている Visual Studio Code のターミナル ウィンドウのスクリーンショット。

  2. [起動プロファイル] ドロップダウン リストを選択し、[Azure Cloud Shell (PowerShell)] を選択します。

    Visual Studio Code のターミナル ウィンドウのスクリーンショット。ターミナル シェルのドロップダウン リストと Azure Cloud Shell (PowerShell) メニュー項目が表示されています。

    新しいシェルが開きます。

Azure PowerShell を使用して Azure にサインインする

  1. Visual Studio Code のターミナルで次のコマンドを実行して、Azure にサインインします。

    Connect-AzAccount -UseDeviceAuthentication
    
  2. コマンドの指示に従って Azure アカウントにサインインします。

ワークロード ID を作成する

次に、デプロイ ワークフロー用のワークロード ID を Microsoft Entra ID で作成します。

ワークロード ID を作成するため、Azure CLI コマンドでは jq を使って JSON 出力からのデータが解析されます。 jq をインストールしていない場合は、Azure Cloud Shell で Bash を使って、ワークロード ID、リソース グループ、ロールの割り当てを作成し、GitHub シークレットを準備できます。

  1. 次のコードを実行して、GitHub ユーザー名とリポジトリ名の変数を定義します。 必ず、mygithubuser を、この演習で先ほどメモした GitHub ユーザー名に置き換えます。 また、必ず正しい GitHub リポジトリ名を指定します。

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-reusable'
    
  2. デプロイ ワークフロー用のワークロード ID を作成します。

    applicationRegistrationDetails=$(az ad app create --display-name 'toy-reusable')
    applicationRegistrationObjectId=$(echo $applicationRegistrationDetails | jq -r '.id')
    applicationRegistrationAppId=$(echo $applicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $applicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-reusable-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  1. 次のコードを実行して、GitHub ユーザー名とリポジトリ名の変数を定義します。 必ず、mygithubuser を、この演習で先ほどメモした GitHub ユーザー名に置き換えます。 また、必ず正しい GitHub リポジトリ名を指定します。

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-reusable'
    
  2. デプロイ ワークフロー用のワークロード ID を作成します。

    $applicationRegistration = New-AzADApplication -DisplayName 'toy-reusable'
    New-AzADAppFederatedCredential `
       -Name 'toy-reusable-branch' `
       -ApplicationObjectId $applicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    

Azure でリソース グループを作成してワークロード ID へのアクセス権を付与する

次に、Web サイトのリソース グループを作成します。 また、このプロセスでは、ワークロード ID にリソース グループの共同作成者ロールを付与し、ワークフローでリソース グループにデプロイできるようにします。

Visual Studio Code ターミナルで、次の Azure CLI コマンドを実行します。

resourceGroupResourceId=$(az group create --name ToyReusable --location westus3 --query id --output tsv)

az ad sp create --id $applicationRegistrationObjectId
az role assignment create \
  --assignee $applicationRegistrationAppId \
  --role Contributor \
  --scope $resourceGroupResourceId

Visual Studio Code ターミナルで、次の Azure PowerShell コマンドを実行します。

$resourceGroup = New-AzResourceGroup -Name ToyReusable -Location westus3

New-AzADServicePrincipal -AppId $applicationRegistration.AppId
New-AzRoleAssignment `
  -ApplicationId $applicationRegistration.AppId `
  -RoleDefinitionName Contributor `
  -Scope $resourceGroup.ResourceId

GitHub シークレットを準備する

次のコードを実行して、GitHub シークレットとして作成する必要がある各値を表示します。

echo "AZURE_CLIENT_ID: $applicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID: $($applicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"

AZURE_CLIENT_ID のアプリケーション ID 値をメモしておきます。 この値は、このモジュールの終了時にリソースをクリーン アップするときに使用できます。

GitHub シークレットを作成する

ワークロード ID と、それがデプロイできるリソース グループを作成しました。 次に、GitHub Actions でシークレットを作成します。

  1. ブラウザーで GitHub リポジトリに移動します。

  2. [設定]>[シークレットと変数]>[アクション] の順に選択します。

  3. [New repository secret](新しいリポジトリ シークレット) を選択します。

    [シークレット] ページを示す GitHub インターフェイスのスクリーンショット。[新しいリポジトリ シークレット] ボタンが強調表示されています。

  4. シークレットに AZURE_CLIENT_ID という名前を付けます。

  5. [値] フィールドに、ターミナル出力の最初の行の GUID を貼り付けます。 値には、AZURE_CLIENT_ID、コロン、スペースを含めないでください。

  6. [Add secret](シークレットの追加) を選択します。

    [新しいシークレット] ページを示す GitHub インターフェイスのスクリーンショット。名前と値が入力され、[シークレットの追加] ボタンが強調表示されています。

  7. このプロセスを繰り返して AZURE_TENANT_IDAZURE_SUBSCRIPTION_ID のシークレットを作成します。値は、ターミナル出力の対応するフィールドからコピーします。

  8. シークレットの一覧に現在 3 つのシークレットが表示されていることを確認します。

    シークレットの一覧を示す GitHub インターフェイスのスクリーンショット。