Cuando ejecutamos un libro de jugadas, con la salida detallada habilitada, en los registros de ansible podemos ver algo como esto:
2016-02-03 12:51:58,235 p=4105 u=root | PLAY RECAP
Supongo que p=4105 es el pid del libro de jugadas cuando se ejecutó.
¿Hay alguna manera de obtener este pid dentro del libro de jugadas durante su tiempo de ejecución (como una variable, por ejemplo)?
Puede definir el PID para localhost utilizando el módulo set_fact con un filtro de lookup .
- hosts: localhost tasks: - set_fact: pid: "{{ lookup('pipe', 'echo $PPID') }}" Y más adelante puede hacer referencia al PID a través del diccionario hostvars .
- hosts: remote tasks: - debug: var=hostvars.localhost.pidEsto suena un poco como un problema XY , pero una opción puede ser generar un shell con el comando shell y luego solicitar el PID principal:
- name: get pid of playbook shell: | echo "$PPID" register: playbook_pid Esto le dará el PID del proceso de python que está ejecutando el libro de jugadas.
Esto podría ser lo que está buscando, pero solo se aplica a Linux:
- name: Get the pid of this playbook shell: pstree -spal $PPID | grep ansible-playbook | awk '{print $1;exit}' | awk -F, '{print $2}' register: ansible_pid - name: Set the ansible playbook pid variable set_fact: ansible_playbook_pid: "{{ ansible_pid.stdout|int }}"