我在 github 和 ansible docs 中看到了多个 Ansible 示例,例如:
---
# this might be in a file like handlers/handlers.yml
- name: restart apache
service: name=apache state=restarted
Run Code Online (Sandbox Code Playgroud)
以下示例同时包含注释作为name
.
# Make sure Jenkins starts, then configure Jenkins.
- name: Ensure Jenkins is started and runs on startup.
service: name=jenkins state=started enabled=yes
Run Code Online (Sandbox Code Playgroud)
讨论
Aname
将是足够的权利还是应该使用评论?
应该是:
- name: Symlink RabbitMQ bin to sbin
file: state=link src=/usr/lib/rabbitmq/bin dest=/usr/lib/rabbitmq/sbin
Run Code Online (Sandbox Code Playgroud)
或者:
#Symlink RabbitMQ bin to sbin
file:
state: link
src: /usr/lib/rabbitmq/binhttp://docs.ansible.com/ansible/YAMLSyntax.html
dest: /usr/lib/rabbitmq/sbin
Run Code Online (Sandbox Code Playgroud)
当按照 Ansible YAML 语法文档的建议咨询YAML Lint 时,两个片段似乎都是有效的 YAML。尽管两个片段似乎都是有效的 YAML,但视觉结构不同。
问题
name
) 还是注释 ( #
)?file: state=link src=/usr/lib/rabbitmq/bin dest=/usr/lib/rabbitmq/sbin
还是应该通过拆分来元素化,例如state:
请理解我相信我的回答是非常主观的。在内部,我的团队大致同意我对此的看法。但是我们还没有为剧本起草任何“格式政策”。
- 应该使用名称 (
name
) 还是注释 (#
)?
如果有助于解释“为什么?”,我们只包含评论。的特定任务。name
是始终存在。的值name
将在剧本运行期间显示。在将角色用作依赖项的情况下,我经常将name
. 几个例子。
参数化name
示例,来自roles/some_container/meta/main.yml
...
dependencies:
- { role: remove_container, container_name: some_container }
...
Run Code Online (Sandbox Code Playgroud)
角色/remove_container/tasks/main.yml
...
- name: Remove containers - {{ container_name }}
docker_container:
name: "{{ container_name }}"
state: absent
force_kill: true
...
Run Code Online (Sandbox Code Playgroud)
评论是免费的name
。角色/remove_image/tasks/main.yml
# The 'docker_image' module, as of EPEL build 2.1.0.0, does not correctly handle 'tag: *' for removing all image tags.
# Below is not pretty but works on systems where you know all the image names.
- name: Remove images - {{ image_name }}
shell: docker rmi -f $(docker images | grep {{ image_name }} | awk '{print $3}')
register: result
changed_when: "'requires a minimum of 1 argument' not in result.stderr"
failed_when:
- "'requires a minimum of 1 argument' not in result.stderr"
- "result.rc != 0"
Run Code Online (Sandbox Code Playgroud)
- 应该是 [k=v] 还是 [k: v]?
我总是使用 'k: v' 语法。另外,我用新行打破单独的值。当阅读有人在一行中塞满了许多“k=v”的剧本时,我的大脑变得扭曲了。当我阅读我感兴趣的键/值时,我发现很难兼顾所有的键/值。
哪个更容易阅读?我认为是第二个例子。
# 1. Launch container k=v
- name: Start A container
docker_container:
name=containerA image=imageA published_ports='443:8443' exposed_ports=8443 volumes='/some/path:/some/path' links='b:b' env='/some/local.fact' pull=false restart_policy=always state=started
# 2. Launch container k: v
- name: Start api container
docker_container:
name: containerA
image: imageB
published_ports:
- "443:8443"
exposed_ports:
- 8443
volumes:
- /some/path:/some/path
links:
- db:db
env: /some/local.fact
pull: false
restart_policy: always
state: started
Run Code Online (Sandbox Code Playgroud)
我有时也会明智地使用空白。
...
# Containers a, b, c comprise 'app d' and can be updated independently.
roles:
- { role: bootstrap_common, tags: bootstrap }
- { role: bootstrap_a, tags: bootstrap }
- { role: bootstrap_b, tags: bootstrap }
- { role: deploy_container_a, tags: a }
- { role: deploy_container_b, tags: b }
- { role: deploy_container_c, tags: c }
...
Run Code Online (Sandbox Code Playgroud)
这取决于你自己的喜好。
像# Make sure Jenkins starts, then configure Jenkins.
这样的评论没有多大意义,因为它们没有添加更多信息。
Inline
支持语法YAML
以与JSON
. Outline
但是应该首选语法,因为代码可读性更好,并且可以使用 diff 更好地审查代码更改。
归档时间: |
|
查看次数: |
448 次 |
最近记录: |