Ansible INI查找

Ansible INI查找,ansible,ansible-playbook,ini,Ansible,Ansible Playbook,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.c

我正在使用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"}

知道怎么回事吗?

去掉等号周围的空格,因为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 }} " }
上述所有剧本本质上都是等效的,并返回相同的消息