J'écris 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 et de l'heure actuelles (par exemple, tlau-deploy-2014-10 -15-16: 52).
Vous penseriez que cela est disponible dans plusieurs faits (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 parlez du nom d'utilisateur sur le système hôte, j'imagine que vous pouvez simplement exécuter une action locale:
- name: get the username running the deploy
become: false
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 requise ici, elle montre simplement le contenu de la variable)
Si vous gather_facts
, activé par défaut pour les playbooks, il existe une variable intégrée définie comme ansible_user_id
qui fournit le nom d'utilisateur sous lequel les tâches sont exécutées. Vous pouvez ensuite utiliser cette variable dans d'autres tâches ou modèles avec {{ ansible_user_id }}
. Cela vous éviterait 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 ce qui suit dans tous les modèles:
# Placed here by {{ lookup('env','USER') }} using Ansible, {{ ansible_date_time.date }}.
Lorsque vous modélisez dessus, il apparaît comme suit:
# 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.