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.

Original source

Related problems