2017-07-18 64 views
0

我想運行一個劇本,它對存儲在host_vars中的變量執行。這是溶液佈局:Ansible的手冊不拾取主機變量

  • /host_vars/F5-測試
  • /庫存/主機
  • /playbook.yml

這些文件的內容如下低點:

/庫存/主機:

[f5-test] 
localhost 

/host_vars /主機

f5_user:user 
f5_password:password 
f5_server:server 

/playbook.yml

- name: Playbook 
    hosts: f5-test 
    gather_facts: no 
    gather_subset: no 

    tasks: 
    - name: Taks_01 
     tags: "bigip-node" 
     bigip_node: 
     server: "{{f5_server}}" 
     user: "{{f5_user}}" 
     password: "{{f5_password}}" 
     state: "present" 
     partition: "Common" 
     host: "10.20.30.40" 
     name: "F5_Node" 
     session_state: "enabled" 
     description: "description" 
     delegate_to: localhost 

ħ H但是,當我們執行以下命令:

須藤ansible-劇本playbook.yml -i庫存/主機-vvvv

我得到以下錯誤:

task path: /home/dev/ansible/playbook.yml:9 
fatal: [localhost]: FAILED! => { 
    "failed": true, 
    "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'f5_server' is undefined\n\nThe error appears to have been in '/home/dev/ansible/playbook.yml': line 9, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n tasks:\n - name: Task_01\n ^here\n" 
} 

知道爲什麼它沒有被拾起?我用與F5完全相同的結構建立了我的項目,可以找到here

謝謝!

+0

請仔細閱讀你的問題並修復明顯的不一致。很難分辨出在編寫問題時以及在設置文件時出現了哪些錯誤。 – techraf

回答

3

在您的示例主機文件f5-test是一個組,而不是主機。

所以,把你的變量爲group_vars文件:./group_vars/f5-test.yml:

f5_user: user 
f5_password: password 
f5_server: server 
+0

與F5的Ansible貢獻者證實康斯坦丁的答案是正確的。 – Chase

-1

host_vars目錄需要位於與您的庫存相同的文件夾中。所以移動/host_vars/f5-test/inventory/host_vars/f5-test。請查看best practices page瞭解更多信息。

+0

我按照您的建議移動了該文件夾,但問題依然存在。同樣通過這個邏輯,f5的例子也不起作用。 https://github.com/F5Networks/f5-ansible/tree/devel/examples/000-getting-started – jonatzin

+0

您還需要將文件名從'f5-test'更改爲'localhost',因爲「f5測試「是你的組名。如果需要,您可以添加一個'group_vars'目錄並將'f5-test'移動到那裏。 – kfreezy