playbooks - Ansible obtener el nombre de usuario de la línea de comandos
ansible tower (2)
Como declaró Woodham, la variable ansible que representa al usuario que se conecta es
{{ ansible_user }} (Ansible < 2.0 was {{ ansible_ssh_user }} )
Pero no tiene que definirlo en el archivo de inventario per se.
Se puede definir en:
1. Su juego, si usa ansible-playbook: vea el manual en Playbooks
- name: Some play
hosts: all
remote_user: ubuntu
2. En el archivo de inventario: ver el manual de inventario.
[all]
other1.example.com ansible_user=ubuntu (Ansible < 2.0 was ansible_ssh_user)
3. Como dijiste, en la línea de comandos:
ansible-playbook -i inventory -u ubuntu playbook.yml
4. Un archivo de configuración ansible como una directiva de remote_user
. Ver el manual en un archivo de configuración.
El archivo de configuración ansible se puede colocar en la carpeta actual ansible.cfg
, su homedir .ansible.cfg
o /etc/ansible/ansbile.cfg
.
[defaults]
remote_user=ubuntu
En mis libros de jugadas me refiero a un nombre de usuario (exclusivamente su "ubuntu") mucho.
¿Existe una forma integrada de decir "obtenerlo del valor pasado en la línea de comando"?
Se que puedo hacer
ansible-playbook <task> -u <user> -K --extra-vars "user=<user>"
y luego puedo usar {{user}}
en el libro de jugadas, pero se siente extraño definir al usuario dos veces.
Creo que la forma estándar de hacerlo sería definir ansible_ssh_user en el archivo de inventario y luego puede hacer referencia a él como {{ansible_ssh_user}} en el libro de jugadas.