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中。