Por favor, entenda que acredito que minha resposta seja altamente subjetiva. Internamente, minha equipe concorda com minhas opiniões sobre isso. Mas não elaboramos nenhuma "política de formatação" para livros didáticos.
- Should name (
name
) be used or a comment (#
)?
Nós só incluímos comentários se for útil para explicar o "por quê?" da tarefa específica. name
é sempre presente. O valor de name
será exibido durante a execução do playbook. Nos casos em que uma função é usada como dependência, eu frequentemente parametrizava name
. Alguns exemplos.
Parametrizado name
example, de roles / some_container / meta / main.yml
...
dependencies:
- { role: remove_container, container_name: some_container }
...
roles / remove_container / tasks / main.yml
...
- name: Remove containers - {{ container_name }}
docker_container:
name: "{{ container_name }}"
state: absent
force_kill: true
...
Comentários como cortesia para name
. roles / 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"
- Should it be [k=v] or [k: v]?
Eu sempre uso a sintaxe 'k: v'. Além disso, divido valores separados com uma nova linha. Ao ler uma peça em que alguém colocou muitos 'k = v' em uma única linha, meu cérebro fica distorcido. Eu acho muito difícil conciliar todas as chaves / valores enquanto eu leio para aqueles que me interessam.
Qual é mais fácil de ler? Eu acho que o segundo exemplo.
# 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
Eu também uso criteriosamente o espaço em branco às vezes.
...
# 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 }
...