web-dev-qa-db-fra.com

Possibilité d'obtenir le nom d'utilisateur à partir de la ligne de commande

Dans mes playbooks, je fais souvent référence au nom d'utilisateur (exclusivement son "ubuntu").

Existe-t-il un moyen intégré de dire "obtenez-le à partir de la valeur passée dans la ligne de commande"?

Je sais que je peux faire

ansible-playbook <task> -u <user> -K --extra-vars "user=<user>"

puis je peux utiliser {{user}} dans le playbook, mais il semble étrange de définir l'utilisateur deux fois.

21
rich tier

Comme l'a déclaré Woodham, la variable ansible qui représente l'utilisateur qui se connecte est

{{ ansible_user }} (Ansible < 2.0 was {{ ansible_ssh_user }} )

Mais vous n'avez pas à le définir dans le fichier d'inventaire en soi.

Vous pouvez le définir dans:

1. Votre jeu, si vous utilisez ansible-playbook: Voir le manuel sur Playbooks

- name: Some play
  hosts: all
  remote_user: ubuntu

2. Dans le fichier d'inventaire: Voir le manuel sur l'inventaire

[all]
other1.example.com     ansible_user=ubuntu (Ansible < 2.0 was ansible_ssh_user)

3. Comme vous l'avez dit, sur la ligne de commande:

ansible-playbook -i inventory -u ubuntu playbook.yml

4. Un fichier de configuration ansible en tant que remote_user directive. Voir le manuel sur un fichier de configuration

Le fichier de configuration ansible peut être placé dans le dossier actuel ansible.cfg, votre homedir .ansible.cfg ou /etc/ansible/ansbile.cfg.

[defaults]
remote_user=ubuntu
33

Je crois que la façon standard de le faire serait de définir ansible_ssh_user dans le fichier d'inventaire et vous pouvez ensuite le référencer comme {{ansible_ssh_user}} dans le playbook.

2
Woodham