次のセクションで説明するように、 azd pipeline config
コマンドを拡張して、高度なシナリオとカスタム要件をサポートできます。
カスタム シークレットと変数
既定では、 azd
はパイプラインに不可欠な変数とシークレットを設定します。 たとえば、 azd pipeline config
を実行すると、 subscription id
、 environment name
、 region
などの変数が作成されます。 これらの変数は、パイプライン定義で参照されます。
env:
AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
パイプラインを実行すると、 azd
環境からこれらの値が取得され、パイプライン変数とシークレットにマップされます。 テンプレートによっては、環境変数を使用して追加の設定を制御できます。 たとえば、 KEY_VAULT_NAME
環境変数を設定して、インフラストラクチャ内の Key Vault リソースの名前を定義できます。
カスタム変数とシークレットをサポートするには、テンプレートの azure.yaml
ファイルで定義します。 例えば次が挙げられます。
pipeline:
variables:
- KEY_VAULT_NAME
- STORAGE_NAME
secrets:
- CONNECTION_STRING
この構成では、 azd
は、リストされている変数またはシークレットのいずれかが環境内に値を持っているかどうかを確認します。 次に、環境の値を使用して、対応する変数またはシークレットをパイプラインに作成します。
これらの変数とシークレットは、 azure-dev.yaml
パイプライン定義で参照できます。
- name: Provision Infrastructure
run: azd provision --no-prompt
env:
KEY_VAULT_NAME: ${{ variables.KEY_VAULT_NAME }}
STORAGE_NAME: ${{ variables.STORAGE_NAME }}
CONNECTION_STRING: ${{ secrets.CONNECTION_STRING }}
注
azure.yaml
内のシークレットまたは変数の一覧を更新した後、azd pipeline config
再実行してパイプライン値を更新します。
インフラストラクチャ パラメータ
次の Bicep の例を考えてみましょう。
@secure()
param BlobStorageConnection string
BlobStorageConnection
パラメーターに既定値がない場合は、azd
セットアップ時に値の入力を求められます。 ただし、CI/CD の実行中に対話型プロンプトはありません。 代わりに、 azd
は、 azd pipeline config
の実行時に値を要求し、それをパイプライン シークレットとして保存し、パイプラインの実行時に自動的に取得します。
azd
では、 AZD_INITIAL_ENVIRONMENT_CONFIG
と呼ばれるパイプライン シークレットを使用して、必要なパラメーター値を格納して指定します。 パイプライン定義でこのシークレットを参照します。
- name: Provision Infrastructure
run: azd provision --no-prompt
env:
AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ secrets.AZD_INITIAL_ENVIRONMENT_CONFIG }}
パイプラインを実行すると、 azd
はシークレットを使用してパラメーター値を指定するため、対話型プロンプトが不要になります。
注
新しいパラメーターを追加する場合は、 azd pipeline config
再実行してパイプライン構成を更新します。