Переменные окружения
Ansible позволяет работать с переменными окружения различными способами. Во-первых, если вам необходимо создать переменную окружения для удаленной учетной записи, это можно сделать, добавив строку в файл .bash_profile, например:
- name: Add an environment variable to the remote user's shell.
lineinfile: dest=~/.bash_profile regexp=^ENV_VAR= line=ENV_VAR=value
После этого все задачи получат доступ к этим переменным окружения. Чтобы использовать переменную окружения в последующих задачах, рекомендуется использовать параметр задачи register для хранения переменной окружения в переменной Ansible:
- name: Add an environment variable to the remote user's shell.
lineinfile: dest=~/.bash_profile regexp=^ENV_VAR= line=ENV_VAR=value
- name: Get the value of the environment variable we just added.
shell: 'source ~/.bash_profile && echo $ENV_VAR'
register: foo
- name: Print the value of the environment variable.
debug: msg="The variable is {{ foo.stdout }}"
Мы используем источник ∼ /.bash_profile
в строке 4, потому что Ansible необходимо убедиться, что он использует последнюю конфигурацию среды для удаленного пользователя. В некоторых случаях задачи выполняются по SSH сессии, в которой $ENV_VAR
еще не определен.
Linux также будет читать глобальные переменные окружения, добавленные в /etc/environment, поэтому в них тоже можно добавить переменную:
- name: Add a global environment variable.
lineinfile: dest=/etc/environment regexp=^ENV_VAR= line=ENV_VAR=value
sudo: yes
В любом случае, довольно просто управлять переменными окружения на сервере с помощью lineinfile. Если для приложения требуется много переменных окружения, можно использовать copy или template с локальным файлом вместо использования lineinfile с большим списком элементов.