Ansible 可转换语法

Ansible 可转换语法,ansible,Ansible,我看过一本类似这样的剧本: - hosts: - foo - bar roles: - role: whatever 它是可行的,但从文档中我可以预料到: a。主机将作为单个空间分隔线提供,例如: - hosts: foo bar 而不是一份清单 b。剧本中“角色”键的值将是一个列表,例如: roles: - whatever 而不是键:值对 有人能解释一下我在yaml中遗漏了什么吗?yaml使这些备选方案在解析后变得等效,或者在ansible文档中它在何处

我看过一本类似这样的剧本:

- hosts:
  - foo
  - bar
  roles:
    - role: whatever
它是可行的,但从文档中我可以预料到:

a。主机将作为单个空间分隔线提供,例如:

- hosts: foo bar
而不是一份清单

b。剧本中“角色”键的值将是一个列表,例如:

  roles:
    - whatever
而不是键:值对

有人能解释一下我在yaml中遗漏了什么吗?yaml使这些备选方案在解析后变得等效,或者在ansible文档中它在何处解释了这些备选定义?

TL;DR
对于
主机
使用您和其他使用该主机的人员最熟悉的语法。
对于
角色
,仅当您还想为角色设置其他属性时,才需要
角色:
语法

更长的答案 我偶尔也会对此感到疑惑。
在文档部分,它说:

hosts
行是一个或多个组或主机模式的列表,用冒号分隔,如文档中所述

但是,它没有明确提到这个列表也可以是一个空格分隔的字符串

就戏剧的
角色
属性而言,我认为另一种语法变体是直截了当的。如果只传递一个名称(单个字符串),那么这显然就是角色的名称

如果您想传递额外的参数,比如变量,那么您需要创建一个字典。请参阅一起使用的两个语法的示例(搜索“角色可以接受其他关键字”)

这两个问题的明确答案都在源代码中:

下面是解析剧本中主机列表的部分:

以下是为
角色中的角色执行此操作的部分:

下面还有一个提示:

用于对遗留术语进行某些预处理的不常用方法

例如,
Play
类继承/重写了这个方法,就在我链接到上面的代码片段的正下方。

TL;DR
对于
主机
使用您和其他使用该主机的人员最熟悉的语法。
对于
角色
,仅当您还想为角色设置其他属性时,才需要
角色:
语法

更长的答案 我偶尔也会对此感到疑惑。
在文档部分,它说:

hosts
行是一个或多个组或主机模式的列表,用冒号分隔,如文档中所述

但是,它没有明确提到这个列表也可以是一个空格分隔的字符串

就戏剧的
角色
属性而言,我认为另一种语法变体是直截了当的。如果只传递一个名称(单个字符串),那么这显然就是角色的名称

如果您想传递额外的参数,比如变量,那么您需要创建一个字典。请参阅一起使用的两个语法的示例(搜索“角色可以接受其他关键字”)

这两个问题的明确答案都在源代码中:

下面是解析剧本中主机列表的部分:

以下是为
角色中的角色执行此操作的部分:

下面还有一个提示:

用于对遗留术语进行某些预处理的不常用方法

例如,
Play
类继承/重写了这个方法,就在我上面链接的代码段的正下方