Search code examples
environment-variablesubuntu-16.04rundeck

Setting and accessing environmental variable used by rundeck


I have Rundeck 2.10.6-1 installed on a Ubuntu 16.04.4 LTS server and would like to set environmental variables just for rundeck. Rundeck itself is functioning normally.

I am able to set the environmental variables in /etc/environment for system-wide availability, but I'd like them to be accessible only by the rundeck session. One of them is SQLCMDPASSWORD, a plain text password, utilized by SQLCMD, so I'd like tighter access. We ended up using this approach for PSQL as well.

I have the rundeck $HOME directory identified as /var/lib/rundeck and the $USER name confirmed as 'rundeck'.

I find that adding environmental variables to .bashrc, .bash_profile, or .profile in that directory are not utilized by 'rundeck' as confirmed with a commandline job executing only 'printenv'. When logged in to the server as 'rundeck' I see the variables.

Am I setting these in right place?


Solution

  • So, no, those variables were not set in the correct place. Here's why...

    There were some clues in the answers to this question and this question but neither was sufficient. Applications have their environmental variables set in their profile, and for rundeck that would be

    $ more /etc/rundeck/profile
    

    Second clue is from the head of that file which, loosely quoted, indicates

    NOTE: DO NOT MODIFY THIS FILE. It will be replaced when the package is upgraded and your changes will not be saved. To override variables in this file, you can instead create a file at: /etc/default/rundeckd

    So, I created that default file and set my environmental variables by adding the following content

    export SQLCMDUSER=batman
    export SQLCMDPASSWORD='secret_bat_password'
    

    Now it works as intended.