Azure Automation でのソース管理の統合により、ソース管理リポジトリからの一方向の同期がサポートされます。 ソース管理では、GitHub または Azure DevOps のソース管理リポジトリ内のスクリプトを使用して、Automation アカウントの Runbook を最新の状態に維持することができます。 この機能により、開発環境でテストされたコードを、運用の Automation アカウントに昇格することが容易になります。
ソース管理の統合によって、チームとの共同作業、変更の追跡、Runbook の以前のバージョンへのロールバックを容易に行えるようになります。 たとえば、ソース管理を使用すると、開発、テスト、運用の Automation アカウントに対して、ソース管理内の異なるブランチを同期できます。
注
ソース管理の同期ジョブは、ユーザーの Automation アカウントのもとで実行され、その他の Automation ジョブと同じレートで課金されます。 また、Azure Automation ジョブでは MFA (Multi-Factor Authentication) はサポートされません。
ソース管理の種類
Azure Automation は、次の 3 種類のソース管理をサポートしています。
- GitHub
- Azure DevOps (Git)
- Azure DevOps (TFVC)
前提条件
- ソース管理リポジトリ (GitHub または Azure DevOps)
- Automation アカウントには、システム割り当てまたはユーザー割り当てマネージド ID が必要です。 Automation アカウントにマネージド ID を構成していない場合は、システム割り当てマネージド ID の有効化またはユーザー割り当てマネージド ID の有効化に関するページを参照して作成してください。
- ユーザー割り当てまたはシステム割り当てマネージド ID を Automation アカウントの共同作成者ロールに割り当てます。
注
Azure Automation では、ソース管理の統合を使用したシステム割り当てとユーザー割り当て両方のマネージド ID がサポートされます。 ユーザー割り当てマネージド ID を使用するには、値をユーザー割り当て ID のクライアント ID として指定してオートメーション変数 AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID
を作成します。 ユーザー割り当て Managed Identity
が有効になっていることと、Automation アカウントに対する共同作成者のアクセス権が必要です。 この変数が作成されていない場合、既定ではシステム割り当て ID を使用します。
実行アカウントとマネージド ID の両方が有効になっている場合は、マネージド ID が優先されます。
重要
Azure Automation の実行アカウントは、2023 年 9 月 30 日に廃止されました。 マネージド ID を使用することをお勧めします。
注
この Azure DevOps ドキュメントによると、"OAuth を使用したサード パーティ アプリケーションのアクセス" ポリシーは、既定ではすべての新しい組織に対してオフになっています。 そのため、Azure DevOps の [組織の設定] の [ポリシー] タイルで [OAuth を使用したサード パーティ アプリケーションのアクセス] を有効にせずに、ソース管理の種類として Azure DevOps (Git) を使用して Azure Automation でソース管理を構成しようとすると、"SourceControl securityToken が無効です" というエラーになる可能性があります。 そのため、このエラーを回避するには、まず、Azure DevOps の [組織の設定] の [ポリシー] タイルで [OAuth を使用したサード パーティ アプリケーションのアクセス] を有効にします。
ソース管理を構成する
このセクションでは、Automation アカウントのソース管理を構成する方法について説明します。 Azure portal または PowerShell のいずれかを使用できます。
共同作成者ロールにマネージド ID を割り当てる
この例では、Azure PowerShell を使用して、サブスクリプションの共同作成者ロールを Azure Automation アカウント リソースに割り当てる方法を示します。
昇格された特権で PowerShell コンソールを開きます。
コマンド
Connect-AzAccount
を実行して、Azure にサインインします。共同作成者ロールにマネージド ID を割り当てるには、次のコマンドを実行します。
New-AzRoleAssignment ` -ObjectId <automation-Identity-Object(Principal)-Id> ` -Scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}" ` -RoleDefinitionName "Contributor"
Azure portal でソース管理を構成する
Azure portal を使用してソース管理を構成するには、次の手順に従います。
Automation アカウント内で、[ソース管理] を選択し、[追加] をクリックします。
[ソース管理の種類] を選択し、[認証] をクリックします。
ブラウザー ウィンドウが開き、サインインが求められます。 指示に従って認証を完了します。
[ソース管理の概要] ページのフィールドを使用して、以下で定義されているソース管理プロパティを入力します。 完了したら、[保存] をクリックします。
プロパティ 説明 ソース管理名 ソース管理のためのフレンドリ名。 この名前は、アルファベットと数字でのみ構成されている必要があります。 ソース管理の種類 ソース管理機構の種類。 使用可能なオプションは、次のとおりです:
* GitHub
* Azure DevOps (Git)
* Azure DevOps (TFVC)リポジトリ リポジトリまたはプロジェクトの名前。 最初の 200 個のリポジトリが取得されます。 リポジトリを検索するには、フィールドに名前を入力して、[Search on GitHub]\(GitHub で検索\) をクリックします。 [Branch]\(ブランチ) ソース ファイルの抽出元のブランチ。 TFVC ソース管理の種類では、ブランチのターゲット設定は使用できません。 フォルダー パス 同期する Runbook を含むフォルダー (/Runbooks など)。 指定されたフォルダー内の Runbook のみが同期されます。 再帰はサポートされていません。 自動同期1 ソース管理リポジトリまたは GitHub リポジトリ内でコミットが行われる際に、自動同期をオンまたはオフにする設定。 Runbook の発行 Runbook がソース管理からの同期後に自動的に発行される場合はオン、それ以外の場合はオフの設定。 説明 ソース管理に関する追加の詳細を指定するテキスト。 1 ソース管理と Azure DevOps の統合を構成する際に自動同期を有効にするには、プロジェクト管理者または GitHub リポジトリ所有者である必要があります。 コラボレーターは、自動同期を使用せずに、ソース管理のみを構成することができます。
自動同期は、Automation のプライベート リンクでは機能しません。 プライベート リンクを有効にした場合、ソース管理 Webhook 呼び出しはネットワークの外部であるため失敗します。
注
- ソース管理リポジトリのログインは、Azure portal でのログインと異なる場合があります。 ソース管理を構成する際は、ソース管理リポジトリの正しいアカウントでログインするようにしてください。 不明点がある場合は、ブラウザーで新しいタブを開き、dev.azure.com、visualstudio.com、または github.com からログアウトし、ソース管理への再接続を試みてください。
- クロステナント認証はサポートされていません。
- ソース管理の呼び出しに使用される Webhook は 1 年後に期限切れになるので、ソース管理が 1 年以上前に作成された場合、自動同期が失敗する可能性があります。 この問題を解決するには、同じ構成で Automation アカウントに新しいソース管理を作成します。これにより、有効期限が延長された新しい Webhook が生成されます。
PowerShell でソース管理を構成する
PowerShell を使用して Azure Automation のソース管理を構成することもできます。 この操作に PowerShell コマンドレットを使用するには、個人用アクセス トークン (PAT) が必要です。 New-AzAutomationSourceControl コマンドレットを使用してソース管理接続を作成します。 このコマンドレットでは、PAT に対するセキュリティで保護された文字列が必要です。 セキュリティで保護された文字列を作成する方法については、「ConvertTo-SecureString」を参照してください。
次のサブセクションは、PowerShell による GitHub、Azure DevOps (Git)、Azure DevOps (TFVC) のソース管理接続の作成について説明しています。
GitHub のソース管理接続を作成する
New-AzAutomationSourceControl -Name SCGitHub -RepoUrl https://github.com/<accountname>/<reponame>.git -SourceType GitHub -FolderPath "/MyRunbooks" -Branch main -AccessToken <secureStringofPAT> -ResourceGroupName <ResourceGroupName> -AutomationAccountName <AutomationAccountName>
Azure DevOps (Git) のソース管理接続を作成する
注
Azure DevOps (Git) では、以前の形式で使用されていた visualstudio.com ではなく、dev.azure.com にアクセスする URL を使用します。 古い URL 形式の https://<accountname>.visualstudio.com/<projectname>/_git/<repositoryname>
は非推奨ですが、まだサポートされています。 新しい形式が推奨されています。
New-AzAutomationSourceControl -Name SCReposGit -RepoUrl https://dev.azure.com/<accountname>/<adoprojectname>/_git/<repositoryname> -SourceType VsoGit -AccessToken <secureStringofPAT> -Branch main -ResourceGroupName <ResourceGroupName> -AutomationAccountName <AutomationAccountName> -FolderPath "/Runbooks"
Azure DevOps (TFVC) のソース管理接続を作成する
注
Azure DevOps (TFVC) では、以前の形式で使用されていた visualstudio.com ではなく、dev.azure.com にアクセスする URL を使用します。 古い URL 形式の https://<accountname>.visualstudio.com/<projectname>/_versionControl
は非推奨ですが、まだサポートされています。 新しい形式が推奨されています。
New-AzAutomationSourceControl -Name SCReposTFVC -RepoUrl https://dev.azure.com/<accountname>/<adoprojectname>/_git/<repositoryname> -SourceType VsoTfvc -AccessToken <secureStringofPAT> -ResourceGroupName <ResourceGroupName> -AutomationAccountName <AutomationAccountName> -FolderPath "/Runbooks"
個人用アクセス トークン (PAT) のアクセス許可
ソース管理には、PAT に対するいくつかの最小限のアクセス許可が必要です。 次のサブセクションは、GitHub と Azure DevOps で必要な最小限のアクセス許可を示します。
GitHub の PAT に対する最小限のアクセス許可
次の表は、GitHub で必要な PAT の最小限のアクセス許可を定義したものです。 GitHub で PAT を作成する方法について詳しくは、「コマンドライン用の個人アクセス トークンを作成する」をご覧ください。
スコープ | 説明 |
---|---|
repo |
|
repo:status |
コミット状態へのアクセス |
repo_deployment |
デプロイ状態へのアクセス |
public_repo |
パブリック リポジトリへのアクセス |
repo:invite |
リポジトリの招待へのアクセス |
security_events |
セキュリティ イベントの読み取りと書き込み |
admin:repo_hook |
|
write:repo_hook |
リポジトリ フックの書き込み |
read:repo_hook |
リポジトリ フックの読み取り |
Azure DevOps の PAT に対する最小限のアクセス許可
次のリストは、Azure DevOps で必要な PAT の最小限のアクセス許可を定義したものです。 Azure DevOps で PAT を作成する方法について詳しくは、「個人用アクセス トークンによるアクセスの認証」をご覧ください。
スコープ | アクセスの種類 |
---|---|
Code |
お読みください |
Project and team |
お読みください |
Identity |
お読みください |
User profile |
お読みください |
Work items |
お読みください |
Service connections |
読み取り、クエリの実行、および管理1 |
1Service connections
アクセス許可が必要なのは、自動同期を有効にした場合のみです。
ソース管理と同期させる
以下の手順に従って、ソース管理と同期します。
[ソース管理] ページの表から、ソースを選択します。
[Start Sync] (同期の開始) をクリックして、同期プロセスを開始します。
[同期ジョブ] タブをクリックして、現在の同期ジョブまたは以前の同期ジョブの状態を表示します。
[ソース管理] ドロップダウン メニューで、ソース管理機構を選択します。
ジョブをクリックすると、ジョブの出力を表示することができます。 次に、ソース管理の同期ジョブからの出力例を示します。
=================================================================== Azure Automation Source Control. Supported runbooks to sync: PowerShell Workflow, PowerShell Scripts, DSC Configurations, Graphical, and Python 2. Setting AzEnvironment. Getting AzureRunAsConnection. Logging in to Azure... Source control information for syncing: [Url = https://ContosoExample.visualstudio.com/ContosoFinanceTFVCExample/_versionControl] [FolderPath = /Runbooks] Verifying url: https://ContosoExample.visualstudio.com/ContosoFinanceTFVCExample/_versionControl Connecting to VSTS... Source Control Sync Summary: 2 files synced: - ExampleRunbook1.ps1 - ExampleRunbook2.ps1 ==================================================================
[ソース管理の同期ジョブの概要] ページの [すべてのログ] を選択すると、追加のログを使用できます。 このような追加のログ エントリは、ソース管理を使用する際に発生する可能性がある問題のトラブルシューティングに役立ちます。
ソース管理を切断する
ソース管理リポジトリから切断するには:
Automation アカウントの [アカウント設定] で、[ソース管理] を開きます。
削除するソース管理機構を選択します。
[ソース管理の概要] ページで [削除] をクリックします。
エンコードに関する問題を処理する
ソース管理リポジトリで複数のユーザーがさまざまなエディターを使用して Runbook を編集していると、エンコードの問題が発生する可能性があります。 この状況について詳しくは、「エンコード問題の一般的な原因」をご覧ください。
PAT を更新する
現時点では、ソース管理の PAT を更新するために Azure portal を使用できません。 PAT が有効期限切れになったり取り消されたりしたら、以下のいずれかの方法で、新しいアクセス トークンを使用してソース管理を更新できます。
- REST API を使用する。
- Update-AzAutomationSourceControl コマンドレットを使用する。
次のステップ
- Visual Studio Codespaces を使用した Runbook ソース管理の統合については、Azure Automation: Visual Studio Codespaces を使用した Runbook ソース管理の統合に関する記事を参照してください。