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?
4 Réponses :
Vous devrez peut-être spécifier l'utilisateur ssh ou la clé
ansible_ssh_pass=<PASSWORD>
ansible_ssh_user=<USERNAME>
sinon - partagez la commande ssh qui fonctionne.
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
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?
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é.
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
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 .
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.
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?