Ansible中词典中的词典
我有以下Ansible中词典中的词典,ansible,ansible-playbook,Ansible,Ansible Playbook,我有以下Ansibleplaybook文件: 1 --- 2 - name: Provision cluster
Ansible
playbook文件:
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}}"
PS:我从你的帖子中复制了很多尾随空格,希望它们不存在于你的实际剧本YAML中。我个人更喜欢在定义复杂变量时使用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}}"
PS:我从你的帖子中复制了很多尾随空格,希望它们不存在于你的实际剧本YAML中。我个人更喜欢在定义复杂变量时使用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}}"
PS:我从你的帖子中复制了很多尾随空格,希望它们不存在于你的实际剧本YAML中。我个人更喜欢在定义复杂变量时使用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}}"
PS:我从你的帖子中复制了很多尾随空格,希望它们不存在于你的实际剧本YAML中。