我在 github 和 ansible文档中看到了多个 Ansible 示例,例如:
---
# this might be in a file like handlers/handlers.yml
- name: restart apache
service: name=apache state=restarted
以下示例同时包含注释作为name
.
# Make sure Jenkins starts, then configure Jenkins.
- name: Ensure Jenkins is started and runs on startup.
service: name=jenkins state=started enabled=yes
讨论
Aname
就足够了,还是应该使用评论?
应该是:
- name: Symlink RabbitMQ bin to sbin
file: state=link src=/usr/lib/rabbitmq/bin dest=/usr/lib/rabbitmq/sbin
或者:
#Symlink RabbitMQ bin to sbin
file:
state: link
src: /usr/lib/rabbitmq/binhttp://docs.ansible.com/ansible/YAMLSyntax.html
dest: /usr/lib/rabbitmq/sbin
当按照 Ansible YAML 语法文档的建议咨询YAML Lint时,两个片段似乎都是有效的 YAML。尽管这两个片段似乎都是有效的 YAML,但视觉结构不同。
问题
- 应该使用名称 (
name
) 还是注释 (#
)? - 它应该是
file: state=link src=/usr/lib/rabbitmq/bin dest=/usr/lib/rabbitmq/sbin
还是应该被拆分,例如state:
请理解,我认为我的回答非常主观。在内部,我的团队大致同意我对此的看法。但是我们还没有为剧本起草任何“格式政策”。
如果对解释“为什么?”有用,我们只会包含评论。的特定任务。
name
始终存在。的值name
将在 playbook 运行期间显示。在将角色用作依赖项的情况下,我经常将name
. 几个例子。参数化
name
示例,来自roles/some_container/meta/main.yml角色/remove_container/tasks/main.yml
评论作为补充
name
。角色/remove_image/tasks/main.yml我总是使用 'k: v' 语法。此外,我用新行打破了单独的值。当阅读有人在一条线上塞满许多'k = v'的剧本时,我的大脑会扭曲。当我阅读我感兴趣的键/值时,我发现很难兼顾所有键/值。
哪个更容易阅读?我想第二个例子。
我有时也会明智地使用空白。
这取决于你自己的喜好。
像
# Make sure Jenkins starts, then configure Jenkins.
这样的评论没有多大意义,因为它们不会添加更多信息。Inline
支持语法YAML
以兼容JSON
.Outline
但是应该首选语法,因为代码可读性更好,并且可以使用 diff 更好地查看代码更改。