csc*_*can 1 ini ansible ansible-playbook
我正在使用Ansible的查找功能在INI文件中查找值.这是文档中的示例:
- debug: msg="User in integration is {{ lookup('ini', 'user section=integration file=users.ini') }}"
Run Code Online (Sandbox Code Playgroud)
这是我的任务:
- set_fact: aws_access_var = "{{ lookup('ini', 'AWS_ACCESS_KEY_ID section=Credentials file=/etc/boto.cfg') }}"
Run Code Online (Sandbox Code Playgroud)
它们在语法上看起来相同但我的任务失败了:
fatal: [localhost]: FAILED! => {"failed": true, "msg": "template error while templating string: unexpected char u\"'\" at 18. String: \"{{ lookup('ini', 'AWS_ACCESS_KEY_ID section"}
Run Code Online (Sandbox Code Playgroud)
知道它有什么问题吗?
删除等号周围的空格,因为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 }} "
Run Code Online (Sandbox Code Playgroud)
或者,不要使用旧样式模块调用,而是使用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 }} "
Run Code Online (Sandbox Code Playgroud)
或单行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 }} " }
Run Code Online (Sandbox Code Playgroud)
所有上述剧本基本上都是等同的,并返回相同的信息