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.

    1. Inicie sesión en Ansible Tower y desplácese a la sección Plantillas.
    2. 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.
    3. 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

  1. Seleccione Infraestructura > Conexiones > Integraciones y haga clic en Agregar integración.
  2. Haga clic en Ansible Tower.
    Se abrirá la página de configuración de Ansible.
  3. Introduzca el nombre de host, que puede ser una dirección IP y otra información necesaria para la instancia de Ansible Tower.
  4. Introduzca la información pertinente en los campos Nombre de usuario y Contraseña de la autenticación basada en interfaz de usuario para la instancia correspondiente de Ansible Tower.
  5. Haga clic en Validar para verificar la integración.
  6. Introduzca un valor apropiado para Nombre y Descripción para la integración.
  7. Haga clic en Agregar.

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.

  1. 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.
  2. 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.

Nota: Las versiones anteriores de vRealize Automation solo admitían la ejecución de plantillas de trabajo mediante el esquema jobTemplate en la plantilla de nube. jobTemplate ya está obsoleto y podría eliminarse en futuras versiones. Por ahora, el uso de la propiedad jobTemplate seguirá funcionando según lo esperado. Para ejecutar plantillas de flujo de trabajo y utilizar funciones adicionales, se recomienda utilizar el esquema de plantillas.

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.