2014-01-29 121 views
40

我想知道Ansible是否有辦法訪問本地環境變量。Ansible - 訪問本地環境變量

文檔引用在目標機器上訪問變量:

{{ lookup('env', 'SOMEVAR') }} 

是否有訪問源計算機上的環境變量的方法嗎?

回答

60

我對OSX運行Linux虛擬機,然後對我來說:

lookup('env', 'HOME')回到 「/用戶/貢薩洛」(該HOME從OSX變量),而ansible_env.HOME返回 「/根」(該HOME自變量VM)。

值得一提的是,如果該變量不存在,那麼ansible_env.VAR會失敗,而lookup('env', 'VAR')不會失敗。

+2

值得一提的是,如果變量不存在,查找似乎返回一個空字符串。當var的存在表示特殊的構建env時(如Travis CI構建或Docker容器) – EvanK

3

這些變量在管理機器中,我認爲源機器在你的情況。

檢查:http://docs.ansible.com/faq.html#how-do-i-access-shell-environment-variables

它說:If you just need to access existing variables, use the ‘env’ lookup plugin. For example, to access the value of the HOME environment variable on management machine:

現在,如果你需要訪問它在遠程機器可以只運行ansible本地腳本在遠程計算機。 或者你可以只是事實的變量。如果事實並非如此,您可以運行一個shell命令來獲取它。

9

使用ansible lookup

- set_fact: env_var="{{ lookup('env','ENV_VAR') }}"