O Cloud Assembly oferece suporte à integração com o gerenciamento de configuração do Puppet Enterprise.

Quando você adiciona o Puppet Enterprise ao Cloud Assembly como um sistema externo, por padrão, ele é disponibilizado em todos os projetos. Você pode restringi-lo a projetos específicos.

Para adicionar uma integração com o Puppet Enterprise, é necessário ter o nome do mestre Puppet e o nome do host ou endereço IP do mestre.

Você pode encontrar os logs do Puppet na seguinte localização, caso precise verificá-los em busca de erros ou para fins de informações.

Descrição Localização do Log
Log para criar e instalar eventos relacionados

Os logs estão na máquina implantada, em `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`.

Consulte o arquivo log.txt para obter logs completos. Para logs de agentes Puppet detalhados, consulte https://puppet.com/docs/puppet/4.8/services_agent_unix.html#logging
Log para tarefas relacionadas a exclusão e execução do Puppet Os logs estão no PE em `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`. Consulte o arquivo log.txt para obter logs completos.

Procedimento

  1. Selecione Infraestrutura > Conexões > Integrações e clique em Adicionar Integração.
  2. Selecione Puppet.
  3. Digite as informações necessárias na página de configuração do Puppet.
    Para que a integração com o Puppet funcione adequadamente, as credenciais fornecidas devem ser válidas para o SSH e para a conta de API. Além disso, as contas de usuário do SO e do aplicativo especificadas devem ter o mesmo nome de usuário e a mesma senha.
  4. Clique em Validar para verificar a integração.
  5. Clique em Adicionar.

Resultados

O Puppet está disponível para uso com modelos de nuvem.

O que Fazer Depois

Adicione componentes do Puppet aos modelo de nuvem desejados.

  1. Em Modelos de nuvem, no Cloud Assembly, selecione Puppet sob o título Gerenciamento de Conteúdo no menu do modelo de nuvem e arraste o componente Puppet até a tela.
  2. Digite as propriedades do Puppet no painel à direita.
    Propriedade Descrição
    Mestre Insira o nome da máquina primária Puppet a ser usada com esse modelo de nuvem.
    Ambiente Selecione o ambiente da máquina primária do Puppet.
    Função Selecione a função Puppet a ser usada com esse modelo de nuvem.
    Intervalo de execução do agente A frequência com que você deseja que o agente Puppet faça sondagens na máquina primária Puppet em busca de detalhes de configuração a serem aplicados a máquinas virtuais implantadas relacionadas a esse modelo de nuvem.
  3. Clique na guia Código no painel à direita para visualizar o código YAML para as propriedades de configuração do Puppet.

Quando você adiciona um componente do Puppet a um modelo de nuvem, pode adicionar a propriedade installMaster ao arquivo YAML para apontar a um mestre de instalação do Puppet, também conhecido como mestre de compilação. O valor dessa propriedade pode ser o endereço IP ou o nome do host do mestre de compilação do Puppet. Usar essa propriedade fornece acesso a capacidades aprimoradas para máquinas virtuais Puppet implantadas e também oferece suporte a ações de dia 2 adicionais.

  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
Observação: Embora o usuário definido aqui seja root, o modelo de nuvem pode ser configurado com qualquer usuário que esteja incluído na lista de sudoers.

Em alguns casos, o vRealize Automation transmite, por padrão, algumas informações relacionadas à máquina para as máquinas virtuais do Puppet como fatos. Fatos personalizados não são aceitos em máquinas Windows. Em máquinas Linux, algumas informações são transmitidas por padrão, e os usuários podem transmitir informações adicionais usando propriedades personalizadas.

Existem algumas limitações sobre o que é transmitido às máquinas Puppet no Linux. Propriedades personalizadas nos recursos de host e no agente Puppet são transmitidas a máquinas virtuais Puppet. Propriedades personalizadas em recursos de rede não são transmitidas à máquina virtual. Os itens passados incluem propriedades simples, propriedades booleanas, bem como nomes personalizados e tipos complexos, como mapas aninhados com matrizes.

O exemplo a seguir mostra como vários recursos personalizados podem ser chamados em recursos de 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

Se um comando de expurgação do Puppet resultar em erros, na maioria dos casos, o vRealize Automation ignorará os erros de eliminação dos nós e prosseguirá com a exclusão do nó. Mesmo que um certificado não seja encontrado para um nó específico, o vRealize Automation prosseguirá com a exclusão. Se o vRealize Automation não puder prosseguir com a exclusão do nó por algum motivo, você poderá clicar em Excluir no menu Ações da página Implementações para abrir uma caixa de diálogo que permitirá que você prossiga com a exclusão do nó. Um fluxo de trabalho semelhante é executado quando você remove uma integração do Puppet de um modelo de nuvem e, em seguida, aplica o modelo à implantação. Esse fluxo de trabalho aciona uma operação de limpeza de nó que é tratada conforme descrito acima.

A integração com o Puppet Enterprise requer um endereço IP público. Se não houver nenhum endereço IP público configurado para a máquina do Puppet Enterprise, o endereço IP da primeira NIC será usado.

Se o NIC de uma máquina provisionada Puppet em execução em uma máquina vSphere tem vários endereços IP, você pode usar a propriedade YAML primaryAddress nos modelos de nuvem para especificar qual endereço IP será usado para conexões. Quando a propriedade primaryAddress é atribuída a um NIC, o Puppet usa o endereço IP desse NIC. Apenas uma NIC pode ser designada como primária. Veja um exemplo de como a propriedade primaryAddress é usada no snippet YAML a seguir.

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

Se a propriedade primaryAddress não foi definida para nenhum NIC de máquina virtual, a lógica do modelo de nuvem é padronizada para o comportamento atual de seleção de endereço IP.

Se você deseja configurar a integração do Puppet para um usuário não raiz com privilégios Sudo, esse usuário deve ser habilitado para executar os seguintes comandos.
  • O usuário deve estar habilitado para criar um novo diretório e arquivo de fatos do Puppet:
    sudo mkdir -p /etc/puppetlabs/facter/facts.d 
           sudo tee /etc/puppetlabs/facter/facts.d/puppet_cloudassembly_facts.json 
    
  • O usuário deve estar habilitado para executar o Puppet:
    sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=stopped
           sudo /opt/puppetlabs/bin/puppet agent --test --color=false --detailed-exitcode
  • O usuário deve estar habilitado para excluir arquivos de Solicitação de Assinatura de Certificado (CSR), incluindo csr_attributes.yaml e CSR pem:
     sudo rm /etc/puppetlabs/puppet/csr_attributes.yaml
           sudo rm -f /etc/puppetlabs/puppet/ssl/certificate_requests/*