Puede integrar Ansible Tower con Cloud Assembly 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 Tower a implementaciones nuevas o existentes desde el editor de plantillas de nube.
Requisitos previos
- Otorgue a los usuarios que no sean administradores los permisos adecuados para acceder a Ansible Tower. 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 Tower 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 Tower 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.
- Inicie sesión en Ansible Tower 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 Tower. 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 Cloud Assembly. 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 Cloud Assembly.
- Puede ver la ejecución de las plantillas de trabajo o de flujo de trabajo invocadas desde Cloud Assembly 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 Tower 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 Tower al lienzo.
- Utilice el panel de la derecha para configurar las propiedades de Ansible Tower adecuadas, por ejemplo, las plantillas de trabajo.
Cuando agrega un mosaico de Ansible Tower a una plantilla de nube, vRealize Automation crea la entrada de host para la máquina virtual asociada en Ansible Tower. De forma predeterminada, vRealize 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, vRealize 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 Tower, 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 Tower 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, vRealize 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 Tower 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 Tower. 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.