Cloud Assembly admite la integración con la administración de la configuración de Puppet Enterprise.

Cuando agrega Puppet Enterprise a Cloud Assembly como un sistema externo, está disponible en todos los proyectos de forma predeterminada. Sin embargo, puede restringirlo a proyectos específicos.

Para agregar una integración de Puppet Enterprise, debe tener el nombre de la instancia principal de Puppet y el nombre de host o la dirección IP de la instancia principal.

Puede encontrar registros de Puppet en la siguiente ubicación en caso de que necesite revisarlos para buscar errores o información.

Descripción Ubicación de registro
Registro para eventos relacionados con la creación y la instalación

Los registros se encuentran en la máquina implementada en `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`.

Consulte el archivo log.txt para ver los registros completos. Para obtener los registros detallados del agente de Puppet, consulte https://puppet.com/docs/puppet/4.8/services_agent_unix.html#logging
Registro para tareas relacionadas con la eliminación y la ejecución de Puppet Los registros se encuentran en PE en `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`. Consulte el archivo log.txt para ver los registros completos.

Procedimiento

  1. Seleccione Infraestructura > Conexiones > Integraciones y haga clic en Agregar integración.
  2. Seleccione Puppet.
  3. Introduzca la información requerida en la página de configuración de Puppet.
    Para que la integración de Puppet funcione correctamente, las credenciales proporcionadas deben ser válidas tanto para SSH como para la cuenta de API. Además, las cuentas de usuario del sistema operativo y de la aplicación especificadas deben tener el mismo nombre de usuario y la misma contraseña.
  4. Haga clic en Validar para comprobar la integración.
  5. Haga clic en Agregar.

Resultados

Puppet está disponible para su uso con plantillas de nube.

Qué hacer a continuación

Agregue componentes de Puppet a las plantillas de nube que desee.

  1. En la opción Plantillas de nube en Cloud Assembly, seleccione Puppet en el encabezado Administración de contenido en el menú de plantillas de nube y arrastre el componente Puppet al lienzo.
  2. Introduzca las propiedades de Puppet en el panel de la derecha.
    Propiedad Descripción
    Principal Introduzca el nombre de la máquina principal de Puppet que se utiliza con esta plantilla de nube.
    Entorno Seleccione el entorno para la máquina principal de Puppet.
    Función Seleccione la función de Puppet que se usará con esta plantilla de nube.
    Intervalo de ejecución de agente La frecuencia con la que desea que el agente de Puppet sondee la máquina principal de Puppet para que los detalles de configuración se apliquen en las máquinas virtuales implementadas relacionadas con esta plantilla de nube.
  3. Haga clic en la pestaña Código en el panel derecho para ver el código YAML de las propiedades de configuración de Puppet.

Al agregar un componente de Puppet a una plantilla de nube, puede agregar la propiedad installMaster al archivo YAML para que apunte al maestro de instalación de Puppet, también conocido como maestro de compilación. El valor de esta propiedad puede ser la dirección IP o el nombre de host del maestro de compilación de Puppet. El uso de esta propiedad proporciona acceso a capacidades mejoradas para las máquinas virtuales de Puppet implementadas, y también admite acciones del día dos adicionales.

  Puppet_Agent:
    type: Cloud.Puppet
    properties:
      account: PEIntegrationAccount
      environment: production
      role: 'role::linux_webserver'
      host: '${CentOS-Puppet.*}'
      username: root
      password: password123!
      installMaster: my-pe-compile-master.example.com
      agentConfiguration:
        certName: '${CentOS-Puppet.address}'
      osType: linux
      count: 1
Nota: Aunque el usuario definido aquí es "root", la plantilla de nube se puede configurar con cualquier usuario que se incluya en la lista de sudoers.

En algunos casos, vRealize Automation envía como hechos parte de la información relacionada con las máquinas a las máquinas virtuales de Puppet de forma predeterminada. Los hechos personalizados no son compatibles con las máquinas Windows. En las máquinas Linux, se transmite cierta información de forma predeterminada, y los usuarios pueden enviar información adicional mediante propiedades personalizadas.

