次の方法で共有


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 の詳細を収集する

スクリプトを実行してコンピューターを接続するには、次の手順を実行する必要があります。

  1. 大規模なオンボーディング用にサービス プリンシパルを作成する手順に従います。

    • Azure Connected Machine のオンボード ロールをサービス プリンシパルに割り当て、ロールのスコープをターゲットの Azure サブスクリプションまたはリソース グループに制限します。
    • 後でこれらの値が必要になるため、サービス プリンシパル シークレットとサービス プリンシパル クライアント ID を書き留めておいてください。
  2. 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 プレイブックをダウンロードしたら、以下の手順を実行します。

  1. Ansible プレイブック内の vars セクションにある変数を、先ほど収集した Azure の情報とサービス プリンシパルで変更します。

    • サービス プリンシパル ID
    • サービス プリンシパル シークレット
    • リソース グループ
    • テナント ID
    • サブスクリプション ID
    • リージョン
  2. Azure Arc にオンボードするためのターゲット サーバーをキャプチャする適切なホスト フィールドを入力します。Ansible パターンを使用して、オンボードするハイブリッド マシンを選択的にターゲットにすることができます。

  3. このテンプレートでは、Ansible プレイブックの変数としてサービス プリンシパル シークレットを渡します。 Ansible コンテナーを利用してこのシークレットを暗号化できる場合があることと、構成ファイルで変数を渡せる場合があることにご注意ください。

Ansible プレイブックを実行する

Ansible 制御ノードから、ansible-playbook コマンドを呼び出して Ansible プレイブックを実行します。

ansible-playbook arc-server-onboard-playbook.yml

プレイブックの実行後、PLAY RECAP は、すべてのタスクが正常に完了したかどうかを示し、タスクが失敗したノードを表示します。

Azure Arc との接続を検証する

正常にエージェントをインストールし、Azure Arc 対応サーバーに接続するように構成したら、Azure portal に移動して、ターゲット ホストのサーバーが正常に接続されたことを確認します。 自分のマシンは Azure portal に表示されます。

次のステップ