Question Mot de passe sudo manquant dans Ansible


Ansible demande un mot de passe sudo à partir du code suivant, il essaie de créer un nouvel utilisateur postgres.

Message d'erreur:

fatal: [xxx.xxx.xxx.xxx] => Mot de passe sudo manquant

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

Le remote_user utilisé pour se connecter à cette machine est un non-root utilisateur, il n'a pas de mot de passe, et ne peut se connecter qu'en utilisant la clé auth.

Pour utilisateur postgres, ce compte n’a pas non plus le mot de passe car la base de données vient d’être installée.

Depuis que je me suis connecté en tant que non-root utilisateur, bien sûr, il vous demandera un mot de passe lorsque vous passerez à postgress compte afin de créer un utilisateur de base de données. Mais il ne sera pas nécessaire de mot de passe si passer à postgres à partir du compte root. Donc, je me demande s'il existe un moyen de basculer vers root, puis de passer à l'utilisateur postgres.

Remarque: le compte root n'a pas de clé publique, pas de mot de passe et ne peut pas se connecter depuis SSH.


13
2017-08-30 13:11


origine


Réponses:


Essayer:

J'ai un problème similaire, j'avais l'habitude de lancer mon playbook avec -k -K (majuscule). Le playbook demandera un mot de passe.

ansible-playbook mail.yml -k -K 

J'espère que cela pourra aider!


1
2017-08-15 18:49



Vous devez modifier /etc/sudoers fichier pour permettre à l'utilisateur avec lequel vous vous connectez au serveur de suppression de basculer vers un autre utilisateur sans invite de mot de passe.


0
2017-08-31 20:49



Vous n'avez pas besoin de spécifier le sudo_user si le ssh_user que vous utilisez pour faire la connexion appartient au groupe sudoers, il suffit de dire le sudo_pass.


0
2017-12-12 13:10



Ajouter un fichier à la /etc/sudoers.d répertoire sur la machine cible appelée postgres avec le contenu suivant:

postgres ALL=(ALL) NOPASSWD:ALL

Cela garantit que l'utilisateur postgres (à condition que vous l'utilisiez comme utilisateur sudo) ne soit pas invité à saisir un mot de passe lorsqu'il tente de lancer des commandes sudo.

Si vous utilisez un utilisateur différent pour vous connecter à la machine cible, vous devrez modifier ce qui précède pour accorder à ce dernier l'autorisation NOPASSWD.

Voir ici pour plus de détails.


0
2017-08-22 21:32