我有以下Ansible
剧本文件:
1 ---
2 - name: Provision cluster
3 connection: local
4 hosts: localhost
5 gather_facts: False
6 vars_files:
7 - ../vars_files/credentials/foo.yml
8 - ../vars_files/credentials/bar.yml
9
10 vars:
11 - ec2_hosts:
12 - node1:
13 - address: 1.1.1.1
14 - node2:
15 - address: 1.1.1.2
16 - node3:
17 - address: 1.1.1.3
18 - node4:
19 - address: 1.1.1.4
我想做的是暗示在另一本字典里放一本字典。在第二节中,我将声明主机名和它的IP地址之间的字典。然而,我得到了以下错误:
ERROR: Syntax Error while loading YAML script, provision.yml
Note: The error may actually appear before this position: line 10, column 1
vars:
在定义复杂变量时,我个人更喜欢使用JSON(或Python’ish)表达式,因为与YAML语法中定义的复杂变量相比,这些表达式更可读。例如:
vars:
ec2_hosts: {
node1: {
address: 1.1.1.1,
hostname: ec2_node1
},
node2: {
address: 1.1.1.2,
hostname: ec2_node2
},
},
如果你必须使用YAML,希望这确实是你想要的结构,它与前一个不同:
vars:
- ec2_hosts:
- host1:
- address: 1.1.1.1
- host2:
- address: 1.1.1.2
以下是测试的代码,以防出现其他语法错误:
- name: Provision cluster
connection: local
hosts: localhost
gather_facts: False
# vars_files:
# - ../vars_files/credentials/foo.yml
# - ../vars_files/credentials/bar.yml
vars:
- ec2_hosts:
- host1:
- address: 1.1.1.1
- host2:
- address: 1.1.1.2
tasks:
- debug: msg="{{ec2_hosts}}"
附言:我从你的帖子中复制了很多尾随空格,希望它们不存在于你的实际剧本YAML中