Подтвердить что ты не робот

Отсутствует пароль sudo в Ansible

Ansible запрашивает пароль sudo из следующего кода, пытается создать нового пользователя postgres.

Сообщение об ошибке:

fatal: [xxx.xxx.xxx.xxx] => Missing sudo password

main.yml

- name: 'Provision a PostgreSQL server'
  hosts: "dbservers"
  sudo: yes
  sudo_user: postgres
  roles:
    - postgres

create_db.yml

- name: Make sure the PostgreSQL users are present
  postgresql_user: name=rails password=secret role_attr_flags=CREATEDB,NOSUPERUSER
  sudo_user: postgres
  sudo: yes

Удаленный_пользователь, который использовал для входа на этот компьютер, является пользователем не -root, у него нет пароля, и он может войти только с помощью ключа auth.

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

Поскольку я вошел в систему как не -root пользователь, конечно, он будет запрашивать пароль при переходе на postgress учетную запись для создания пользователя базы данных. Но пароль не понадобится, если вы переключитесь на postgres из учетной записи root. Итак, мне интересно, есть ли способ переключиться на root, а затем переключиться на пользователя postgres.

Примечание: учетная запись root не имеет открытого ключа, пароля и не может войти через SSH.

4b9b3361

Ответ 1

Попробуйте:

У меня есть похожая проблема, я использовал для запуска моей playbook с -k -k (заглавными буквами). Playbook предложит ввести пароль.

ansible-playbook mail.yml -k -K 

Надеюсь, это поможет!

Ответ 2

Вам нужно будет изменить файл /etc/sudoers, чтобы разрешить пользователю, с которым вы подключаетесь к удаленному серверу, переключиться на другого пользователя без подсказки пароля.

Ответ 3

Добавьте файл в каталог /etc/sudoers.d на целевой машине с именем postgres со следующим содержимым:

postgres ALL=(ALL) NOPASSWD:ALL

Это гарантирует, что пользователь postgres (если вы используете его как пользователя sudo) не будет запрашивать пароль при попытке выполнить команды sudo.

Если вы используете другого пользователя для подключения к целевому компьютеру, вам нужно будет изменить это выше, чтобы вместо этого разрешить NOPASSWD этому пользователю.

Подробнее см. здесь.

Ответ 4

Вам не нужно указывать sudo_user, если ssh_user, который вы используете для соединения, принадлежит группе sudoers, должен только сказать sudo_pass.

Ответ 5

Это может произойти из интерфейса Ansible Tower, если вы выберете опцию "Включить повышение привилегий".