Ansible syntax best practice, YAML dictionary (key: value) or equal sign (key=value)?

Del*_*vin 4 yaml ansible

I'm used to see Ansible examples as:

- file: path=/tmp/file state=touch
Run Code Online (Sandbox Code Playgroud)

but someone at work told me that I should be consistent using only YAML syntax like this:

- file:
    path: /tmp/file
    state: touch
Run Code Online (Sandbox Code Playgroud)

or,

- file: {path: /tmp/file, state:touch}
Run Code Online (Sandbox Code Playgroud)

Which one satisfies Ansible best practices?

Mxx*_*Mxx 6

摘自https://www.ansible.com/blog/ansible-best-practices-essentials

\n\n
\n

Ansible playbook 运行程序的核心是一个 YAML 解析器,添加了命令行键=值对简写等逻辑。虽然在制作快速手册或文档示例时很方便,但这种格式格式会降低可读性。我们建议您不要使用这种简写(即使使用 YAML 折叠样式)作为最佳实践。

\n
\n\n

以下是使用 key=value 简写形式的一些任务的示例:

\n\n
- name: install telegraf\n  yum:\n    name: telegraf-{{ telegraf_version }} state=present update_cache=yes disable_gpg_check=yes enablerepo=telegraf\n  notify: restart telegraf\n\n- name: configure telegraf\n  template: src=telegraf.conf.j2 dest=/etc/telegraf/telegraf.conf\n  notify: restart telegraf\n\n- name: start telegraf\n  service: name=telegraf state=started enabled=yes\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,这里是使用本机 YAML 语法的相同任务:

\n\n
- name: install telegraf\n  yum: telegraf-{{ telegraf_version }}\n    state: present\n    update_cache: yes\n    disable_gpg_check: yes\n    enablerepo: telegraf\n  notify: restart telegraf\n\n- name: configure telegraf\n  template:\n    src: telegraf.conf.j2\n    dest: /etc/telegraf/telegraf.conf\n  notify: restart telegraf\n\n- name: start telegraf\n  service:\n    name: telegraf\n    state: started\n    enabled: yes\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

原生YAML行数较多;然而,这些行较短,减少了水平滚动和换行。它可以让眼睛直接扫视比赛。任务参数堆叠在一起,很容易与下一个参数区分开来。原生 YAML 语法还具有在几乎所有现代文本编辑器中改进的语法突出显示的优点。作为原生 YAML,vim 和 Atom 等编辑器将从其值中突出显示 YAML 键(模块名称、指令、参数名称),进一步提高内容的可读性。尽管我们\xe2\x80\x99正在逐步更改它,但我们自己的许多文档出于遗留原因而使用此简写。(已接受文档拉取请求。)

\n
\n