Come posso accedere a una variabile d'ambiente in un manifest di marionette?


15

Come posso accedere a una variabile d'ambiente (dall'ambiente del demone fantoccio) in un manifest fantoccio?


Intendi una variabile generata da facter?
Scott Pack

Intendo le variabili d'ambiente bash come $ PATH e $ USER.
joeforker,

Risposte:


8

Penso che abbiamo bisogno di ulteriori informazioni su ciò che stai cercando di ottenere ... Facter espone per impostazione predefinita FACTER_ variabili d'ambiente:

https://docs.puppetlabs.com/guides/faq.html#can-i-access-environment-variables-with-facter

 $ FACTER_FOO="bar" 
 $ export FACTER_FOO
 $ facter | grep 'foo'
   foo => bar

Ma per $ PATH o $ USER ... Perché non dice al burattino di usare esplicitamente un determinato percorso o un utente (per un dirigente?)?


È molto normale controllare un interprete con le variabili di ambiente, per una serie di ragioni ... specialmente se a volte pensi di eseguire un burattino come interprete (nella riga #!?) Invece di un demone ...
joeforker

Risposta eccellente. Ho perso molto tempo senza notare che tutte le variabili Facter hanno nomi in minuscolo anche se la variabile di ambiente ha un nome in maiuscolo. Tutti prestano molta attenzione all'esempio fornito da jnrg.
Russell Silva,

1
c'è un collegamento interrotto
Kenorb

7

Dovresti utilizzare una funzione lato server per questo se vuoi l'ambiente del burattinaio. Dal momento che facter ti fornisce informazioni sui clienti.

$ RUBYLIB / burattino / parser / funzioni / env.rb:

module Puppet::Parser::Functions
  newfunction(:env) do |args|
    variable = args[0]
    ENV[variable]
  end
end

Usalo nei tuoi manifest come:

$blah = env("PATH")

6

Da quello che posso dire, Puppet funziona senza variabili d'ambiente di Bash. Sembra ottenere tutto il suo ambiente da Facter. C'è uno script qui per importare i tuoi normali avvocati come Facter envvars.


Il link non funziona più. Potresti aggiornare la risposta di conseguenza?
NA

1

In Puppet enterprise 2.5.1 è possibile accedervi tramite / etc / env.

Controlla anche se hai definito l'ambiente corretto nel tuo /etc/puppetlabs/puppet/puppet.conf- dovrebbe assomigliare a questo:

[production]
  modulepath = /etc/puppetlabs/puppet/environments/production/modules:/opt/puppet/share/puppet/modules
  manifest   = /etc/puppetlabs/puppet/environments/production/manifests/site.pp

-1

La risposta è un po 'deludente: non puoi (a meno che non valorizzi Puppet o Facter). Di recente ho scritto un breve post sul blog su questo argomento: accesso alle variabili di ambiente all'interno di Puppet

Un breve riassunto: Facter è in esecuzione su ogni sistema agente Puppet. È sufficiente migliorare Facter per raccogliere tutte le variabili di ambiente e quindi è possibile accedervi dai manifest Puppet.

Spero possa aiutare!

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.