1
votes

["Connexion partagée fermée."], "Stdout": "sudo: un mot de passe est requis \ r \ n lors de l'utilisation du playbook Ansible

J'essaie d'exécuter un playbook Ansible pour déployer le cluster Kubernetes à l'aide de l'outil kubespray sur le système d'exploitation Ubuntu 16.04. J'ai une machine de base qui est installée avec Ansible et le référentiel kubespray Git cloné. Et un nœud maître et deux nœuds de calcul dans le cluster.

Mon fichier hôte (mis à jour) comme la capture d'écran suivante,

TASK [adduser : User | Create User Group] 
Thursday 04 April 2019  11:34:55 -0400 (0:00:00.508)       0:00:33.383 ********
fatal: [MILDEVKUB040]: FAILED! => {"changed": false, "msg": "groupadd: Permission denied.\ngroupadd: cannot lock /etc/group; try again later.\n", "name": "kube-cert"}
fatal: [MILDEVKUB020]: FAILED! => {"changed": false, "msg": "groupadd: Permission denied.\ngroupadd: cannot lock /etc/group; try again later.\n", "name": "kube-cert"}
fatal: [MILDEVKUB030]: FAILED! => {"changed": false, "msg": "groupadd: Permission denied.\ngroupadd: cannot lock /etc/group; try again later.\n", "name": "kube-cert"}

Emplacement des hôtes Le fichier .ini est / inventaire / échantillon. Et j'essaye la commande Ansible suivante

127.0.0.1 MILDEVDCR01.Milletech.us MILDEVDCR01
192.168.16.173 MILDEVKUB020.Milletech.us MILDEVKUB020
192.168.16.176 MILDEVKUB030.Milletech.us MILDEVKUB030
192.168.16.177 MILDEVKUB040.Milletech.us MILDEVKUB040

Et j'utilise le playbook "cluster.yml" à partir du lien suivant

https://github.com/kubernetes-sigs/kubespray/blob/master/cluster.yml

Et mon fichier / etc / hosts contenant les entrées,

sudo ansible-playbook -i inventory/sample/hosts.ini cluster.yml --user=uName --extra-vars "ansible_sudo_pass=pwd"

Erreur mise à jour

[all]
MILDEVKUB020 ansible_ssh_host=MILDEVKUB020 ip=192.168.16.173 ansible_user=uName  ansible_ssh_pass=pwd
MILDEVKUB030 ansible_ssh_host=MILDEVKUB030 ip=192.168.16.176 ansible_user=uName  ansible_ssh_pass=pwd
MILDEVKUB040 ansible_ssh_host=MILDEVKUB040 ip=192.168.16.177 ansible_user=uName  ansible_ssh_pass=pwd

[kube-master]
MILDEVKUB020

[etcd]
MILDEVKUB020

[kube-node]
MILDEVKUB020
MILDEVKUB030
MILDEVKUB040

[k8s-cluster:children]
kube-master
kube-node

J'obtiens une erreur comme celle-ci même si je suis capable de connecter toutes les machines de la machine de base en utilisant ssh. Comment puis-je déterminer quel est mon problème pour exécuter cette commande pour déployer le cluster Kubernetes?


2 commentaires

Une autre question ici sur StackOverflow devrait vous être utile Comment exécuter un livre de jeu ansible avec une clé privée protégée par une phrase de passe?


J'ai supprimé le chemin de clé ssh. J'utilise le nom d'utilisateur et le mot de passe, puis j'obtiens également une erreur comme un mot de passe est requis. J'ai mis à jour le fichier d'inventaire, pouvez-vous vérifier?


4 Réponses :


1
votes

Vous devrez peut-être spécifier l'utilisateur ssh ou la clé

  • Ajouter un nom d'utilisateur à l'inventaire avec
ansible_ssh_pass=<PASSWORD>
  • Ajouter un mot de passe avec:
ansible_ssh_user=<USERNAME>

sinon - partagez la commande ssh qui fonctionne.


2 commentaires

J'ai supprimé l'identité de la clé par key-add -D. Maintenant, je n'utilise pas la méthode clé. J'essaie d'utiliser l'authentification par nom d'utilisateur et mot de passe. Ensuite, j'obtiens également le mot de passe est une erreur requise. J'ai mis à jour mon inventaire et mon résultat d'erreur. Peux tu vérifier s'il te plaît?


Consultez la documentation sur l'utilisation de --ask-before-pass - je crois que cela demande un mot de passe. Quote: Lorsque vous parlez avec des machines distantes, Ansible suppose par défaut que vous utilisez des clés SSH. Les clés SSH sont encouragées mais l'authentification par mot de passe peut également être utilisée si nécessaire en fournissant l'option --ask-pass. Si vous utilisez les fonctionnalités sudo et que sudo nécessite un mot de passe, indiquez également --ask-devenir-pass



