vars set_fact practices playbook hostvars debug best variables username ansible ansible-playbook

variables - practices - ansible set_fact



En ansible, ¿cómo obtengo una variable con el nombre del usuario que ejecuta ansible? (3)

Estoy escribiendo un proceso de implementación que toma el nombre del usuario que ejecuta la secuencia de comandos ansible (por ejemplo, tlau) y crea un directorio de implementación en el sistema remoto basado en ese nombre de usuario y la fecha / hora actual (por ejemplo, tlau-deploy-2014-10 -15-16: 52).

Se podría pensar que está disponible en hechos ansibles (por ejemplo, LOGNAME o SUDO_USER), pero todos están configurados como "root" o la identificación de implementación que se utiliza para ssh en el sistema remoto. Ninguno de ellos contiene el usuario local, el que actualmente está ejecutando el proceso ansible.

¿Cómo puedo hacer un script para obtener el nombre del usuario que ejecuta el proceso ansible y usarlo en mi libro de jugadas?


Puse algo como lo siguiente en todas las plantillas:

# Placed here by {{ lookup(''env'',''USER'') }} using Ansible, {{ ansible_date_time.date }}.

Cuando tiene una plantilla, aparece como:

# Placed here by staylorx using Ansible, 2017-01-11.

Si uso {{ ansible_user_id }} y me he convertido en root, esa variable indica "root", no lo que quiero la mayor parte del tiempo.


Si gather_facts , que está habilitado de forma predeterminada para los libros de jugadas, hay una variable incorporada que se establece llamada ansible_user_id que proporciona el nombre de usuario con el que se ejecutan las tareas. Luego puede usar esta variable en otras tareas o plantillas con {{ ansible_user_id }} . Esto le ahorraría el paso de ejecutar una tarea para registrar esa variable.

Ver: http://docs.ansible.com/playbooks_variables.html#information-discovered-from-systems-facts


Si te refieres al nombre de usuario en el sistema host, imagino que podrías ejecutar una acción local:

- name: get the username running the deploy become: false local_action: command whoami register: username_on_the_host - debug: var=username_on_the_host

En este ejemplo, la salida del comando whoami se registra en una variable llamada "username_on_the_host", y el nombre de usuario estará contenido en username_on_the_host.stdout .

(la tarea de depuración no es necesaria aquí, solo muestra el contenido de la variable)