Назад | Перейти на главную страницу

Отменить доступный по умолчанию ssh_user

В 99% случаев, когда я использую ansible, я использую ansible_ssh_user, указанный в моем файле hosts. В остальном 1% случаев этот пользователь не существует, и мне нужно использовать пользователя по умолчанию для его создания. Как я могу запустить playbook таким образом, чтобы он переопределил ansible_ssh_user в файле hosts?

Я пробовал следующее:

ansible-playbook my-playbook.yaml --user default --ask-pass

Но это все равно привело к следующей ошибке:

fatal: [target]: UNREACHABLE! => {"changed": false, "msg": "Invalid/incorrect password: Permission denied, please try again.", "unreachable": true}

Это сработало только после того, как я закомментировал ansible_ssh_user в моем файле hosts, но было бы довольно неудобно комментировать / раскомментировать эту строку каждый раз.

Вы можете передать дополнительные переменные в командной строке ansible-playbook, чтобы переопределить пользователя Ansible. Например:

ansible-playbook .... --extra-vars "ansible_ssh_user=nobody"

На странице руководства говорится:

       -e, --extra-vars
          set  additional  variables  as  key=value  or YAML/JSON, if filename
          prepend with @

Таким образом, вы можете передавать пары ключ / значение, YAML, JSON или файл, содержащий переменные для использования. Но для вашего случая, вероятно, достаточно одной пары ключ-значение.


Это хорошее время, чтобы пересмотреть процесс подготовки. Я, например, удостоверяюсь, что доступный пользователь создан с правильными ssh authorized_keys во всех моих кикстартах.

В дополнение к правильному ответу Майкла вы можете указать ANSIBLE_REMOTE_USER в окружающей среде, установите remote_user в вашем ansible.cfg и / или установите remote_user в верхней части вашей пьесы.