Как установить пользователя ssh по умолчанию для всех хостов в Ansible?
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
рядом со всеми хозяевами? Или есть более простой способ сделать это?
3 ответа
Проверьте пример / по умолчанию ansible.cfg
файл, и вы найдете это:
# 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
Другой способ заключается в использовании --user
определить удаленного пользователя SSH. Тип ansible-playbook --help
читать больше. Это моя типичная команда:
ansible-playbook -i hosts site.yml --user <user> --ask-pass -vvvv
--ask-pass
предложит ввести пароль для --user
В дополнение к изменению ansible.cfg
, вы также можете определить переменные для группы "все" или других групп
https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
[all:vars]
ansible_user = root
ansible_port = 22