2016-05-31 55 views
0

我正在使用Ansible的查找函數查找INI文件中的值。這裏的文檔中的例子:Ansible INI查找

- debug: msg="User in integration is {{ lookup('ini', 'user section=integration file=users.ini') }}" 

這是我的任務:

- set_fact: aws_access_var = "{{ lookup('ini', 'AWS_ACCESS_KEY_ID section=Credentials file=/etc/boto.cfg') }}" 

他們看起來在語法上相同,但我的任務失敗:

fatal: [localhost]: FAILED! => {"failed": true, "msg": "template error while templating string: unexpected char u\"'\" at 18. String: \"{{ lookup('ini', 'AWS_ACCESS_KEY_ID section"} 

任何想法有什麼錯呢?

回答

4

刪除等號周圍的空格,因爲ansible將解析參數。以下工作正常:

--- 
- hosts: 127.0.0.1 
    tasks: 
    - set_fact: aws_access_var="{{ lookup('ini', 'AWS_ACCESS_KEY_ID section=Credentials file=boto.cfg') }}" 
    - debug: msg="var is {{ aws_access_var }} " 

或者不使用舊式的模塊調用,但使用YAML樣式參數傳遞。它通常不太容易出錯。這裏是多YAML版本:

--- 
- hosts: 127.0.0.1 
    tasks: 
    - set_fact: 
     aws_access_var: "{{ lookup('ini', 'AWS_ACCESS_KEY_ID section=Credentials file=boto.cfg') }}" 
    - debug: 
     msg: "var is {{ aws_access_var }} " 

或者單行JSON風格之一:

--- 
- hosts: 127.0.0.1 
    tasks: 
    - set_fact: { aws_access_var: "{{ lookup('ini', 'AWS_ACCESS_KEY_ID section=Credentials file=boto.cfg') }}" } 
    - debug: { msg: "var is {{ aws_access_var }} " } 

上述所有劇本的基本上等同並返回相同的消息