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:
handsets http://www.crsenne.be/modules/APCal/tellafriend.php?url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
2018 http://www.ctcms.nist.gov/cgi-bin/redirect.py?url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
You http://www.cu-tipaza.dz/eLearning_CUT/theme/switchdevice.php?url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
might http://www.cultoro.es/a/includes/modulos/click.asp?id=1877&url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
dislike http://www.culturagay.it/redirect?url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
the http://www.custodxians.cf/web30/pages/external_url.php?url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
notch http://www.cvmalpensa.it/gotoURL.asp?url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
and http://www.dagenshockey.se/leave.php?url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
LGs http://www.dailyvc.co/out?url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
Android http://www.damesbobslee.nl/gastenboek.html?url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
skin http://www.danceboat.net/rank.cgi?mode=link&id=521&url=https://memesmemosos.blogspot.com/2016/02/latest-google-play-store-6210-apk-free.html
$module_name = $my_module_name ? {
undef => "Admin_Module",
default => $my_module_name
}
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