Implemente diferentes roles en diferentes servidores usando un mismo manual

Implemente diferentes roles en diferentes servidores usando un mismo manual

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, becomey roles, por nombrar algunas.

En YAML, para especificar diferentes elementos en una lista, se utiliza el -carácter de guión (). En ambos playbook.xmllibros 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 hostsdeclaració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 hostspalabra rolesclave como se definen dos veces en esa misma jugada. YAML se queja de que tiene dos definiciones diferentes para la palabra clave hostsy roles.

información relacionada