¿Cómo configurar un usuario ssh predeterminado para todos los hosts en Ansible?

11

Ansible versión 2.1

Tengo un archivo de inventario hosts

[nodes]
host1
host2
...

Y un simple libro de jugadas site.yml

---
- hosts: all
  tasks:
    - include: tasks/main.yml

Si acabo de comenzar la obra,

ansible-playbook -i hosts site.yml -vvvv

Me sale este error para todos los hosts,

ESTABLISH SSH CONNECTION FOR USER: None
fatal: [host1]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
...

Sin embargo, al leer el documento de inventario de Ansible , agregué ansible_useral hostsarchivo,

[nodes]
host1    ansible_user=root
host2    ansible_user=root
...

Esto resuelve el SSH CONNECTION UNREACHABLEerror. Sin embargo, ¿tengo que agregar al ansible_user=rootlado de todos los hosts? ¿O hay una manera más simple de hacer esto?

Howard Lee
fuente

Respuestas:

11

Verifique el ansible.cfgarchivo de ejemplo / predeterminado y encontrará esto en [defaults]:

# default user to use for playbooks if user is not specified
# (/usr/bin/ansible will use current user as default)
#remote_user = root

Descomente remote_usery configure el usuario en el que desea iniciar sesión.

¿Dónde llega Ansible ansible.cfg? El mismo archivo explica:

# nearly all parameters can be overridden in ansible-playbook 
# or with command line flags. ansible will read ANSIBLE_CONFIG,
# ansible.cfg in the current working directory, .ansible.cfg in
# the home directory or /etc/ansible/ansible.cfg, whichever it
# finds first
Deltik
fuente
Gracias @Deltik, ¿podrías responder a esta también?
Howard Lee
@HowardLee: su otra pregunta se basa principalmente en la opinión y no es una buena opción para Super User.
Deltik
4

Otra forma es usar --userpara definir un usuario ssh remoto. Escriba ansible-playbook --helppara leer más. Este es mi comando típico:

ansible-playbook -i hosts site.yml --user <user> --ask-pass -vvvv

--ask-pass le pedirá que ingrese la contraseña para --user

Howard Lee
fuente