我有一个剧本,我想在我的主机文件中定义一个字符串列表。
这是我的主机文件:
[dashboard]
1.2.3.4 dashboard_domain=test site_domain=['one','two','foo', 'bar']
这是我尝试使用list documentation编写的剧本:
---
- 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
运行此剧本会导致此错误:
任务:[调试] ****************************************** **********************
致命:[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}}"
答案 0 :(得分:1)
引用变量值:
[dashboard]
1.2.3.4 dashboard_domain=test site_domain="['one','two','foo', 'bar']"
对于INI格式的库存文件,Ansible不会解析变量值,如果它以不带引号的[
开头并将其作为字符串传递。
关于你的例子:我不确定为什么你没有在阅读库存文件时遇到expected key=value
错误,如果你真的有空间。