Te traemos el hallazgo a esta traba, al menos eso esperamos. Si presentas inquietudes dínoslo, que con placer te responderemos
Solución:
Solución 1:
Si no desea ningún paralelismo al realizar los pasos en su libro de jugadas, establezca el nivel de bifurcación en 1:
ansible-playbook --forks=1 ...
También puede poner esto en su archivo cfg ansible:
[defaults]
forks=1
pero si lo desea de forma individual, use la opción de línea de comando anterior.
EDITAR:
serial: 1
hace algo completamente diferente: es como ejecutar el libro de jugadas para cada host por turno, esperando que se complete el libro de jugadas completo antes de pasar al próximo host. forks=1
significa ejecutar la primera tarea en un juego en un host antes de ejecutar la misma tarea en el próximo host, por lo que la primera tarea se ejecutará para cada host antes de tocar la siguiente tarea.
Entonces quieres forks=1
por una sola jugada; desafortunadamente eso no es posible actualmente.
Solución 2:
Puede ejecutar una sola tarea en serie (es decir, host por host) agregando throttle: 1
lo.
Ejemplo:
---
- hosts: all
tasks:
- name: wait in parallel
command: sleep 20
- name: wait in serial
command: sleep 30
throttle: 1
Referencias:
- Uso de palabras clave para controlar la ejecución
- Palabras clave del libro de jugadas: Tareas
NÓTESE BIEN: throttle
se introdujo en Ansible 2.9
Solución 3:
Hay una solución para este problema: se puede pasar una lista de hosts (o un grupo) a with_items
y luego usar delegate_to
con esta lista. De esta manera, la tarea se ejecutará host por host.
Por ejemplo:
- name: start and enable rabbitmq (run task host by host)
service:
name: "rabbitmq-server"
state: "started"
enabled: true
delegate_to: " item "
with_items: " groups['rabbitmq-cluster'] "
run_once: true
Puedes reafirmar nuestra labor fijando un comentario y dejando una puntuación te estamos agradecidos.