Ansible プレイブックを使用してマシンを大規模に接続する
Ansible プレイブックを使用して、Ansible マネージド ノードを Azure Arc 対応サーバーに大規模にオンボードできます。 これを行うには、適切なプレイブックをダウンロードし、変更してから、実行する必要があります。
開始する前に、必ず前提条件を確認し、ご利用のサブスクリプションおよびリソースが要件を満たしていることを確認してください。 サポートされているリージョン、および関連するその他の考慮事項については、 サポート対象の Azure リージョン に関する記事を参照してください。 また、設計と展開の条件、および管理と監視に関する推奨事項については、規模拡大に関する計画ガイドを参照してください。
Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。
SQL Server の自動接続
Microsoft SQL Server もインストールされている Azure Arc に Windows または Linux サーバーを接続すると、SQL Server インスタンスも Azure Arc に自動的に接続されます。 Azure Arc によって有効化された SQL Server には、SQL Server インスタンスとデータベース用の詳細インベントリと追加の管理機能が備わっています。 接続プロセスの一環として、拡張機能が Azure Arc 対応サーバーにデプロイされ、新しいロールが SQL Server とデータベースに適用されます。 SQL Server を Azure Arc に自動的に接続しないように設定する場合は、Windows または Linux サーバーが Azure Arc に接続されたときに、名前が ArcSQLServerExtensionDeployment
、値が Disabled
のタグを追加することで、オプトアウトできます。
詳細については、「Azure Arc によって有効化された SQL Server の自動接続を管理する」を参照してください。
サービス プリンシパルを生成して Azure の詳細を収集する
スクリプトを実行してコンピューターを接続するには、次の手順を実行する必要があります。
大規模なオンボーディング用にサービス プリンシパルを作成する手順に従います。
- Azure Connected Machine のオンボード ロールをサービス プリンシパルに割り当て、ロールのスコープをターゲットの Azure サブスクリプションまたはリソース グループに制限します。
- 後でこれらの値が必要になるため、サービス プリンシパル シークレットとサービス プリンシパル クライアント ID を書き留めておいてください。
Azure Arc 対応リソースがオンボードされるテナント ID、サブスクリプション ID、リソース グループ、リージョンの詳細を収集します。
Ansible プレイブックをダウンロードする
マシンを Azure Arc 対応サーバーにオンボードする場合は、以下の Ansible プレイブック テンプレートをコピーし、プレイブックを arc-server-onboard-playbook.yml
として保存します。
---
- name: Onboard Linux and Windows Servers to Azure Arc-enabled servers with public endpoint connectivity
hosts: all
# vars:
# azure:
# service_principal_id: 'INSERT-SERVICE-PRINCIPAL-CLIENT-ID'
# service_principal_secret: 'INSERT-SERVICE-PRINCIPAL-SECRET'
# resource_group: 'INSERT-RESOURCE-GROUP'
# tenant_id: 'INSERT-TENANT-ID'
# subscription_id: 'INSERT-SUBSCRIPTION-ID'
# location: 'INSERT-LOCATION'
tasks:
- name: Check if the Connected Machine Agent has already been downloaded on Linux servers
stat:
path: /usr/bin/azcmagent
get_attributes: False
get_checksum: False
register: azcmagent_lnx_downloaded
when: ansible_system == 'Linux'
- name: Download the Connected Machine Agent on Linux servers
become: yes
get_url:
url: https://aka.ms/azcmagent
dest: ~/install_linux_azcmagent.sh
mode: '700'
when: (ansible_system == 'Linux') and (azcmagent_lnx_downloaded.stat.exists == false)
- name: Install the Connected Machine Agent on Linux servers
become: yes
shell: bash ~/install_linux_azcmagent.sh
when: (ansible_system == 'Linux') and (not azcmagent_lnx_downloaded.stat.exists)
- name: Check if the Connected Machine Agent has already been downloaded on Windows servers
win_stat:
path: C:\Program Files\AzureConnectedMachineAgent
register: azcmagent_win_downloaded
when: ansible_os_family == 'Windows'
- name: Download the Connected Machine Agent on Windows servers
win_get_url:
url: https://aka.ms/AzureConnectedMachineAgent
dest: C:\AzureConnectedMachineAgent.msi
when: (ansible_os_family == 'Windows') and (not azcmagent_win_downloaded.stat.exists)
- name: Install the Connected Machine Agent on Windows servers
win_package:
path: C:\AzureConnectedMachineAgent.msi
when: (ansible_os_family == 'Windows') and (not azcmagent_win_downloaded.stat.exists)
- name: Check if the Connected Machine Agent has already been connected
become: true
command:
cmd: azcmagent check
register: azcmagent_lnx_connected
ignore_errors: yes
when: ansible_system == 'Linux'
failed_when: (azcmagent_lnx_connected.rc not in [ 0, 16 ])
changed_when: False
- name: Check if the Connected Machine Agent has already been connected on windows
win_command: azcmagent check
register: azcmagent_win_connected
when: ansible_os_family == 'Windows'
ignore_errors: yes
failed_when: (azcmagent_win_connected.rc not in [ 0, 16 ])
changed_when: False
- name: Connect the Connected Machine Agent on Linux servers to Azure Arc
become: yes
shell: azcmagent connect --service-principal-id "{{ azure.service_principal_id }}" --service-principal-secret "{{ azure.service_principal_secret }}" --resource-group "{{ azure.resource_group }}" --tenant-id "{{ azure.tenant_id }}" --location "{{ azure.location }}" --subscription-id "{{ azure.subscription_id }}"
when: (ansible_system == 'Linux') and (azcmagent_lnx_connected.rc is defined and azcmagent_lnx_connected.rc != 0)
- name: Connect the Connected Machine Agent on Windows servers to Azure
win_shell: '& $env:ProgramFiles\AzureConnectedMachineAgent\azcmagent.exe connect --service-principal-id "{{ azure.service_principal_id }}" --service-principal-secret "{{ azure.service_principal_secret }}" --resource-group "{{ azure.resource_group }}" --tenant-id "{{ azure.tenant_id }}" --location "{{ azure.location }}" --subscription-id "{{ azure.subscription_id }}"'
when: (ansible_os_family == 'Windows') and (azcmagent_win_connected.rc is defined and azcmagent_win_connected.rc != 0)
Ansible プレイブックを変更する
Ansible プレイブックをダウンロードしたら、以下の手順を実行します。
Ansible プレイブック内の vars セクションにある変数を、先ほど収集した Azure の情報とサービス プリンシパルで変更します。
- サービス プリンシパル ID
- サービス プリンシパル シークレット
- リソース グループ
- テナント ID
- サブスクリプション ID
- リージョン
Azure Arc にオンボードするためのターゲット サーバーをキャプチャする適切なホスト フィールドを入力します。Ansible パターンを使用して、オンボードするハイブリッド マシンを選択的にターゲットにすることができます。
このテンプレートでは、Ansible プレイブックの変数としてサービス プリンシパル シークレットを渡します。 Ansible コンテナーを利用してこのシークレットを暗号化できる場合があることと、構成ファイルで変数を渡せる場合があることにご注意ください。
Ansible プレイブックを実行する
Ansible 制御ノードから、ansible-playbook
コマンドを呼び出して Ansible プレイブックを実行します。
ansible-playbook arc-server-onboard-playbook.yml
プレイブックの実行後、PLAY RECAP は、すべてのタスクが正常に完了したかどうかを示し、タスクが失敗したノードを表示します。
Azure Arc との接続を検証する
正常にエージェントをインストールし、Azure Arc 対応サーバーに接続するように構成したら、Azure portal に移動して、ターゲット ホストのサーバーが正常に接続されたことを確認します。 自分のマシンは Azure portal に表示されます。
次のステップ
- 計画と展開ガイドを参照して、任意の規模で Azure Arc 対応サーバーをデプロイし、一元的な管理と監視を実装する計画を立ててください。
- 接続のトラブルシューティング情報については、Connected Machine エージェントのトラブルシューティング ガイドに関するページを確認してください。
- Azure Policy を使用してマシンを管理する方法を確認します。VM のゲスト構成、予期された Log Analytics ワークスペースがマシンの報告先であることの確認、VM 分析情報を使用した監視の有効化などの方法です。