0
votes

Si vous avez supprimé la phrase de passe, la connexion ssh devrait être correcte maintenant. Avez-vous mis à jour les clés ssh sur les hôtes distants après vos modifications?


1 commentaires

Non, je n'ai pas mis à jour. Parce que j'ai essayé d'accéder à tous ceux-ci uniquement en utilisant un nom d'utilisateur et un mot de passe. Avant la mise à jour de la clé, il demandait une phrase de passe pour chaque ssh. Maintenant, il demande directement le mot de passe de la machine distante. Parce que je n'ai pas mis à jour la clé dans toutes ces machines. Veuillez me corriger si je me suis trompé.



1
votes

Si vous utilisez une combinaison utilisateur / mot de passe pour vous connecter. L'utilisateur avec lequel ansible est exécuté doit être présent dans le fichier sudoers pour passer à root ou à un autre utilisateur privilégié

Vérifiez les sudoers et essayez de faire manuellement un sudo su root sur le serveur cible


9 commentaires

Mais j'utilise le mot-clé sudo avant la commande ansible-playbook. J'exécute la commande ansible avec sudo pour donner l'autorisation root.


cela ne suffit pas sudo: yes ne fonctionne que lorsque l'utilisateur est présent dans le fichier sudoers. essayez d'exécuter la même commande sur le nœud distant avec et vérifiez la sortie


Cet utilisateur est déjà membre de sudo - ce message que j'ai reçu. Mais j'obtiens toujours la même erreur.


pouvez-vous envoyer le lien du playbook, c'est-à-dire cluster.yml s'il est hébergé sur github? ou mettre à jour si vous l'avez écrit


L'une des tâches est devenue vraie, alors utilisez le paramètre ci-dessus et pour le mot de passe stackoverflow.com/questions/21870083/...


Son erreur working.password requise a été résolue.Mais après avoir continué longtemps dans le terminal, j'obtiens une autre erreur - je mets à jour en question. Il montre également une défaillance d'authentification. Pouvez-vous s'il vous plaît regarder là-dessus? Et merci pour votre bonne réponse.


@Jacob bien sûr. ce qui précède n'est pas lié au mot de passe, je crois, laissez-moi vérifier le code. Je mettrai à jour bientôt. Veuillez également essayer d'ajouter les liens du dépôt au cas où vous utilisez quelque chose de la communauté. kubespray est populaire mais pratique à vérifier


J'ai mis à jour mon fichier hôte et etc / hosts. J'apporte des modifications lorsque j'obtiens l'erreur de nom d'hôte non configurée. Pouvez-vous s'il vous plaît regarder là-dessus?


continuons cette discussion dans le chat .



1
votes

Après avoir essayé beaucoup de recherches, j'ai trouvé qu'il fallait mettre les paramètres "--ask-pass --become --ask-devenir-pass" lorsque nous exécutons le playbook ansible. J'ai essayé la commande suivante,

[all]
mildevkub020 ansible_ssh_host=mildevkub020 ip=192.168.16.173 ansible_user=uName  
ansible_ssh_pass=pwd
mildevkub030 ansible_ssh_host=mildevkub030 ip=192.168.16.176 ansible_user=uName  
ansible_ssh_pass=pwd
mildevkub040 ansible_ssh_host=mildevkub040 ip=192.168.16.177 ansible_user=uName  
ansible_ssh_pass=pwd

[kube-master]
mildevkub020

[etcd]
mildevkub020

[kube-node]
mildevkub020
mildevkub030
mildevkub040

[k8s-cluster:children]
kube-master
kube-node

Et, quand il continuera avec le déploiement du cluster kubernetes, il se posera à nouveau le problème du nom d'inventaire à utiliser uniquement avec de petites lettres. J'ai donc édité tout le nom de l'inventaire et etc / hostname et / etc / hosts avec un petit nom d'hôte. Et a également mis toutes les petites lettres dans le fichier d'inventaire. Maintenant, cela fonctionne avec succès.

le / etc / hosts contient comme suit,

mildevdcr01

etc / hostname

127.0.0.1 MILDEVDCR01.Milletech.us mildevdcr01
192.168.16.173 MILDEVKUB020.Milletech.us mildevkub020
192.168.16.176 MILDEVKUB030.Milletech.us mildevkub030
192.168.16.177 MILDEVKUB040.Milletech.us mildevkub040

Et hosts.ini comme suit,

sudo ansible-playbook -i inventory/sample/hosts.ini cluster.yml --user=docker --ask-pass --become --ask-become-pass

Si nous procédons ainsi, nous obtiendrons le cluster Kubernetes déployé sur les machines hôtes de destination.


0 commentaires