Partager via


Connecter des machines à l’échelle utilisant des playbooks Ansible

Vous pouvez intégrer des nœuds gérés par Ansible aux serveurs avec Azure Arc à grande échelle à l’aide de playbooks Ansible. Pour ce faire, vous devez télécharger, modifier, puis exécuter le playbook approprié.

Avant de commencer, veillez à consulter les conditions préalables et vérifiez que votre abonnement et vos ressources répondent aux exigences. Pour plus d'informations sur les régions prises en charge et d'autres considérations connexes, consultez Régions Azure prises en charge. Consultez également notre Guide de planification à grande échelle pour comprendre les critères de conception et de déploiement, ainsi que nos recommandations en matière de gestion et de surveillance.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Connexion automatique de SQL Server

Lorsque vous connectez un serveur Windows ou Linux sur lequel Microsoft SQL Server est également installé à Azure Arc, les instances SQL Server sont automatiquement connectées à Azure Arc. SQL Server activé par Azure Arc fournit un inventaire détaillé et des fonctionnalités de gestion supplémentaires pour vos instances et bases de données SQL Server. Dans le cadre du processus de connexion, une extension est déployée sur votre serveur avec Azure Arc et des nouveaux rôles seront appliqués à vos bases de données et SQL Server. Si vous ne souhaitez pas connecter automatiquement vos serveurs SQL Server à Azure Arc, vous pouvez choisir d’ajouter une balise au serveur Windows ou Linux avec le nom ArcSQLServerExtensionDeployment et la valeur Disabled lorsqu’il est connecté à Azure Arc.

Pour plus d’informations, consultez Gérer la connexion automatique pour SQL Server activée par Azure Arc.

Générer un principal de service et collecter les détails d’Azure

Avant de pouvoir exécuter le script pour connecter vos machines, vous devez effectuer les opérations suivantes :

  1. Effectuez les étapes permettant de créer un principal de service pour une intégration à grande échelle.

    • Attribuez le rôle Intégration Azure Connected Machine à votre principal de service et limitez l’étendue du rôle à l’abonnement ou au groupe de ressources Azure cible.
    • Notez l’identifiant client et le secret du principal de service, car vous aurez besoin de ces valeurs ultérieurement.
  2. Collectez des détails sur l’ID de locataire, l’ID d’abonnement, le groupe de ressources et la région où la ressource avec Azure Arc sera intégrée.

Télécharger le playbook Ansible

Si vous intégrez des machines à des serveurs avec Azure Arc, copiez le modèle de playbook Ansible suivant et enregistrez le playbook en tant que 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)

Modifier le playbook Ansible

Après avoir téléchargé le playbook Ansible, procédez comme suit :

  1. Dans le playbook Ansible, modifiez les variables sous la section vars avec le principal de service et les détails Azure collectés précédemment :

    • ID de principal de service
    • Secret du principal de service
    • Groupe de ressources
    • ID client
    • Identifiant d’abonnement
    • Région
  2. Entrez le champ hôte approprié qui capture les serveurs cibles pour l’intégration à Azure Arc. Vous pouvez utiliser des modèles Ansible pour cibler de manière sélective les machines hybrides à intégrer.

  3. Ce modèle transmet le secret du principal de service en tant que variable dans le playbook Ansible. Notez qu’un coffre Ansible peut être utilisé pour chiffrer ce secret et que les variables peuvent être passées par le biais d’un fichier de configuration.

Exécuter le playbook Ansible

À partir du nœud de contrôle Ansible, exécutez le playbook Ansible en appelant la commande ansible-playbook :

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

Une fois le playbook exécuté, le RÉCAP PLAY indique si toutes les tâches ont été effectuées avec succès et tous les nœuds où les tâches ont échoué.

Vérifier la connexion avec Azure Arc

Après avoir correctement installé l’agent et l’avoir configuré pour qu’il se connecte aux serveurs avec Azure Arc, accédez au Portail Azure pour vérifier que les serveurs de vos hôtes cibles se sont connectés. Affichez vos machines dans le portail Azure.

Étapes suivantes