我曾经将Ansible示例视为:
- file: path=/tmp/file state=touch
但有人在工作时告诉我,我应该只使用YAML语法一致:
- file:
path: /tmp/file
state: touch
,或者
- file: {path: /tmp/file, state:touch}
哪一个满足Ansible最佳实践?
答案 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键(模块名称,指令,参数名称),这有助于提高内容的可读性。尽管我们正在逐步改变,但我们自己的许多文档都使用这种简写作为遗留原因。 (接受文件拉取请求。)