Puppet - Ambiente Conf
In Puppet, tutti gli ambienti hanno l'estensione environment.conffile. Questo file può sovrascrivere diverse impostazioni predefinite ogni volta che il master serve uno dei nodi o tutti i nodi assegnati a quel particolare ambiente.
Posizione
In Puppet, per tutti gli ambienti definiti, il file environment.conf si trova al livello superiore del suo ambiente home, molto vicino al manifest e ai direttori dei moduli. Considerando un esempio, se il tuo ambiente è nelle directory predefinite(Vipin/testing/environment), quindi il file di configurazione dell'ambiente di test si trova in Vipin/testing/environments/test/environment.conf.
Esempio
# /etc/testingdir/code/environments/test/environment.conf
# Puppet Enterprise requires $basemodulepath; see note below under modulepath".
modulepath = site:dist:modules:$basemodulepath
# Use our custom script to get a git commit for the current state of the code:
config_version = get_environment_commit.sh
Formato
Tutti i file di configurazione in Puppet utilizzano lo stesso formato simile a INI allo stesso modo. environment.confsegue lo stesso formato INI di altri file puppet.conf. L'unica differenza tra environment.conf epuppet.confQuesto file environment.conf non può contenere la sezione [main]. Tutte le impostazioni nel file environment.conf devono essere al di fuori di qualsiasi sezione di configurazione.
Percorso relativo nei valori
La maggior parte delle impostazioni consentite accetta il percorso del file o l'elenco di percorsi come valore. Se uno qualsiasi dei percorsi è un percorso pertinente, inizia senza una barra o una lettera di unità iniziale: verranno per lo più risolti in relazione alla directory principale di quell'ambiente.
Interpolazione in valori
Il file delle impostazioni Environment.conf è in grado di utilizzare i valori di altre impostazioni come variabili. Ci sono più variabili utili che possono essere interpolate nel file environment.conf. Ecco un elenco di poche variabili importanti:
$basemodulepath- Utile per includere directory nelle impostazioni del percorso del modulo. L'utente aziendale Puppet dovrebbe solitamente includere questo valore dimodulepath poiché il motore Puppet utilizza il modulo nel file basemodulepath.
$environment- Utile come argomento della riga di comando per lo script config_version. Puoi interpolare questa variabile solo nell'impostazione config_version.
$codedir - Utile per individuare i file.
Impostazioni consentite
Per impostazione predefinita, il file Puppet environment.conf può sovrascrivere solo quattro impostazioni nella configurazione elencate.
- Modulepath
- Manifest
- Config_version
- Environment_timeout
Modulepath
Questa è una delle impostazioni chiave nel file environment.conf. Tutti i director definiti in modulepath vengono caricati di default da Puppet. Questa è la posizione del percorso da cui Puppet carica i suoi moduli. È necessario impostarlo esplicitamente. Se questa impostazione di cui sopra non è impostata, il percorso di modulo predefinito di qualsiasi ambiente in Puppet sarà:
<MODULES DIRECTORY FROM ENVIRONMENT>:$basemodulepath
Manifesto
Viene utilizzato per definire il file manifest principale, che Puppet master utilizzerà durante l'avvio e la compilazione del catalogo dal manifest definito che verrà utilizzato per configurare l'ambiente. In questo, possiamo definire un singolo file, un elenco di file o anche una directory composta da più file manifest che devono essere valutati e compilati in una sequenza alfabetica definita.
È necessario definire esplicitamente questa impostazione nel file environment.conf. In caso contrario, Puppet utilizzerà la directory manifest predefinita degli ambienti come manifest principale.
Config_version
Config_version può essere definita come una versione definita utilizzata per identificare cataloghi ed eventi. Quando Puppet compila un file manifest per impostazione predefinita, aggiunge una versione di configurazione ai cataloghi generati e ai rapporti che vengono generati quando il master Puppet applica qualsiasi catalogo definito sui nodi Puppet. Puppet esegue uno script per eseguire tutti i passaggi precedenti e utilizza tutto l'output generato come Config_version.
Timeout ambiente
Viene utilizzato per ottenere i dettagli sulla quantità di tempo che Puppet dovrebbe utilizzare per caricare i dati per un determinato ambiente. Se il valore è definito nel file puppet.conf, questi valori sovrascriveranno il valore di timeout predefinito.
File di esempio environment.conf
[master]
manifest = $confdir/environments/$environment/manifests/site.pp
modulepath = $confdir/environments/$environment/modules
Nel codice sopra $confdir è il percorso della directory, in cui si trovano i file di configurazione dell'ambiente. $environment è il nome dell'ambiente per il quale viene eseguita la configurazione.
File di configurazione dell'ambiente pronto per la produzione
# The environment configuration file
# The main manifest directory or file where Puppet starts to evaluate code
# This is the default value. Works with just a site.pp file or any other
manifest = manifests/
# The directories added to the module path, looked in first match first used order:
# modules - Directory for external modules, populated by r10k based on Puppetfile
# $basemodulepath - As from: puppet config print basemodulepath
modulepath = site:modules:$basemodulepath
# Set the cache timeout for this environment.
# This overrides what is set directly in puppet.conf for the whole Puppet server
# environment_timeout = unlimited
# With caching you need to flush the cache whenever new Puppet code is deployed
# This can also be done manually running: bin/puppet_flush_environment_cache.sh
# To disable catalog caching:
environment_timeout = 0
# Here we pass to one in the control repo the Puppet environment (and git branch)
# to get title and essential info of the last git commit
config_version = 'bin/config_script.sh $environment'