Dans ansible, comment puis-je obtenir une variable portant le nom de l’utilisateur exécutable?

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

Vous pensez que cela est disponible dans des faits pertinents (par exemple, LOGNAME ou SUDO_USER), mais ceux-ci sont tous définis sur “root” ou sur l’ID de déploiement utilisé pour ssh dans le système distant. Aucun de ceux-ci ne contient l’utilisateur local, celui qui exécute actuellement le processus ansible.

Comment puis-je créer un script pour obtenir le nom de l’utilisateur exécutant le processus ansible et l’utiliser dans mon livre de jeu?

Si vous voulez dire le nom d’utilisateur sur le système hôte, j’imagine que vous pourriez simplement 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 de la commande whoami est enregistrée dans une variable appelée “username_on_the_host” et le nom d’utilisateur sera contenu dans username_on_the_host.stdout .

(la tâche de débogage n’est pas requirejse ici, elle montre simplement le contenu de la variable)

Si vous gather_facts , qui est activé par défaut pour les playbooks, il existe une variable ansible_user_id appelée ansible_user_id qui ansible_user_id l’utilisateur que les tâches sont en cours d’exécution. Vous pouvez ensuite utiliser cette variable dans d’autres tâches ou modèles avec {{ ansible_user_id }} . Cela vous éviterait 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

Je mets quelque chose comme ceci dans tous les modèles:

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

Lorsque le modèle est dessus, il apparaît comme suit:

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

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