可选的ansible语法

时间:2019-05-25 14:48:40

标签: ansible

我看过一本看起来像这样的剧本:

- hosts:
  - foo
  - bar
  roles:
    - role: whatever

它可以工作,但是从文档中我希望:

a。主机将以单行分隔的形式给出,例如:

- hosts: foo bar

而不是列表。

b。剧本中“角色”键的值应为列表,例如:

  roles:
    - whatever

而不是key:value对。

有人可以解释我在yaml中缺少的内容吗,它使这些替代方法在解析后就等效,或者在ansible文档中的何处解释了这些替代定义?

1 个答案:

答案 0 :(得分:0)

TL; DR
对于if ( is_cart() ) { ?> <div class="quantity"> <input type="text" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" readonly="readonly" /> </div> <?php } else { ?> <div class="quantity hidden"> <input type="hidden" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" /> </div> <?php } ,请使用您和与此相关的其他人最熟悉的语法。
对于hosts,仅在还要为角色设置其他属性的情况下,才需要roles语法。

更长的答案 我偶尔也对此感到疑惑。
在文档部分Intro to Playbooks, Basics中,它表示:

  

role: <name>行是一个或多个以冒号分隔的组或主机模式的列表,如Working with Patterns文档中所述。

但是,它没有明确提及此列表也可以是由空格分隔的字符串。

就戏剧的hosts属性而言,我认为备用语法变体很简单。如果仅传递一个名称(单个字符串),那么显然这就是角色的名称。

如果要传递其他参数(例如变量),则需要创建字典。查看here in the docs一起使用的两种语法的示例(搜索“角色可以接受其他关键字”)。

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

以下是在剧本中解析roles列表的部分: https://github.com/ansible/ansible/blob/devel/lib/ansible/playbook/play.py#L104-L116

这是在hosts中扮演角色的部分: https://github.com/ansible/ansible/blob/devel/lib/ansible/playbook/role/definition.py#L68-L135

playbook/base.py#preprocess_data中还有另一个提示:

  

不常用的方法来对遗留条款进行一些预处理

例如,roles类继承/重写了此方法,位于我上面链接的摘录的正下方。