Ansible: ansible_user в инвентаре против remote_user в playbook
Я пытаюсь запустить Ansible playbook против сервера, используя учетную запись, отличную от той, которую я зарегистрировал на управляющей машине. Я попытался указать ansible_user
в файле инвентаризации в соответствии с документацией на Inventory:
[srv1]
192.168.1.146 ansible_connection=ssh ansible_user=user1
Однако Ansible, вызываемый с помощью ansible-playbook -i inventory playbook.yml -vvvv
, печатает следующее:
GATHERING FACTS ***************************************************************
<192.168.1.146> ESTABLISH CONNECTION FOR USER: techraf
Что сработало для меня, это добавить аргумент remote_user
в playbook:
- hosts: srv1
remote_user: user1
Теперь та же самая Ansible-команда соединяется как user1
:
GATHERING FACTS ***************************************************************
<192.168.1.146> ESTABLISH CONNECTION FOR USER: user1
Также добавление переменной remote_user
в ansible.cfg
делает Ansible используемым пользователем, а не вошедшим в систему.
Являются ли ansible_user
в файле инвентаря и remote_user
в playbook/ansible.cfg
для разных целей?
Для чего используется ansible_user
? Или почему Ansible не соблюдает настройки в инвентаре?
Ответы
Ответ 1
Вероятно, вы столкнулись с общей проблемой: опубликованные доступные документы предназначены для версии разработки (2.0 прямо сейчас), и мы не сохраняем старые. Это большая точка зрения... Предполагая, что вы используете что-то до 2.0, требуемое имя инвентаря var ansible_ssh_user
. ansible_user
работает в 2.0 (как и ansible_ssh_user
- он получает псевдоним).
Ответ 2
Я обычно добавляю свое удаленное имя пользователя в /etc/ansible/ansible.cfg
следующим образом:
remote_user = MY_REMOTE_USERNAME
Таким образом, нет необходимости настраивать ansible_user в файле инвентаризации для каждой записи хоста.