Puede integrar Ansible Automation Platform, anteriormente Ansible Tower, con Automation Assembler para admitir la administración de la configuración de los recursos implementados. Después de configurar la integración, es posible agregar componentes virtuales de Ansible Automation Platform a implementaciones nuevas o existentes desde el editor de plantillas de nube.
Si utiliza vSphere, debe configurar un proxy de nube.
Requisitos previos
- Otorgue a los usuarios que no sean administradores los permisos adecuados para acceder a Ansible Automation Platform. Existen dos opciones que funcionan para la mayoría de las configuraciones. Elija la más adecuada para su configuración.
- Otorgue a los usuarios funciones de administrador de inventario y administrador de plantillas de trabajo en el nivel de la organización.
- Otorgue a los usuarios permisos de administrador para un inventario en particular y la función de ejecución para todas las plantillas de trabajo utilizadas para el aprovisionamiento.
-
Debe configurar las credenciales y las plantillas adecuadas en Ansible Automation Platform para utilizarlas con sus implementaciones. Las plantillas pueden ser plantillas de trabajo o de flujo de trabajo. Las plantillas de trabajo definen el inventario y la guía para su uso con una implementación. Existe una asignación 1:1 entre una plantilla de trabajo y una guía. Las guías usan una sintaxis similar a YAML para definir las tareas que están asociadas a la plantilla. Para la mayoría de las implementaciones típicas, utilice las credenciales de máquina para la autenticación.
Las plantillas de flujo de trabajo permiten a los usuarios crear secuencias que consisten en cualquier combinación de plantillas de trabajo, sincronizaciones de proyectos y sincronizaciones de inventario vinculadas entre sí para que pueda ejecutarlas como una sola unidad. El visualizador de flujos de trabajo de Ansible Automation Platform ayuda a los usuarios a diseñar plantillas de flujo de trabajo. Para la mayoría de las implementaciones típicas, se pueden usar las credenciales de máquina para la autenticación.
Si trabaja con Ansible Automation Platform, debe definir un entorno de ejecución en Ansible Controller para satisfacer las dependencias de Ansible Runner. Para obtener más información sobre entornos de ejecución e imágenes de contenedor, consulte la documentación de Ansible. En particular, consulte https://docs.ansible.com/automation-controller/4.2.0/html/userguide/execution_environments.html.
- Inicie sesión en Ansible Automation Platform y desplácese a la sección Plantillas.
- Seleccione Agregar una nueva plantilla de trabajo.
- Seleccione la credencial que haya creado. Estas son las credenciales de la máquina que administrará Ansible Automation Platform. Para cada plantilla de trabajo, puede haber un objeto de credenciales.
- Para la selección de límite, seleccione Preguntar al iniciar. Esto garantiza que la plantilla de trabajo se ejecute en el nodo que se va a aprovisionar o cuya provisión se va a anular desde Automation Assembler. Si no se selecciona esta opción, el error Límite no establecido aparecerá cuando se implemente el blueprint que contiene la plantilla de trabajo.
- Seleccione Agregar una nueva plantilla de flujo de trabajo.
- Seleccione las credenciales que ya creó y, a continuación, defina el inventario. Con el visualizador de flujos de trabajo, diseñe la plantilla de flujo de trabajo.
En la casilla Límite de plantillas de flujo de trabajo o de trabajo, por lo general, se puede seleccionar Preguntar al iniciar. Esta selección garantiza que la plantilla de trabajo o de flujo de trabajo se ejecute en el nodo que se aprovisionará o cuya provisión se va a anular desde Automation Assembler.
- Puede ver la ejecución de las plantillas de trabajo o de flujo de trabajo invocadas desde Automation Assembler en la pestaña Trabajos de Ansible Tower.
Procedimiento
Resultados
Ansible Tower está disponible para su uso con plantillas de nube.
Qué hacer a continuación
Agregue componentes de Ansible Automation Platform a las plantillas de nube que desee. Debe especificar la plantilla de trabajo aplicable con permiso de ejecución para el usuario especificado en la cuenta de integración.
- En la página de lienzo de plantilla de nube, seleccione Ansible en el encabezado Administración de la configuración del menú de opciones de blueprint y arrastre el componente Ansible Automation Platform al lienzo.
- Utilice el panel de la derecha para configurar las propiedades de Ansible Automation Platform adecuadas. Por ejemplo, las plantillas de trabajo.
Cuando agrega un mosaico de Ansible Automation Platform a una plantilla de nube, VMware Aria Automation crea la entrada de host para la máquina virtual asociada en Ansible Automation Platform. De forma predeterminada, VMware Aria Automation utiliza el nombre del recurso de la máquina virtual para crear la entrada de host, pero puede especificar cualquier nombre mediante la propiedad hostName
en el YAML del blueprint. Para comunicarse con la máquina, VMware Aria Automation crea la variable de host ansible_host: IP Address
para la entrada del host. Puede anular el comportamiento predeterminado para configurar la comunicación mediante el FQDN especificando la palabra clave ansible_host
en hostVariables
y proporcionando el FQDN como su valor. El siguiente fragmento de código de YAML muestra un ejemplo de cómo se puede configurar la comunicación de nombre de host y FQDN:
Cloud_Ansible_Tower_1: type: Cloud Ansible Tower properties: host: name of host account: name of account hostName: resource name hostVariables: ansible_host:Host FQDN
En este ejemplo, se reemplaza el valor ansible_host
predeterminado proporcionando el FQDN. Esto puede resultar útil para los usuarios que desean que Ansible Tower se conecte a la máquina host mediante el FQDN.
El valor predeterminado de hostVariables
en el YAML es ansible_host:IP_address
y la dirección IP se utiliza para comunicarse con el servidor.
Si la propiedad de recuento de YAML es superior a 1 para Ansible Automation Platform, el nombre de host podría asignarse a cualquiera de las propiedades de la máquina virtual correspondiente. El siguiente ejemplo muestra la asignación de un recurso de máquina virtual con el nombre Ubuntu-VM si se desea asignar su propiedad de dirección al nombre de host.
hostname: '${resource.Ubuntu-VM.address[count.index]}'
Cuando agrega un componente de Ansible Automation Platform a una plantilla de nube, puede especificar la plantilla de trabajo a la cual llamar en el YAML de la plantilla de nube. También puede especificar plantillas de flujo de trabajo, o una combinación de plantillas de trabajo y plantillas de flujo de trabajo. Si no especifica el tipo de plantilla, de forma predeterminada, VMware Aria Automation supone que está llamando a una plantilla de trabajo.
El siguiente fragmento de YAML muestra un ejemplo de cómo se puede llamar a una combinación de plantillas de trabajo y flujo de trabajo en una plantilla de nube de Ansible Tower.
Cloud_Ansible_1: type: Cloud.Ansible.Tower properties: host: ‘${resource.CentOS_Machine.*}’ account: maxConnectionRetries: 2 maxJobRetries: 2 templates: provision: - name: My workflow type: workflow - name: My job template
Se agregaron maxConnectionsRetries
y maxJobRetries
para gestionar errores relacionados con Ansible. Las plantillas de nube aceptan el valor personalizado y, si no se proporciona ningún valor, utiliza el valor predeterminado. Para maxConnectionRetries
, el valor predeterminado es 10 y para maxJobRetries
el valor predeterminado es 3.
Las plantillas de nube de Cloud Assembly para integraciones de Ansible Automation Platform incluyen la propiedad useDefaultLimit
con un valor verdadero o falso para definir dónde se ejecutan las plantillas de Ansible. Las plantillas de Ansible pueden ser plantillas de trabajo o de flujo de trabajo. Si este valor se establece en verdadero, las plantillas especificadas se ejecutan en la máquina especificada en el cuadro Límite de la página Plantillas de Ansible. Si el valor se establece en falso, las plantillas se ejecutan en la máquina aprovisionada, pero los usuarios deben activar la casilla Preguntar al iniciar en la página Plantillas de Ansible Automation Platform. De forma predeterminada, el valor de esta propiedad es false. El siguiente ejemplo de YAML muestra cómo aparece la propiedad useDefaultLimit
en las plantillas de nube.
templates: provision: - name: ping aws_credentials type: job useDefaultLimit: false extraVars: '{"rubiconSurveyJob" : "checkSurvey"}'
Además, como se muestra en el ejemplo anterior, puede utilizar la propiedad extraVars
para especificar variables adicionales o variables de encuesta. Esta capacidad puede ser útil para ejecutar plantillas que requieren entradas. Si un usuario ha mantenido la variable de encuesta, debe enviar la variable en la sección extraVars
de la plantilla de nube para evitar errores.
Los usuarios con privilegios de administrador de nube pueden cambiar el proyecto de una implementación que contenga recursos de código abierto de Ansible y Ansible Automation Platform. La funcionalidad está disponible como una acción del día 2 en el nivel de implementación.
Para cambiar el proyecto de una implementación de Ansible, seleccione la opción Cambiar proyecto en el menú Acciones de la implementación, como se muestra en la página Implementaciones de Cloud Assembly, seleccione el proyecto de destino y haga clic en Enviar en el cuadro de diálogo que se muestra.
Si bien la integración de Ansible Tower no admite la propiedad de grupos, existe una alternativa para que los clientes implementen funcionalidades equivalentes mediante etiquetas de máquina virtual y el complemento de inventario de VMware, como se describe en el siguiente artículo: https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_vm_inventory_inventory.html
- Utilice
ansible_host
(p. ej., FQDN) yhostName
en la plantilla de nube. - En AWX, active la actualización en la marca de inicio; es decir, sincronice con la instancia de vCenter los hosts nuevos antes de ejecutar el cuaderno de estrategias. La sincronización combinará las entradas de host de FQDN agregadas por VMware Aria Automation e importadas por el complemento de inventario de VMware y asignará hosts a los grupos. Los grupos de inventario se crean a partir de los valores de etiquetas de máquina virtual mediante las variables de origen de sincronización anteriores.
Para ver un ejemplo de implementación, consulte la siguiente plantilla de nube.
# Created by Quickstart wizard. name: RHEL 8 version: 0.0.1 formatVersion: 1 inputs: image: type: string description: Select an OS Version default: RHEL 8 Base enum: - RHEL 8 Base - RHEL 7 Base AWX: type: string description: Choose AWX Environment enum: - LabAWX - FA/CC-AWX envrionmnetTag: type: string description: Choose VM Environment enum: - cel - mag - wdr purposeTag: type: string description: Choose Server Purpose default: '' enum: - '' - mariadb - oracle authGroupTag: type: string description: Choose Authentication Group default: '' enum: - '' - dbo_linux - oracle - postgres hostname: type: string description: Desired hostname default: changeme cpuCount: type: integer description: Number of virtual processors default: 1 totalMemoryMB: type: integer description: Machine virtual memory size in Megabytes default: 1024 disk1Size: type: integer description: A SIZE of 0 will disable the disk and it will not be provisioned. default: 0 disk2Size: type: integer description: A SIZE of 0 will disable the disk and it will not be provisioned. default: 0 neededip: type: string description: Enter an available IP Address title: Needed-IP-Address vlan: type: string description: Enter in needed vlan title: Enter VLAN ID example "vl500" resources: Cloud_Ansible_Tower_1: type: Cloud.Ansible.Tower metadata: layoutPosition: - 0 - 0 properties: host: ${resource.Cloud_vSphere_Machine_1.*} account: ${input.AWX} hostName: ${input.hostname} hostVariables: ansible_host: ${input.hostname}.dcl.wdpr.disney.com templates: provision: - name: Linux-Role Cloud_vSphere_Machine_1: type: Cloud.vSphere.Machine metadata: layoutPosition: - 0 - 1 properties: image: ${input.image} Infoblox.IPAM.Network.dnsSuffix: dcl.wdpr.disney.com Infoblox.IPAM.Network.dnsView: Internal customizationSpec: Rhel7Base name: ${input.hostname} cpuCount: ${input.cpuCount} totalMemoryMB: ${input.totalMemoryMB} attachedDisks: ${map_to_object(resource.Cloud_Volume_1[*].id + resource.Cloud_Volume_2[*].id, "source")} networks: - network: ${resource.Cloud_vSphere_Network_1.id} assignment: static address: ${input.neededip} tags: - key: Server-Team value: ${input.envrionmnetTag} - key: Server-Team value: ${input.purposeTag} - key: Server-Team value: ${input.authGroupTag} Cloud_Volume_1: type: Cloud.Volume metadata: layoutPosition: - 0 - 2 properties: count: '${input.disk1Size == 0 ? 0 : 1 }' capacityGb: ${input.disk1Size} Cloud_Volume_2: type: Cloud.Volume metadata: layoutPosition: - 0 - 3 properties: count: '${input.disk2Size == 0 ? 0 : 1}' capacityGb: ${input.disk2Size} Cloud_vSphere_Network_1: type: Cloud.vSphere.Network metadata: layoutPosition: - 1 - 0 properties: networkType: existing constraints: - tag: ${input.vlan}