Azure Pipelines リリースを使用して継続的インテグレーションを自動化する
適用対象: Azure Data Factory Azure Synapse Analytics
ヒント
企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。
以下は、Azure Pipelines リリースを設定し、複数の環境へのデータ ファクトリのデプロイを自動化するためのガイドです。
必要条件
Azure Resource Manager のサービス エンドポイントを使用する Azure DevOps Server (旧称: Visual Studio Team Foundation Server) または Azure Repos にリンクされた Azure サブスクリプション。
Azure Repos Git 統合で構成されたデータ ファクトリ。
各環境用のシークレットを格納する Azure Key Vault。
Azure Pipelines リリースをセットアップする
Azure DevOps で、データ ファクトリで構成したプロジェクトを開きます。
ページの左側で、 [パイプライン] を選択して [リリース] を選択します。
[新しいパイプライン] を選択するか、既存のパイプラインがある場合は [新規] 、 [新しいリリース パイプライン] の順に選択します。
[空のジョブ] テンプレートを選択します。
[ステージ名] ボックスに、環境の名前を入力します。
[成果物の追加] を選択し、開発データ ファクトリで構成した Git リポジトリを選択します。 既定のブランチのリポジトリの発行ブランチを選択します。 既定では、この発行ブランチは
adf_publish
です。 [既定のバージョン] では [既定のブランチからの最新バージョン] を選択します。Azure Resource Manager デプロイ タスクを追加します。
ステージ ビューで、 [ステージ タスクを表示します] を選択します。
新しいタスクを作成します。 [ARM テンプレートのデプロイ] を探して [追加] を選択します。
デプロイ タスクでは、ターゲットのデータ ファクトリのサブスクリプション、リソース グループ、および場所を選択します。 必要であれば資格情報を指定します。
[Action](アクション) 一覧で、 [Create or update resource group](リソース グループの作成または更新) を選択します。
[テンプレート] ボックスの横にある省略記号ボタン ( […] ) を選択します。 構成されている Git リポジトリの発行ブランチで生成される Azure Resource Manager テンプレートを参照します。 adf_publish ブランチの <FactoryName> フォルダーで、ファイル
ARMTemplateForFactory.json
を探します。 リンクされた ARM テンプレートの使用の詳細については、VSTS を使用したリンクされた ARM テンプレートのデプロイに関するページと、「リンクされたテンプレートの使用」を参照してください。[テンプレート パラメーター] ボックスの横にある … を選択して、パラメーター ファイルを選択します。 adf_publish ブランチの >FactoryName< フォルダーで、ファイル
ARMTemplateParametersForFactory.json
を探します。[テンプレート パラメーターのオーバーライド] ボックスの横にある … を選択して、ターゲットのデータ ファクトリに望ましいパラメーター値を入力します。 Azure Key Vault から取得した資格情報の場合は、シークレットの名前を二重引用符で囲んで入力します。 たとえば、シークレットの名前が cred1 の場合は、この値に「 "$ (cred1)" 」と入力します。
[配置モード] で [Incremental](増分) を選択します。
警告
完全なデプロイ モードでは、リソース グループに存在していても、新しい Resource Manager テンプレート内で指定されていないリソースは、削除されます。 詳細については、「Azure Resource Manager のデプロイ モード」を参照してください。
リリース パイプラインを保存します。
リリースをトリガーするには、 [Create release](リリースの作成) を選択します。 リリースの作成を自動化するには、Azure DevOps のリリース トリガーに関するページを参照してください。
重要
CI/CD のシナリオでは、異なる環境内の統合ランタイム (IR) の種類は同じである必要があります。 たとえば、開発環境にセルフホステッド IR がある場合、テストや運用などの他の環境でも、IR の種類はセルフホステッドである必要があります。 同様に、複数のステージ間で統合ランタイムを共有している場合は、開発、テスト、運用など、すべての環境で、統合ランタイムをリンクされたセルフホステッドとして構成する必要があります。
Azure Key Vault からシークレットを取得する
Azure Resource Manager テンプレートに渡すシークレットがある場合は、Azure Pipelines リリースで Azure Key Vault を使うことをお勧めします。
シークレットを処理する方法は 2 つあります。
シークレットをパラメーター ファイルに追加します。 詳しくは、「デプロイ時に Azure Key Vault を使用して、セキュリティで保護されたパラメーター値を渡す」をご覧ください。
発行ブランチにアップロードされたパラメーター ファイルのコピーを作成します。 次の形式を使用して、Key Vault から取得するパラメーターの値を設定します。
{ "parameters": { "azureSqlReportingDbPassword": { "reference": { "keyVault": { "id": "/subscriptions/<subId>/resourceGroups/<resourcegroupId> /providers/Microsoft.KeyVault/vaults/<vault-name> " }, "secretName": " < secret - name > " } } } }
このメソッドを使用すると、シークレットはキー コンテナーから自動的にプルされます。
パラメーター ファイルも発行ブランチ内に存在する必要があります。
前のセクションで説明されている Azure Resource Manager デプロイ タスクの前に、Azure Key Vault タスクを追加します。
[タスク] タブで、新しいタスクを作成します。 Azure Key Vault を検索して追加します。
Key Vault タスクで、キー コンテナーを作成したサブスクリプションを選択します。 必要に応じて資格情報を入力し、キー コンテナーを選択します。
Azure Pipelines エージェントにアクセス許可を与える
適切なアクセス許可が設定されていない場合、Azure Key Vault タスクがアクセス拒否エラーで失敗することがあります。 リリースのログをダウンロードし、Azure Pipelines エージェントにアクセス許可を与えるコマンドを含む .ps1 ファイルを探します。 コマンドは直接実行できます。 または、ファイルからプリンシパル ID をコピーし、Azure portal でアクセス ポリシーを手動で追加できます。 必要な最低限のアクセス許可は、Get
と List
です。
アクティブなトリガーを更新する
Azure PowerShell のインストールと構成の方法に関するページの手順に従って、最新の Azure PowerShell モジュールをインストールしてください。
警告
最新バージョンの PowerShell および Data Factory モジュールを使用しない場合は、コマンドの実行中に逆シリアル化エラーが発生する可能性があります。
アクティブなトリガーを更新しようとした場合、デプロイは失敗します。 アクティブなトリガーを更新するには、手動でそれらを停止し、デプロイ後に再起動する必要があります。 これは、Azure Powershell タスクを使用して実行できます。
リリースの [タスク] タブで、 [Azure PowerShell] タスクを追加します。 タスク バージョンとして最新の Azure PowerShell バージョンを選択します。
お使いのファクトリがあるサブスクリプションを選択します。
スクリプトの種類として [スクリプト ファイル パス] を選択します。 これにより、リポジトリへの PowerShell スクリプトの保存が求められます。 次の PowerShell スクリプトを使用すると、トリガーを停止できます。
$triggersADF = Get-AzDataFactoryV2Trigger -DataFactoryName $DataFactoryName -ResourceGroupName $ResourceGroupName $triggersADF | ForEach-Object { Stop-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name $_.name -Force }
(Start-AzDataFactoryV2Trigger
関数を使用して) 同様の手順を実行することで、デプロイ後にトリガーを再起動できます。
データ ファクトリ チームは、サンプルのデプロイ前と後のスクリプトを提供しています。
注意
CI/CD 中にすべてのトリガーをオフ/オンにするのではなく、変更されたトリガーのみをオフ/オンにする場合は、PrePostDeploymentScript.Ver2.ps1 を使用します。
警告
ADO タスクで PowerShell Core を使用してスクリプトを実行してください