Vagrant può indicare una directory di manifest Puppet per l'esecuzione?


9

Sto usando Vagrant per avviare alcune configurazioni iniziali di Puppet e sono confuso su come includere / eseguire più manifest (oltre a site.pp) nel flusso di lavoro di esecuzione delle marionette senza trasformare i manifesti extra in moduli e includerli in quel modo.

Nella directory dei manifest di marionette a cui indico Vagrant (vedi sotto) ho due manifest che voglio eseguire: site.pp e hierasetup.pp.

config.vm.provision "puppet" do |puppet|
  puppet.manifests_path = "puppet_files/manifests"
  puppet.module_path    = "puppet_files/modules"
  puppet.manifest_file  = "site.pp"
  puppet.options = "--verbose --debug"
end 

Attualmente sto avendo site.pp essere il manifest che chiama hierasetup.pp. Il mio sito.pp è simile al seguente:

File {
  owner => 'root',
  group => 'root',
  mode  => '0644',
}

import "hierasetup.pp"

include jboss

Ma ottengo questo errore sulla deprecazione di "import":

Avvertenza: l'uso di 'import' è deprecato in /tmp/vagrant-puppet-1/manifests/site.pp:33. Vedi http://links.puppetlabs.com/puppet-import-deprecation (su grammar.ra: 610: in `_reduce_190 ')

Secondo l'URL di riferimento in "Cose da provare invece", dice " Per mantenere le definizioni del nodo in file separati, specificare una directory come manifest principale ".

Inoltre questo documento fantoccio sui principali manifest dice:

" Consigliato: se stai utilizzando il manifest principale pesantemente invece di fare affidamento su un ENC, considera di cambiare l'impostazione manifest in $ confdir / manifest. Ciò ti consente di dividere il codice di livello superiore in più file evitando la parola chiave import. corrisponderà anche al comportamento di ambienti semplici " .

Sembra che Puppet possa fare riferimento a un'intera directory anziché solo a un file manifest specifico, in modo che mi aspetto che Vagrant effettui una disposizione per questo e mi consenta di eliminare la riga " puppet.manifest_file =" site.pp "e puntare a la directory padre invece in cui verranno eseguiti tutti i file * .pp. Tuttavia, rimuovere quella riga in Vagrant genera semplicemente un reclamo su un "default.pp" previsto al suo posto:

Puppet Provider: * Manca il manifest Puppet configurato. Specificare un percorso per un manifest esistente: /some/path/puppet_files/manifests/default.pp

Così:

  1. In primo luogo, capisco il modo "nuovo" (non di importazione) di chiamare correttamente più manifest, in quanto si deve indicare una directory in cui verranno eseguiti tutti i file * .pp al suo interno?
  2. E in secondo luogo, Vagrant ha "recuperato" questa nuova modifica per accogliere la referenziazione delle directory insieme alla deprecazione di "importazione" di Puppet?

Aggiornamento: grazie a Shane il problema con # 2 (il codice di Vagrant non è stato raggiunto per consentire il puntamento alle directory dei manifest di marionette) è stato segnalato sul sito di localizzazione dei problemi GitHub di Vagrant e da allora è stato corretto: https://github.com/mitchellh/vagrant / temi / 4169

Risposte:


6

In primo luogo, capisco il modo "nuovo" (non di importazione) di chiamare correttamente più manifest, in quanto si deve indicare una directory in cui verranno eseguiti tutti i file * .pp al suo interno?

Si. Vedi qui :

Se stai usando pesantemente il manifest principale invece di fare affidamento su un ENC, considera di cambiare l'impostazione manifest in $ confdir / manifest. Ciò consente di suddividere il codice di livello superiore in più file evitando la parola chiave di importazione.

Inoltre, manifeste modulepathstanno diventando deprecati a favore degli ambienti di directory e del comportamento della directory manifest, vedere qui :

Ora che gli ambienti di directory sono completi, gli ambienti di file di configurazione sono obsoleti. La definizione di blocchi di ambiente in puppet.conf provocherà un avviso di deprecazione, così come qualsiasi uso delle impostazioni modulepath, manifest e config_version in puppet.conf.

Questo è un grande cambiamento per molte implementazioni, ma dovrebbe essere un buon miglioramento a lungo termine.


E in secondo luogo, Vagrant ha "recuperato" questa nuova modifica per accogliere la referenziazione delle directory insieme alla deprecazione di "importazione" di Puppet?

No, no; dai loro documenti:

manifest_file (stringa) - Il nome del file manifest che fungerà da punto di accesso per l'esecuzione di Puppet. Questo file manifest dovrebbe esistere nel percorso manifest_sonfigurato

Per l'uso con Vagrant, per ora sei bloccato con gli avvisi di deprecazione, il che è sfortunato. Ma l'importazione non è prevista per la rimozione fino alla 4.x, quindi questo dà a Vagrant un po 'di tempo per recuperare.


Bene, è bello sapere che non sto impazzendo perché sto cercando di capire quale fosse l'accordo per oltre un'ora. Gli sviluppatori di Vagrant sono consapevoli della necessità di tale funzionalità o, in caso contrario, esiste un posto in cui suggerire tali aggiunte?
SeligkeitIstInGott,

Sembra che non sia ancora stato chiesto a loro - vedi qui . Invia un problema lì per allinearlo meglio con il burattino moderno (o lo farò se non hai un account github)!
Shane Madden,

Penso che i miei colleghi di sviluppo abbiano tutti account github, ma se ne ho uno non so nemmeno quale sarebbe il mio login. Non ne ho bisogno, dato che sono IT e non un programmatore. Ti dispiacerebbe terribilmente farlo?
SeligkeitIstInGott

1
@SeligkeitIstInGott Certo, mi verrà archiviato qualcosa!
Shane Madden,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.