我有一个剧本,我想在我的主机文件中定义一个字符串列表。
这是我的主机文件:
[dashboard]
1.2.3.4 dashboard_domain=test site_domain=['one','two','foo', 'bar']
这是我尝试使用以下方法编写的剧本列出文档:
---
- hosts: dashboard
gather_facts: False
remote_user: ubuntu
become: yes
tasks:
- name: ping
ping:
- debug:
msg: "Domain: {{dashboard_domain}}"
- debug:
msg: "Site: {{ item }}"
with_items: "{{site_domain}}"
然而运行这个剧本ansible-playbook -i hosts ping.yml
导致此错误:
任务:[调试] ************************************************* ******************
fatal: [1.2.3.4] => with_items 需要一个列表或集合
这似乎是将定义的列表从主机文件传输到剧本的问题,因为直接在剧本中定义列表是有效的:
---
- hosts: dashboard
gather_facts: False
remote_user: ubuntu
become: yes
vars:
site_domain: ['one','two','foo', 'bar']
tasks:
#### APPLY HTTP-AUTH ####
- name: ping
ping:
- debug:
msg: "Domain: {{dashboard_domain}}"
- debug:
msg: "Site: {{ item }}"
with_items: "{{site_domain}}"
只需引用变量值:
[dashboard]
1.2.3.4 dashboard_domain=test site_domain="['one','two','foo', 'bar']"
似乎在 INI 格式的清单文件的情况下,如果变量值以不带引号的开头,Ansible 不会解析该变量值[
并将其作为字符串传递。
关于你的例子:我不确定为什么你没有得到expected key=value
如果内部确实有空间,则读取库存文件时会出错。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)