Compartir a través de


Conexión de máquinas a gran escala mediante cuadernos de estrategias de Ansible

Puede incorporar nodos administrados por Ansible a servidores habilitados para Azure Arc a gran escala mediante cuadernos de estrategias de Ansible. Para ello, deberá descargar, modificar y, a continuación, ejecutar el cuaderno de estrategias adecuado.

Antes de comenzar, asegúrese de revisar los requisitos previos y compruebe que su suscripción y sus recursos los cumplen. Para obtener información sobre las regiones admitidas y otras consideraciones relacionadas, consulte Regiones de Azure admitidas. Revise también nuestra guía de planeamiento a gran escala para comprender los criterios de diseño e implementación, así como nuestras recomendaciones de administración y supervisión.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Conexión automática para SQL Server

Al conectar un servidor Windows o Linux a Azure Arc que también tenga instalado Microsoft SQL Server, las instancias de SQL Server también se conectarán automáticamente a Azure Arc. SQL Server habilitado para Azure Arc proporciona un inventario detallado y funcionalidades de administración adicionales para las instancias y bases de datos de SQL Server. Como parte del proceso de conexión, se implementa una extensión en el servidor habilitado para Azure Arc y se aplicarán nuevos roles a las bases de datos y SQL Server. Si no desea conectar automáticamente los servidores SQL Server a Azure Arc, puede optar por agregar una etiqueta al servidor Windows o Linux con el nombre ArcSQLServerExtensionDeployment y el valor Disabled cuando esté conectado a Azure Arc.

Para más información, consulte Administración de la conexión automática para SQL Server habilitado por Azure Arc.

Generación de una entidad de servicio y recopilación de información de Azure

Antes de ejecutar el script y así conectar las máquinas, deberá hacer lo siguiente:

  1. Siga los pasos para crear una entidad de servicio para la incorporación a gran escala.

    • Asigne el rol de incorporación de Azure Connected Machine a la entidad de servicio y limite el ámbito del rol a la suscripción o grupo de recursos de Azure de destino.
    • Anote el secreto de la entidad de servicio y el id. de cliente de la entidad de servicio, ya que necesitará estos valores más adelante.
  2. Recopile los datos del identificador de inquilino, el identificador de suscripción, el grupo de recursos y la región donde se incorporará el recurso habilitado para Azure Arc.

Descargue del cuaderno de estrategias de Ansible

Si va a incorporar máquinas a servidores habilitados para Azure Arc, copie la siguiente plantilla de cuaderno de estrategias de Ansible y guarde el cuaderno de estrategias como 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)

Modifique el cuaderno de estrategias de Ansible

Después de descargar el cuaderno de estrategias de Ansible, complete los pasos siguientes:

  1. En el cuaderno de estrategias de Ansible, modifique las variables en la sección vars con la entidad de servicio y los detalles de Azure recopilados anteriormente:

    • Id. de entidad de servicio
    • Secreto de entidad de servicio
    • Grupo de recursos
    • Id. de inquilino
    • Id. de suscripción
    • Region
  2. Escriba el campo de hosts correcto que captura los servidores de destino para la incorporación a Azure Arc. Puede emplear patrones de Ansible para seleccionar las máquinas híbridas que se van a incorporar.

  3. Esta plantilla pasa el secreto de la entidad de servicio como una variable en el cuaderno de estrategias de Ansible. Tenga en cuenta que se podría usar un almacén de Ansible para cifrar este secreto y las variables se podrían pasar a través de un archivo de configuración.

Ejecute el cuaderno de estrategias de Ansible

Desde el nodo de control de Ansible, ejecute el cuaderno de estrategias de Ansible invocando el comando ansible-playbook:

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

Una vez ejecutado el cuaderno de estrategias, PLAY RECAP indicará si todas las tareas se completaron correctamente y mostrará en qué nodos las tareas produjeron un error.

Comprobación de la conexión con Azure Arc

Después de instalar el agente y configurarlo para que se conecte a los servidores habilitados para Azure Arc, vaya a Azure Portal para comprobar que los servidores de sus hosts de destino se han conectado correctamente. Vea las máquinas en Azure Portal.

Pasos siguientes