Condividi tramite


Connettere computer su larga scala usando i playbook Ansible

È possibile eseguire l'onboarding di nodi gestiti da Ansible nei server abilitati per Azure Arc su larga scala usando i playbook Ansible. A tale scopo, è necessario scaricare, modificare ed eseguire il playbook appropriato.

Prima di iniziare, esaminare i prerequisiti e verificare che la sottoscrizione e le risorse soddisfino i requisiti. Per informazioni sulle aree supportate e altre considerazioni correlate, vedere Aree di Azure supportate. Esaminare anche la guida alla pianificazione su larga scala per comprendere i criteri di progettazione e distribuzione, nonché le raccomandazioni di gestione e monitoraggio.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Connessione automatica per SQL Server

Quando si connette un server Windows o Linux ad Azure Arc in cui è installato anche Microsoft SQL Server, anche le istanze di SQL Server verranno connesse automaticamente ad Azure Arc. SQL Server abilitato da Azure Arc offre un inventario dettagliato e funzionalità di gestione aggiuntive per le istanze e i database di SQL Server. Come parte del processo di connessione, un'estensione viene distribuita nel server abilitato per Azure Arc e i nuovi ruoli verranno applicati ai database e a SQL Server. Se non si vuole connettere automaticamente SQL Server ad Azure Arc, è possibile rifiutare aggiungendo un tag al server Windows o Linux con il nome ArcSQLServerExtensionDeployment e il valore Disabled quando è connesso ad Azure Arc.

Per ulteriori informazioni, vedere Gestione delle connessioni automatiche per SQL Server abilitato da Azure Arc.

Generare un'entità servizio e raccogliere i dettagli di Azure

Prima di poter eseguire lo script per connettere i computer, è necessario eseguire le operazioni seguenti:

  1. Seguire la procedura per creare un'entità servizio per l'onboarding su larga scala.

    • Assegnare il ruolo di onboarding di Azure Connected Machine all'entità servizio e limitare l'ambito del ruolo alla sottoscrizione o al gruppo di risorse di Azure di destinazione.
    • Prendere nota del segreto dell'entità servizio e dell'ID client dell'entità servizio; questi valori saranno necessari in un secondo momento.
  2. Raccogliere i dettagli relativi a ID tenant, ID sottoscrizione, gruppo di risorse e area in cui verrà eseguito l'onboarding della risorsa abilitata per Azure Arc.

Scaricare il playbook Ansible

Se si esegue l'onboarding dei computer nei server abilitati per Azure Arc, copiare il modello di playbook Ansible seguente e salvare il playbook come 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)

Modificare il playbook Ansible

Dopo aver scaricato il playbook Ansible, completare la procedura seguente:

  1. Nel playbook Ansible modificare le variabili nella sezione vars con l'entità servizio e i dettagli di Azure raccolti in precedenza:

    • ID dell'entità servizio
    • Segreto dell'entità servizio
    • Gruppo di risorse
    • ID tenant
    • ID sottoscrizione
    • Paese
  2. Immettere il campo host corretto che acquisisce i server di destinazione per l'onboarding in Azure Arc. È possibile usare modelli Ansible per definire in modo selettivo i computer ibridi di cui eseguire l'onboarding.

  3. Questo modello passa il segreto dell'entità servizio come variabile nel playbook Ansible. Si noti che è possibile usare un insieme di credenziali Ansible per crittografare questo segreto e che le variabili potrebbero essere passate tramite un file di configurazione.

Eseguire il playbook Ansible

Dal nodo di controllo Ansible, eseguire il playbook Ansible richiamando il comando ansible-playbook:

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

Dopo l'esecuzione del playbook, PLAY RECAP indicherà se tutte le attività sono state completate correttamente e mostrerà eventuali nodi in cui le attività non sono riuscite.

Verificare la connessione con Azure Arc

Dopo aver installato correttamente l'agente e dopo averlo configurato per la connessione ai server abilitati per Azure Arc, passare al portale di Azure per verificare che i server negli host di destinazione siano stati connessi correttamente. Visualizzare i computer nel portale di Azure.

Passaggi successivi