Setting environment variables with puppet
deployment, environment, environment-variables, puppet, ruby
Solution
I would take a look at this related question.
`*.sh` scripts in `/etc/profile.d` are read at user-login time (as the post says, at the same time `/etc/profile` is sourced)
Variables `export`-ed in any script placed in `/etc/profile.d` will therefore be available to your users.
You can then use a `file` resource to ensure this action is idempotent. For example:
file { "/etc/profile.d/my_test.sh":
content => 'export MYVAR="123"'
}
Problem
I'm trying to work out the best way to set some environment variables with puppet. I could use exec and just do `export VAR=blah`. However, that would only last for the current session. I also thought about just adding it onto the end of a file such as bashrc. However then I don't think there is a reliable method to check if it is all ready there; so it would end up getting added with every run of puppet.