Отсутствие пароля sudo при попытке ‘стать_пользователем’ в качестве пользователя без пароля, настроенного ‘ALL=(ALL) NOPASSWD:ALL’.

Вопрос или проблема

Отсутствие пароля sudo при попытке ‘стать_пользователем’ в качестве пользователя без пароля, настроенного ‘ALL=(ALL) NOPASSWD:ALL’.

Я пытаюсь использовать параметры ‘become’ и ‘become_user’ в плейбуке, где у пользователя, о котором идет речь, есть sudo без пароля на целевой машине. Но каждый раз, когда я пытаюсь запустить плейбук, я получаю ошибку “Отсутствует пароль sudo”.

Хост подключен как ‘bob’. Эта учетная запись также является основным пользователем на целевом сервере Ubuntu. (Учетная запись, созданная при установке.) Есть вторая учетная запись под названием ‘ansible’, к которой я пытаюсь подключиться.

Пользователь ‘ansible’ включен в файл ‘/etc/sudoers.d/90-cloud-init-users’ следующим образом:

ansible ALL=(ALL) NOPASSWD:ALL

У него также нет пароля в ‘/etc/shadow’ (ansible:!:19983:0:99999:7:::). Использую SSH-ключи, если мне действительно нужно войти как пользователь.

Плейбук выглядит так:

- hosts: nas
  become: true
  become_user: ansible
  roles:

Но всякий раз, когда я запускаю плейбук, я получаю:

fatal: [XXX]: FAILED! => {"msg": "Missing sudo password"}

Указание всех методов для добавления пароля (-K и тому подобное) и оставление его пустым не срабатывает.

Я просто хочу иметь возможность выполнять следующее, не вводя никаких дополнительных паролей, кроме добавления моих SSH-ключей в ssh-agent.

 ansible-playbook -i inventory playbook.yml --limit nas

Хост подключен как ‘bob’ … есть вторая учетная запись под названием ‘ansible’, к которой я пытаюсь подключиться.

Этот ввод sudo …

ansible ALL=(ALL) NOPASSWD:ALL

… предоставляет «суперспособности» учетной записи ansible, а не учетной записи bob.
Перечитайте справочные страницы по формату файла sudoers.

Вам нужно что-то более похожее на это:

bob ALL=(ansible) NOPASSWD:ALL

Это позволит bob выполнять что угодно от имени учетной записи ansible.

Похоже, что ansible не запрограммирован таким образом, чтобы делать то, что я хочу, после длительного времени, проведенного за изучением длинных и подробных выводов.

Тем не менее, я нашел что-то, что сделает то, что я хочу.

Считайте этот вопрос решенным.

Ответ или решение

Если вы столкнулись с проблемой "Missing sudo password" при использовании Ansible для перехода на пользователя ansible, который настроен для использования sudo без пароля, важно понимать, что права sudo, указанные в файле /etc/sudoers.d/90-cloud-init-users, относятся только к пользователю ansible. На основании вашего описания, у пользователя bob нет разрешений для выполнения команд от имени пользователя ansible.

Чтобы исправить данную ситуацию, необходимо внести изменения в конфигурацию sudo, разрешив пользователю bob использовать команду sudo от имени пользователя ansible без запроса пароля. Для этого следует изменить строку в файле sudoers, как показано ниже:

  1. Откройте файл /etc/sudoers или файл с настройками в директории /etc/sudoers.d/, в который вы добавляете права, и добавьте следующую строку:
    bob ALL=(ansible) NOPASSWD:ALL

Это позволит пользователю bob выполнять любые команды от имени ansible, не вводя пароля.

  1. Проверьте, что файл сохраняется в правильном формате и без ошибок. Для проверки синтаксиса используйте команду visudo, которая автоматически проверяет конфигурацию на наличие ошибок.

  2. Теперь ваш playbook должен работать без запроса пароля, если вы будете запускать его следующим образом:
    - hosts: nas
     become: true
     become_user: ansible
     roles:

Если вы продолжите сталкиваться с проблемами, убедитесь, что:

  • SSH-ключи настроены правильно и добавлены в агент SSH.
  • Ваши настройки Ansible корректны и выполняются на нужных хостах.

С таким изменением вы сможете без затруднений выполнить команды от имени пользователя ansible без необходимости ввода пароля.

Оцените материал
Добавить комментарий

Капча загружается...