Как установить пользователя ssh по умолчанию для всех хостов в Ansible?

11

Ansible версия 2.1

У меня есть файл инвентаря hosts

[nodes]
host1
host2
...

И простая пьеса site.yml

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

Если я просто начну играть,

ansible-playbook -i hosts site.yml -vvvv

Я получаю эту ошибку для всех хостов,

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

Однако, читая Ansible Inventory doc, я добавил ansible_userв hostsфайл

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

Это решает SSH CONNECTION UNREACHABLEошибку. Тем не менее, я должен добавить ansible_user=rootрядом со всеми хостами? Или есть более простой способ сделать это?

Говард Ли
источник

Ответы:

11

Проверьте ansible.cfgфайл примера / по умолчанию , и вы найдете это в [defaults]:

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

Раскомментируйте remote_userи задайте пользователю то, что вы хотите войти как.

Откуда Ansible ansible.cfg? Этот же файл объясняет:

# 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
источник
Спасибо @Deltik, не могли бы вы ответить и на этот вопрос ?
Говард Ли
@HowardLee: Ваш другой вопрос в первую очередь основан на мнении и не подходит для Супер пользователя.
Дельтик
4

Другой способ - использовать --userдля определения удаленного пользователя ssh. Напечатайте, ansible-playbook --helpчтобы читать больше. Это моя типичная команда:

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

--ask-pass предложит ввести пароль для --user

Говард Ли
источник