Установите переменную окружения, используя соляную тушку

Я пишу несколько формул сокета, которые будут устанавливать пакет tomcat. но после установки я должен установить JAVA_HOME в файле /etc/default/tomcat 7. Есть ли возможность установить JAVA_HOME? Или есть ли возможность изменить или добавить JAVA_HOME в переменную окружения (т.е. В файлы .bashrc или .profile)?

Мой файл pillar.example будет иметь следующие данные:

    tomcat_version: 7
    java_home: '/usr/lib/jvm/java-7-oracle'

Ответ 1

В качестве альтернативы настройке .bashrc или .profile вы можете просто установить значение JAVA_HOME прямо в /etc/default/tomcat 7:

tomcat_configuration:
  file.append:
    - name: /etc/default/tomcat7
    - text: export JAVA_HOME={{ pillar['java_home'] }}

Если по какой-либо причине file.append не подходит, соль предлагает file.replace и (новый в 0.18.0) file.blockreplace.

Ответ 2

Зависит от области действия переменной среды:

Если это для одного пользователя, то экспорт в локальный .bash_profile пользователя будет работать, например.

JAVA_HOME:
# File.append searches the file for your text before it appends so it won't append multiple times
  file.append:
    - name: /root/.bash_profile
    - text: export JAVA_HOME={{ pillar['java_home'] }}

Вам, вероятно, потребуется выйти из системы для этого пользователя, прежде чем использовать эту переменную.

С другой стороны, если вы хотите экспортировать эту переменную глобально. Вероятно, вы захотите использовать /etc/profile.d

JAVA_HOME:
  file.append:
    - name: /etc/profile.d/myglobalenvvariables.sh
    - text: export JAVA_HOME={{ pillar['java_home'] }}

Хотя я бы рекомендовал использовать file.managed при создании нового script. Вы, конечно, все равно должны регистрировать всех своих пользователей, чтобы переменные распространялись.