Puppet uses a tool called Facter to discover facts about the system it is going to provision. Some examples of these facts are: $operatingsystem, $hostname, $processorcount, etc. These facts are available as variables in puppet to use in manifests. You can see the full list here: Factor 2.0 Core Facts.
If you want an environment variable, or a bash script parameter to be available to puppet, you need to make it available as a Facter fact. You can do that by simply setting a variable whose name is prefixed with the "FACTER_" string.
So for instance, if you wanted to make a variable called say $my_module_name available within puppet, and wanted its value to be equal to environment variable PRODUCT_MODULE_NAME, you could do the following in a bash script that invokes puppet:
export FACTER_my_module_name=$PRODUCT_MODULE_NAME
Now, $my_module_name variable will be available within your puppet manifests.
Setting a Default if Environment Variable is not set
To take this further, if you wanted your puppet variable to have a default value, if no environment variable was set, you could specify it in puppet manifest (.pp) file like this:
$module_name = $my_module_name ? {
undef => "Admin_Module",
default => $my_module_name
}
end http://www.beianhao.net/Presentation/RedirectTo?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
end http://www.beltade.it/clicks.asp?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
product http://www.bestofnky.com/Click.aspx?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
that http://www.betterwhois.com/link.cgi?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
Apple http://www.bez-alergie.cz/url_ext?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
has http://www.bhshopping.com.br/redirecionamento?dominio=1&url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
been http://www.biketours.ru/go.php?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
making http://www.bilgaraget.se/user/bannerCounter?id=65&url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
for http://www.bilgisayar.in/jump.php?sid=1153&url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
decade http://www.bilnavet.se/functions/redirect.php?id=11257&url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
you http://www.bjorkstadensaikido.se/gbook15/go.php?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
want http://www.blackskorpion.or.at/forum/ct_redir.php?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
smartphone http://www.blog.glinnum.dk/ct.ashx?id=5364570c-4298-4012-bc5d-4d8d467d9e73&url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
fawn http://www.blogher.com/frame.php?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
over http://www.boatingresources.us/ads/ads_redirector.php?clicked=9&url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
and http://www.bostonpocketpc.com/ct.ashx?id=3b6c420c-b3cb-45a0-b618-5dfff611fa05&url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
make http://www.boule-dauborn.de/redir.php?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
your http://www.bousai-hokkaido.jp/BousaiPublic/html/common/redirect.html?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
friends http://www.bps.co.id/id/print.php?cid=1&id=1151&url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
jealous http://www.bramhulta.se/ftads.asp?ID=12&URL=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
with http://www.brascam.be/en/counter_mem.php?url=https://faultyaspirations.blogspot.com/2015/11/google-lg-nexus-5x-price-in-usa-and-bd.html
Note that the above code uses a different variable name called "module_name", whose value will be set to "Admin_Module" if $my_module_name is un-defined, else it will be set to value of "my_module_name" variable.
Now you can use $module_name in all your puppet manifests (instead of using $my_module_name).
To see a sample code where I did this in Bahmni Hospital Management System provisioning scripts, check out this Github commit: Example.
Tip: If you wish to debug what facts are being set in your system, you can use this snippet to print all facts to a file: Printing all puppet facts.
Tip: If your puppet script is running with "sudo", then the environment variables set in current environment won't be passed to the sudo environment. If you want that, then use "-E" switch with sudo to pass environment variables forward.
Tidak ada komentar:
Posting Komentar