Ansible语法最佳实践,YAML字典(键:值)或等号(键=值)?

时间:2016-10-02 22:24:53

标签: ansible yaml

我曾经将Ansible示例视为:

- file: path=/tmp/file state=touch

但有人在工作时告诉我,我应该只使用YAML语法一致:

- file:
    path: /tmp/file
    state: touch

,或者

- file: {path: /tmp/file, state:touch}

哪一个满足Ansible最佳实践?

1 个答案:

答案 0 :(得分:4)

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

  

在其核心,Ansible playbook runner是一个YAML解析器,增加了逻辑,如命令行键=值对速记。虽然在制作快速剧本或文档示例时很方便,但这种格式化会降低可读性。我们建议您不要使用该速记(即使使用YAML折叠式)作为最佳做法。

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

- name: install telegraf
  yum:
    name: telegraf-{{ telegraf_version }} state=present update_cache=yes disable_gpg_check=yes enablerepo=telegraf
  notify: restart telegraf

- name: configure telegraf
  template: src=telegraf.conf.j2 dest=/etc/telegraf/telegraf.conf
  notify: restart telegraf

- name: start telegraf
  service: name=telegraf state=started enabled=yes

现在使用本机YAML语法执行相同的任务:

- name: install telegraf
  yum: telegraf-{{ telegraf_version }}
    state: present
    update_cache: yes
    disable_gpg_check: yes
    enablerepo: telegraf
  notify: restart telegraf

- name: configure telegraf
  template:
    src: telegraf.conf.j2
    dest: /etc/telegraf/telegraf.conf
  notify: restart telegraf

- name: start telegraf
  service:
    name: telegraf
    state: started
    enabled: yes
  

原生YAML有更多行;但是,这些线条较短,减少了水平滚动和换行。它让眼睛直接向下扫描。任务参数堆叠在一起,可以轻松区分。原生YAML语法还具有在几乎任何现代文本编辑器中改进语法突出显示的优点。作为本机YAML,vim和Atom等编辑器将从其值中突出显示YAML键(模块名称,指令,参数名称),这有助于提高内容的可读性。尽管我们正在逐步改变,但我们自己的许多文档都使用这种简写作为遗留原因。 (接受文件拉取请求。)