Dans ansible, comment puis-je obtenir une variable avec le nom de l'utilisateur qui exécute ansible?

Je scripte un processus de déploiement qui prend le nom de l'utilisateur qui exécute le script possible (par exemple tlau) et crée un répertoire de déploiement sur le système distant basé sur ce nom d'utilisateur et la date/heure actuelle (par exemple tlau-deploy-2014-10-15-16:52).

vous pensez que cela est disponible dans des faits possibles (par exemple LOGNAME ou SUDO_USER), mais ceux-ci sont tous définis à "root" ou l'id de déploiement utilisé pour SSH dans le système distant. Aucun de ceux-ci ne contient l'utilisateur local, le un qui exécute actuellement le processus possible.

Comment puis-je script obtenir le nom de l'utilisateur qui exécute le processus ansible et l'utiliser dans mon playbook?

40
demandé sur Tessa Lau 2014-10-16 03:56:47

3 réponses

si vous voulez dire le nom d'utilisateur sur le système hôte, j'imagine que vous pouvez lancer une action locale:

- name: get the username running the deploy
  local_action: command whoami
  register: username_on_the_host

- debug: var=username_on_the_host

dans cet exemple, la sortie du whoami la commande est enregistrée dans une variable appelée "username_on_the_host", et le nom d'utilisateur sera contenue dans username_on_the_host.stdout.

(la tâche de débogage n'est pas requise ici, elle ne fait que démontrer le contenu de la variable)

43
répondu Ramon de la Fuente 2016-03-12 14:10:01

Si vous gather_facts, qui est activé par défaut pour les playbooks, il y a une variable intégrée qui s'appelle ansible_user_id qui fournit l'utilisateur sous lequel les tâches sont exécutées. Vous pouvez ensuite utiliser cette variable dans d'autres tâches ou des modèles avec {{ ansible_user_id }}. Cela vous épargnerait l'étape d'exécuter une tâche pour enregistrer cette variable.

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

53
répondu Tony Cesaro 2017-11-11 04:02:33

j'ai mis quelque chose comme ce qui suit dans toutes les modèles de:

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

Quand basées sur des modèles de plus, il apparaît que:

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

Si j'utilise {{ ansible_user_id }} et je suis devenu root alors cette variable indique "root", pas ce que je veux la plupart du temps.

20
répondu staylorx 2017-01-11 16:29:06