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