Verbinden von Computern zur Skalierung unter Verwendung von Ansible Playbooks

Sie können in Ansible verwaltete Knoten mithilfe von Ansible Playbooks auf Azure Arc-aktivierten Servern integrieren. Dazu müssen Sie das entsprechende Playbook herunterladen, ändern und dann ausführen.

Bevor Sie beginnen, sollten Sie die Voraussetzungen überprüfen und sicherstellen, dass Ihr Abonnement und Ihre Ressourcen auch diese Anforderungen erfüllen. Informationen zu unterstützten Regionen und andere Überlegungen finden Sie unter Unterstützte Azure-Regionen. Machen Sie sich anhand unseres Leitfadens unter Planen und Bereitstellen von Servern mit Arc-Unterstützung auch mit den Entwurfs- und Bereitstellungskriterien sowie mit unseren Verwaltungs- und Überwachungsempfehlungen vertraut.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Automatische Verbindung für SQL Server

Wenn Sie einen Windows- oder Linux-Server, auf dem auch Microsoft SQL Server installiert ist, mit Azure Arc verbinden, werden die SQL Server-Instanzen automatisch auch mit Azure Arc verbunden. SQL Server mit Azure Arc-Unterstützung bietet eine detaillierte Inventur und zusätzliche Verwaltungsfunktionen für Ihre SQL Server-Instanzen und -Datenbanken. Im Rahmen des Verbindungsprozesses wird eine Erweiterung auf Ihrem Server mit Azure Arc-Unterstützung bereitgestellt, und neue Rollen werden auf SQL Server und Datenbanken angewendet. Wenn Sie Ihre SQL Server-Instanzen nicht automatisch mit Azure Arc verbinden möchten, können Sie diese Option deaktivieren, indem Sie dem Windows- oder Linux-Server ein Tag mit dem Namen ArcSQLServerExtensionDeployment und dem Wert Disabled hinzufügen, wenn er mit Azure Arc verbunden ist.

Weitere Informationen finden Sie unter Verwalten der automatischem Verbindung von SQL Server mit Azure Arc-Unterstützung.

Generieren eines Dienstprinzipals und Sammeln von Azure-Details

Bevor Sie das Skript zum Verbinden Ihrer Computer ausführen können, müssen Sie folgende Schritte ausführen:

  1. Befolgen Sie die Schritte zum Erstellen eines Dienstprinzipals für Onboarding im großen Stil.

    • Weisen Sie Ihrem Dienstprinzipal die Rolle Onboarding verbundener Azure-Computer zu und beschränken Sie den Geltungsbereich der Rolle auf das Azure-Zielzone,-Abonnemnt.
    • Notieren Sie sich die Dienstprinzipal-ID und das Dienstprinzipalgeheimnis, da Sie diese Werte später benötigen.
  2. Sammeln Sie Details zur Mandanten-ID, Abonnement-ID, Ressourcengruppe und Region, in der die Azure Arc-aktivierte Ressource integriert wird.

Führen Sie das Ansible Playbook aus

Wenn Sie Computer auf Azure Arc-fähigen Servern einbinden, kopieren Sie die folgende Ansible Playbook-Vorlage und speichern das Playbook 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)

Führen Sie das Ansible Playbook aus

Stellen Sie nach dem Herunterladen des Ansible Playbook die folgenden Schritte fertig:

  1. Ändern Sie im Ansible Playbook die Variablen im Abschnitt „Vars“ anhand des Dienstprinzipals und der Azure-Details, die Sie zuvor gesammelt haben:

    • Dienstprinzipal-ID:
    • Geheimnis des Dienstprinzipals
    • Ressourcengruppe
    • Mandanten-ID
    • Abonnement-ID
    • Region
  2. Wechseln Sie in das richtige „Hosts“-Feld, das die Zielserver für das Onboarding in Azure Arc erfasst. Sie können Ansible-Muster verwenden, um selektiv auf die Hybridcomputer abzuzielen, für die ein Onboarding durchgeführt werden soll.

  3. Diese Vorlage übergibt das Dienstprinzipalgeheimnis als Variable im Ansible-Playbook. Beachten Sie, dass ein Ansible-Tresor verwendet werden könnte, um dieses Geheimnis zu verschlüsseln, und dass die Variablen über eine Konfigurationsdatei übergeben werden könnten.

Führen Sie das Ansible Playbook aus

Führen Sie im Ansible-Steuerelementknoten das Ansible Playbook aus, indem Sie den ansible-playbook-Befehl aufrufen:

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

Nachdem das Playbook ausgeführt wurde, gibt die PLAY RECAP an, ob alle Vorgänge erfolgreich abgeschlossen wurden und alle Knoten angezeigt werden, auf denen Vorgänge fehlgeschlagen sind.

Überprüfen der Verbindung mit Azure Arc

Nachdem Sie den Agent erfolgreich installiert und zum Herstellen einer Verbindung mit Azure Arc-aktivierten Servern konfiguriert haben, wechseln Sie zum Azure-Portal, um zu überprüfen, ob die Server in Ihren Zielhosts erfolgreich verbunden sind. Zeigen Sie Ihre Computer im Azure-Portal an.

Nächste Schritte