В 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
в верхней части вашей пьесы.