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?
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)
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
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.