2016-10-31 1 views
0

У меня есть несколько глобальных переменных окружения, заданных в моей целевой машине, которые мне нужно представить при запуске некоторых задач Ansible. Например.Загрузка глобальных переменных окружения в задачу Ansible

MY_VAR=Some global variable 

Значение этих глобальных переменных не известного анзибль поэтому не могу использовать environment функциональности.

Пример задачи:

- shell: echo MY_VAR is $MY_VAR 
    register: my_var 

- debug: msg={{ my_var.stdout }} 

Выход я получаю MY_VAR is, где я хотел бы, чтобы это было MY_VAR is Some global variable. Я понимаю, что это происходит потому, что неинтерактивные оболочки Bash (которые Ansible использует) не загружают среду из /etc/environment, но есть ли способ выполнить мою команду в контексте этой среды?

. Примечание: Я на самом деле не хочу, чтобы получить значение переменной окружения (как показано выше), я просто хочу, чтобы присутствовать в контексте того, что я исполняю shell задачу в

ответ

1

Переменные удаленной среды доступны через факты, используя переменную ansible_env.

Это выводит все переменные бревна пользователя анзибля в удаленный хост с:

- debug: var=ansible_env 

Если глобальные переменные окружения не доступен пользователем анзибля, они могут быть получены в задаче перед запуском команды:

- shell: . /etc/environment && commandhere

+1

Это не ответит на вопрос. Проблема в том, что при выполнении команды глобальные переменные в '/ etc/environment' не являются частью среды. – DanielGibbs

+0

А я вижу, как насчет поиска его перед запуском вашей команды: '- shell:./etc/environment && commandhere' – Zlemini

+0

Это похоже на трюк; позаботьтесь о том, чтобы опубликовать его как ответ? – DanielGibbs