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

sat*_*gie 6 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=started enabled=yes
Run Code Online (Sandbox Code Playgroud)

所以host是列表键,all是它的价值,但是gather_facts: no,sudo: yes并且task: ...也与密钥列表的字典- hosts

当将上述playbook运行到yamllint.com时,我得到以下输出:

--- 
- 
  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"
Run Code Online (Sandbox Code Playgroud)

yda*_*coR 5

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

每个播放都由一个字典表示,该字典具有许多具有值的参数/键(这些值中的一些反过来也可以是列表或字典)。

因此,更具体地回答您的问题:hosts, gather_facts,tasks是剧本中第一个也是唯一一个播放的键。因此,它们应该缩进到相同的级别。

任务的值依次task是由字典表示的s列表。

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