1
我的問題是,我無法通過傳遞字典來設置環境來設置整個劇本的環境。那可能嗎?如何用傳入的環境詞典定義Ansible playbook環境
例如,這裏是我的樣本ansible劇本:
- hosts: localhost
vars:
env_vars: "{{ PLAY_ENVS }}"
environment: "{{ env_vars }}"
tasks:
- name: Here is what you passed in
debug: msg="env_vars == {{ env_vars }}"
- name: What is FAKE_ENV
debug: msg="FAKE_ENV == {{ lookup('env', 'FAKE_ENV') }}"
而且我通過命令:
/bin/ansible-playbook sample_playbook.yml --extra-vars '{PLAY_ENVS: {"FAKE_ENV":"/path/to/fake/destination"}}'
我得到的迴應是:
PLAY [localhost] ***************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [Here is what you passed in] **********************************************
ok: [localhost] => {
"msg": "env_vars == {u'FAKE_ENV': u'/path/to/fake/destination'}"
}
TASK [What is FAKE_ENV] ********************************************************
ok: [localhost] => {
"msg": "FAKE_ENV == "
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0
正如你所看到的'FAKE_ENV'沒有在環境中設置。我究竟做錯了什麼?
我現在不能驗證,但'debug'模塊:
你應該與衍生的過程中檢查你的環境,這樣的:
並獲得預期的結果可能不是測試它的最好方法。對於不同的目標,它甚至不建立連接,也可能跟隨本地主機上的快捷方式。你能否嘗試註冊一些「真實」行動模塊的結果?例如用'content'複製'並檢查一個文件的內容。 – techraf