Cloud Assembly supporta l'integrazione con la gestione della configurazione di Puppet Enterprise.

Quando si aggiunge Puppet Enterprise a Cloud Assembly come sistema esterno, per impostazione predefinita è disponibile in tutti i progetti. È possibile limitarlo a progetti specifici.

Per aggiungere un'integrazione di Puppet Enterprise, è necessario disporre del nome master di Puppet e del nome host o indirizzo IP del master.

I registri di Puppet sono disponibili nella seguente posizione nel caso in cui sia necessario controllarli per errori o a scopo informativo.

Descrizione Posizione registro
Registro per gli eventi correlati alla creazione e all'installazione

I registri si trovano nella macchina distribuita in `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`.

Per i registri completi, fare riferimento al file log.txt. Per i registri dettagliati dell'agente di Puppet, fare riferimento a https://puppet.com/docs/puppet/4.8/services_agent_unix.html#logging
Registro per le attività correlate all'esecuzione e all'eliminazione di Puppet I registri si trovano in PE all'indirizzo `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`. Per i registri completi, fare riferimento al file log.txt.

Procedura

  1. Selezionare Infrastruttura > Connessioni > Integrazioni e fare clic su Aggiungi integrazione.
  2. Selezionare Puppet.
  3. Immettere le informazioni richieste nella pagina di configurazione di Puppet.
    Per il corretto funzionamento dell'integrazione di Puppet, le credenziali fornite devono essere valide sia per l'account SSH sia per l'account API. Inoltre, gli account utente del sistema operativo e dell'applicazione specificati devono avere lo stesso nome utente e la stessa password.
  4. Fare clic su Convalida per verificare l'integrazione.
  5. Fare clic su Aggiungi.

risultati

Puppet è disponibile per l'uso con i modelli cloud.

Operazioni successive

Aggiungere i componenti di Puppet ai modelli cloud desiderati.

  1. In Modelli di cloud in Cloud Assembly, selezionare Puppet sotto l'intestazione Gestione contenuti nel menu Modello cloud e trascinare il componente Puppet nella tela.
  2. Immettere le proprietà di Puppet nel riquadro a destra.
    Proprietà Descrizione
    Master Immettere il nome della macchina primaria di Puppet utilizzata con questo modello cloud.
    Ambiente Selezionare l'ambiente per la macchina principale di Puppet.
    Ruolo Selezionare il ruolo di Puppet da utilizzare con questo modello cloud.
    Intervallo di esecuzione dell'agente La frequenza con cui si desidera che l'agente Puppet esegua il polling della macchina principale di Puppet affinché i dettagli della configurazione vengano applicati alle macchine virtuali distribuite correlate a questo modello cloud.
  3. Fare clic sulla scheda Codice nel riquadro a destra per visualizzare il codice YAML per le proprietà di configurazione di Puppet.

Quando si aggiunge un componente Puppet a un modello cloud, è possibile aggiungere la proprietà installMaster al file YAML in modo che punti a un master di installazione Puppet, definito anche come master di compilazione. Il valore di questa proprietà può essere l'indirizzo IP o il nome host del master di compilazione Puppet. L'utilizzo di questa proprietà consente di accedere a funzionalità avanzate per le macchine virtuali Puppet distribuite e inoltre supporta azioni del giorno 2 aggiuntive.

  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: Sebbene l'utente definito qui sia root, il modello cloud può essere configurato con qualsiasi utente incluso nell'elenco sudoers.

In alcuni casi, per impostazione predefinita, vRealize Automation passa alcune informazioni relative alla macchina alle macchine virtuali Puppet come dati. I dati personalizzati non sono supportati per le macchine Windows. Nelle macchine Linux vengono trasmesse alcune informazioni per impostazione predefinita e gli utenti possono passare informazioni aggiuntive utilizzando le proprietà personalizzate.

Esistono alcune limitazioni di ciò che viene passato alle macchine Puppet in Linux. Le proprietà personalizzate nelle risorse host e nell'agente Puppet vengono passate alle macchine virtuali Puppet. Le proprietà personalizzate nelle risorse di rete non vengono passate alla macchina virtuale. Gli elementi passati includono proprietà semplici, proprietà booleane, nonché tipi personalizzati denominati e complessi come le mappe nidificate con array.

L'esempio seguente mostra come è possibile richiamare varie risorse personalizzate su risorse 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 un comando di rimozione di Puppet causa errori, nella maggior parte dei casi vRealize Automation ignorerà gli errori di rimozione dei nodi e procederà con l'eliminazione del nodo. Anche se non viene trovato un certificato per un nodo specifico, vRealize Automation procederà con l'eliminazione. Se vRealize Automation non è in grado di procedere con l'eliminazione del nodo per un motivo qualsiasi, è possibile fare clic su Elimina nel menu Azioni della pagina Distribuzioni per aprire una finestra di dialogo che consentirà di procedere con l'eliminazione del nodo. Viene eseguito un workflow simile quando si rimuove un'integrazione di Puppet da un modello cloud e quindi si applica il modello alla distribuzione. Questo workflow attiva un'operazione di rimozione del nodo gestita come descritto in precedenza.

L'integrazione con Puppet Enterprise richiede un indirizzo IP pubblico. Se per la macchina Puppet Enterprise non è configurato alcun indirizzo IP pubblico, viene utilizzato l'indirizzo IP della prima scheda NIC.

Se la scheda NIC di una macchina sottoposta a provisioning Puppet eseguita su una macchina vSphere dispone di più indirizzi IP, è possibile utilizzare la proprietà YAML primaryAddress nei modelli cloud per specificare l'indirizzo IP da utilizzare per le connessioni. Quando la proprietà primaryAddress è assegnata a una scheda NIC, l'indirizzo IP di tale scheda NIC viene utilizzato da Puppet. È possibile designare una sola scheda NIC come primaria. Vedere il seguente frammento di codice YAML per un esempio di come viene utilizzata la proprietà 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

Se la proprietà primaryAddress non è impostata per alcuna scheda NIC di una macchina virtuale, la logica dei modelli cloud utilizzerà per impostazione predefinita il comportamento corrente per la selezione dell'indirizzo IP.

Se si desidera configurare l'integrazione di Puppet per un utente non root con privilegi Sudo, tale utente deve essere abilitato per eseguire i comandi seguenti.
  • L'utente deve essere abilitato per creare una nuova directory e un nuovo file di dati Puppet:
    sudo mkdir -p /etc/puppetlabs/facter/facts.d 
           sudo tee /etc/puppetlabs/facter/facts.d/puppet_cloudassembly_facts.json 
    
  • L'utente deve essere abilitato per eseguire Puppet:
    sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=stopped
           sudo /opt/puppetlabs/bin/puppet agent --test --color=false --detailed-exitcode
  • L'utente deve essere abilitato per eliminare i file CSR (Certificate Signing Request), inclusi csr_attributes.yaml e CSR pem:
     sudo rm /etc/puppetlabs/puppet/csr_attributes.yaml
           sudo rm -f /etc/puppetlabs/puppet/ssl/certificate_requests/*