Tenho uma função no Ansible para instalar arquivos de configuração do Nginx e quero usá-la para instalar arquivos diferentes em conjuntos de hosts diferentes. Aqui está o manual:
- name: Deploy centralised Nginx services
hosts: central_web_servers
roles:
- role: nginx_setup
web_services: "{{ central_web_services }}"
- name: Deploy per-site Nginx services
hosts: common_web_servers
roles:
- role: nginx_setup
web_services: "{{ common_web_services }}"
De acordo com a documentação declarei web_services
ser um parâmetro em meta/argument_specs.yml
:
argument_specs:
main:
short_description: Main entry point for the nginx role
description:
- Install configuration files for Nginx web services,
as given by the "web_services" parameter.
author:
- Peter Westlake
options:
web_services:
type: "list"
elements: "str"
required: true
description: "The services to run on the given hosts."
Mas ele só executa a primeira peça.
Tentei adicionar meta/main.yml
com, allow_duplicates: true
mas isso também não ajudou.
Colocar ambas as chamadas de função em uma única jogada não vai funcionar por causa dos diferentes hosts.
Eu simulei uma função e executei o playbook, e ambas as tarefas da função foram executadas corretamente, como esperado. Se a segunda função não for executada no seu ambiente, aposto que é porque a primeira falhou em algum momento. Então o playbook está correto, há algo errado com a função.