
Fe, creé dos roles a través de "ansible-galaxy init": implementar_back y implementar_front
También escribí un archivo playbook.yml.
- name: Create cluster
become: yes
hosts: all
roles:
- deploy_front
- deploy_back
Si lo ejecuto a través de "ansible-playbook playbook.yml", en ambos servidores se implementarán dos roles. ¿Cómo puedo implementar diferentes roles en diferentes servidores en un mismo manual?
Si escribo playbook.yml
- name: Create cluster
become: yes
hosts: front
roles:
- deploy_front
hosts: db
roles:
- deploy_db
entonces las salidas se ven como "...encontré una clave de dictado duplicada (hosts)... encontré una clave de dictado duplicada (roles)... Usando solo el último valor definido".
Respuesta1
Debes separar tus hosts:
declaraciones y las de otras personas en diferentes jugadas. El código debería verse así:
- name: Create front cluster
become: yes
hosts: front
roles:
- deploy_front
- name: Create db cluster
become: yes
remote_user: different-db-user
hosts: db
roles:
- deploy_db
Respuesta2
La razón por la que recibe un mensaje de "clave duplicada" se debe a la forma en que está estructurado el YAML.
Un libro de jugadas es una colección de jugadas, en forma de lista ordenada. Cada jugada está especificada por una serie de pares de palabras clave/valor. ComúnjugarLas palabras clave son: name
, hosts
, become
y roles
, por nombrar algunas.
En YAML, para especificar diferentes elementos en una lista, se utiliza el -
carácter de guión (). En ambos playbook.xml
libros de jugadas de ejemplo, solo tienes un carácter de guión en el extremo izquierdo. Eso significa que solo tienes una lista de un elemento para un libro de jugadas, o un libro de jugadas de una sola jugada.
Si agrega un carácter de guión antes de su segunda hosts
declaración en su segundo ejemplo playbook.yml
, tendrá un libro de jugadas válido que ahora contiene dos jugadas:
- name: Create cluster
become: yes
hosts: front
roles:
- deploy_front
- hosts: db
roles:
- deploy_db
En su segundo ejemplo original, solo se define una obra. Además, tanto la hosts
palabra roles
clave como se definen dos veces en esa misma jugada. YAML se queja de que tiene dos definiciones diferentes para la palabra clave hosts
y roles
.