【问题标题】:Ansible syntax best practice, YAML dictionary (key: value) or equal sign (key=value)?Ansible 语法最佳实践,YAML 字典(键:值)还是等号(键=值)?
【发布时间】:2017-02-10 20:26:53
【问题描述】:

我习惯于将 Ansible 示例视为:

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

但是工作中有人告诉我,我应该只使用这样的 YAML 语法来保持一致:

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

或者,

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

哪一个满足 Ansible 最佳实践?

【问题讨论】:

    标签: ansible yaml


    【解决方案1】:

    取自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
    

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

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 2010-09-27
      • 2015-02-15
      • 2016-03-24
      • 2023-04-03
      • 1970-01-01
      • 2016-05-28
      • 2015-10-24
      • 1970-01-01
      相关资源
      最近更新 更多