Existen algunas limitaciones sobre lo que se transfiere a las máquinas de Puppet en Linux. Las propiedades personalizadas de los recursos de host y del agente de Puppet se envían a las máquinas virtuales de Puppet. Las propiedades personalizadas de los recursos de red no se transfieren a la máquina virtual. Los elementos aprobados incluyen propiedades simples, propiedades booleanas, así como tipos personalizados con nombre y complejos, como mapas anidados con matrices.

El siguiente ejemplo muestra cómo se pueden llamar varios recursos personalizados en los recursos del host:

resources:
  Puppet-Host:
    type: Cloud.AWS.EC2.Instance
    properties:
      customer_specified_property_on_ec2_resource: "property"
      customer_specified_property_on_network_resource_that_should_also_be_a_fact_and_is_boolean: true
      CustomerNameStuff: "zone A"
      try_map:
      key: value
      keytwo: value
      nested_array:
        - one
        - two
        - true
      try_array:
        - one
        - two
        -three:
           inner_key: value

Si un comando de purga de Puppet genera errores, en la mayoría de los casos, vRealize Automation omitirá los errores de purga de los nodos y continuará con la eliminación del nodo. Incluso si no se encuentra un certificado para un nodo específico, vRealize Automation continuará con la eliminación. Si vRealize Automation no puede continuar con la eliminación del nodo por algún motivo, puede hacer clic en Eliminar en el menú Acciones de la página Implementaciones para abrir un cuadro de diálogo que permitirá continuar con la eliminación del nodo. Se ejecuta un flujo de trabajo similar cuando se elimina una integración de Puppet de una plantilla de nube y, a continuación, se aplica la plantilla a la implementación. Este flujo de trabajo activa una operación de purga de nodos que se gestiona como se describe anteriormente.

La integración con Puppet Enterprise requiere una dirección IP pública. Si no hay ninguna dirección IP pública configurada para la máquina de Puppet Enterprise, se utiliza la dirección IP de la primera NIC.

Si la NIC de una máquina aprovisionada de Puppet ejecutada en una máquina vSphere tiene varias direcciones IP, puede utilizar la propiedad de YAML primaryAddress en las plantillas de nube para especificar qué dirección IP se utilizará para las conexiones. Cuando la propiedad primaryAddress se asigna a una NIC, Puppet utiliza la dirección IP de esta NIC. Solo se puede designar una NIC como principal. Vea el siguiente fragmento de YAML que muestra un ejemplo de cómo se utiliza la propiedad primaryAddress.

BaseVM:
  type: Cloud.vSphere.Machine
  properties:
   image: photon
   count: 2
   customizationSpec: Linux
   cpuCount: 1
   totalMemoryMB: 1024
   networks:
    - network: '${resource.dev.id}'
     deviceIndex: 0
     primaryAddress: true
     assignment: static
    - network: '${resource.prod.id}'
     deviceIndex: 1
     assignment: static

Si no se establece la propiedad primaryAddress para ninguna NIC de máquina virtual, la lógica de plantilla de nube utilizará de forma predeterminada el comportamiento actual para la selección de direcciones IP.

Si desea configurar la integración de Puppet para un usuario no raíz con privilegios sudo, ese usuario debe estar habilitado para ejecutar los siguientes comandos.
  • El usuario debe estar habilitado para crear un nuevo archivo y directorio de hechos de Puppet:
    sudo mkdir -p /etc/puppetlabs/facter/facts.d 
           sudo tee /etc/puppetlabs/facter/facts.d/puppet_cloudassembly_facts.json 
    
  • El usuario debe estar habilitado para ejecutar Puppet:
    sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=stopped
           sudo /opt/puppetlabs/bin/puppet agent --test --color=false --detailed-exitcode
  • El usuario debe estar habilitado para eliminar los archivos de solicitud de firma de certificado (CSR), incluidos los archivos csr_attributes.yaml y pem de CSR:
     sudo rm /etc/puppetlabs/puppet/csr_attributes.yaml
           sudo rm -f /etc/puppetlabs/puppet/ssl/certificate_requests/*