Delen via


Computers op schaal verbinden met Ansible-playbooks

U kunt ansible-beheerde knooppunten op schaal onboarden naar servers met Azure Arc met behulp van Ansible-playbooks. Hiervoor moet u het juiste playbook downloaden, wijzigen en vervolgens uitvoeren.

Voordat u aan de slag gaat, moet u de vereisten controleren en verifiëren of uw abonnement en resources aan de vereisten voldoen. Zie ondersteunde Azure-regio's voor informatie over ondersteunde regio's en andere gerelateerde overwegingen. Bekijk ook onze planningshandleiding op schaal om inzicht te hebben in de ontwerp- en implementatiecriteria, evenals onze aanbevelingen voor beheer en bewaking.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Automatische verbinding voor SQL Server

Wanneer u een Windows- of Linux-server verbindt met Azure Arc waarop ook Microsoft SQL Server is geïnstalleerd, worden de SQL Server-exemplaren ook automatisch verbonden met Azure Arc. SQL Server ingeschakeld door Azure Arc biedt een gedetailleerde inventarisatie en aanvullende beheermogelijkheden voor uw SQL Server-exemplaren en -databases. Als onderdeel van het verbindingsproces wordt een extensie geïmplementeerd op uw server met Azure Arc en worden nieuwe rollen toegepast op uw SQL Server en databases. Als u uw SQL-servers niet automatisch wilt verbinden met Azure Arc, kunt u zich afmelden door een tag toe te voegen aan de Windows- of Linux-server met de naam ArcSQLServerExtensionDeployment en waarde Disabled wanneer deze is verbonden met Azure Arc.

Zie Automatische verbinding beheren voor SQL Server ingeschakeld door Azure Arc voor meer informatie.

Een service-principal genereren en Azure-details verzamelen

Voordat u het script kunt uitvoeren om uw computers te verbinden, moet u het volgende doen:

  1. Volg de stappen om een service-principal te maken voor onboarding op schaal.

    • Wijs de onboardingrol voor Azure Connected Machine toe aan uw service-principal en beperk het bereik van de rol tot het Azure-doelabonnement of de doelresourcegroep.
    • Noteer het service-principalgeheim en de client-id van de service-principal; u hebt deze waarden later nodig.
  2. Verzamel details over de tenant-id, abonnements-id, resourcegroep en regio waar de azure Arc-resource wordt toegevoegd.

Het Ansible-playbook downloaden

Als u machines onboardt op servers met Azure Arc, kopieert u de volgende Ansible-playbooksjabloon en slaat u het playbook op als 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)

Het Ansible-playbook wijzigen

Nadat u het Ansible-playbook hebt gedownload, voert u de volgende stappen uit:

  1. Wijzig in het Ansible-playbook de variabelen in de sectie vars met de service-principal en Azure-gegevens die eerder zijn verzameld:

    • Service-principal-id
    • Service-principalgeheim
    • Resourcegroep
    • Tenant-id
    • Abonnements-id
    • Regio
  2. Voer het juiste hostveld in waarmee de doelservers worden vastgelegd voor onboarding naar Azure Arc. U kunt Ansible-patronen gebruiken om selectief te richten op welke hybride machines moeten worden ge onboardd.

  3. Met deze sjabloon wordt het geheim van de service-principal doorgegeven als een variabele in het Ansible-playbook. Houd er rekening mee dat een Ansible-kluis kan worden gebruikt om dit geheim te versleutelen en dat de variabelen kunnen worden doorgegeven via een configuratiebestand.

Het Ansible-playbook uitvoeren

Voer vanuit het knooppunt van het Ansible-besturingselement het Ansible-playbook uit door de ansible-playbook opdracht aan te roepen:

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

Nadat het playbook is uitgevoerd, geeft play RECAP aan of alle taken zijn voltooid en knooppunten waarop taken zijn mislukt, worden weergegeven.

De verbinding met Azure Arc controleren

Nadat u de agent hebt geïnstalleerd en geconfigureerd om verbinding te maken met servers met Azure Arc, gaat u naar Azure Portal om te controleren of de servers in uw doelhosts verbinding hebben gemaakt. Bekijk uw computers in Azure Portal.

Volgende stappen

  • Raadpleeg de plannings- en implementatiehandleiding voor het plannen van de implementatie van servers met Azure Arc op elke schaal en implementeer gecentraliseerd beheer en bewaking.
  • Bekijk de informatie over het oplossen van verbindingsproblemen in de handleiding Problemen met de connected machine-agent oplossen.
  • Meer informatie over het beheren van uw machine met behulp van Azure Policy voor zaken zoals vm-gastconfiguratie, het controleren of de machine rapporteert aan de verwachte Log Analytics-werkruimte, het inschakelen van bewaking met VM-inzichten en nog veel meer.