YAML语法ansible剧本中列表或键的混淆

YAML语法ansible剧本中列表或键的混淆,yaml,ansible,ansible-playbook,Yaml,Ansible,Ansible Playbook,我是YAML和ansible的新手,我不知道哪一行是关键,哪一行是列表。例如,在下面的剧本中,似乎“-”代表一个列表项 --- - hosts: all gather_facts: no sudo: yes tasks: - name: Ensure NTP is installed. yum: name=ntp state=present - name: ensure ntp is running service: name=ntpd state=start

我是YAML和ansible的新手,我不知道哪一行是关键,哪一行是列表。例如,在下面的剧本中,似乎“-”代表一个列表项

---
- hosts: all
  gather_facts: no
  sudo: yes
  tasks:
  - name: Ensure NTP is installed.
    yum: name=ntp state=present
  - name: ensure ntp is running
    service: name=ntpd state=started enabled=yes
因此,
host
是列表键,
all
是它的值,但它是
collect\u facts:no
sudo:
是
任务:…
还有列表中的字典,键为
-hosts

在运行上述剧本时,我得到以下输出:

--- 
- 
  gather_facts: false
  hosts: all
  sudo: true
  tasks: 
    - 
      name: "Ensure NTP is installed."
      yum: "name=ntp state=present"
    - 
      name: "ensure ntp is running"
      service: "name=ntpd state=started enabled=yes"

-
表示一个列表项。在剧本的顶层,列表项表示“剧本”

每个重头戏都由一个字典来表示,该字典有许多参数/键,这些参数/键都有值(其中一些值也可能是列表或字典)

因此,更具体地回答您的问题:
主机
收集事实
任务
都是第一个关键,也是唯一一个关键,在剧本中播放。因此,它们应该缩进到相同的级别

tasks的值是由字典表示的
task
s列表

至于由生成的自动“修复”YAML,我不知道Ansible是否会正确解析它,因为我觉得它很奇怪,但从技术上讲应该是这样的。我仍然坚持使用非“固定”YAML,因为它的格式看起来特别奇怪