Question Existe-t-il un moyen plus élégant de gérer à distance un chef-client?


Voici la méthode recommandée dans le didacticiel Chef Fast Start:

knife ssh name:mynode -a ipaddress  -x ubuntu -i mycredentials.pem "sudo chef-client"

C'est vraiment maladroit. N'y a-t-il pas vraiment une meilleure solution ou est-ce que dans un environnement de production réel, les nœuds se mettent à jour automatiquement de toute façon?


21
2017-07-23 06:57


origine


De quelle manière pensez-vous que c'est "maladroit"? - womble♦
Eh bien, posez-le de cette façon. Cela ne serait pas maladroit: "nom de mise à jour du couteau: mynode". Avoir à préciser comment se connecter au client et le nom de la commande client chef (en plus du fait qu'elle doit être exécutée avec des autorisations sudo) est maladroit. Knife réussit bien à faire disparaître de nombreux autres dégâts - pourquoi pas cela? - Steve Bennett


Réponses:


C’est à peu près ainsi que vous avez commencé les choses, mais cela ne doit être fait qu’une fois. L'exécution initiale de chef-client active et démarre généralement le démon chef-client en tant que service init.d.

Si vous voulez vraiment le faire avec plus d'élégance, vous pouvez abandonner couteau-ssh et exécuter ssh directement:

ssh ubuntu@ipadddress -i mycredentials.pem sudo chef-client

ce sera probablement plus rapide, car knife-ssh effectue une recherche sur le serveur Chef pour extraire les nœuds correspondant au terme recherché (dans ce cas, name:dynode), ce que vous n'avez pas strictement besoin de faire si vous connaissez déjà l'adresse IP.


11
2017-07-23 08:59



Ok, je suppose que cela répond à la question - non, il n'y a pas de meilleur moyen. Dommage que "couteau bootstrap" ne peut pas également réellement exécuter chef-client. - Steve Bennett
Je lance généralement chef-client à la fin de mon script d'amorçage pour résoudre ce problème particulier. Cependant, si vous n'aimez pas couteau-ssh, vous penserez probablement que les composants internes du couteau-bootstrap sont tout aussi inégaux. Il y a un exemple de script sur github. - Tim Potter
le ec2 server create couteau plugin ne fait que démarrer bootstrap suivi de SSH + chef-client. Donc, si cela vous fait vous sentir mieux, les auteurs du Chef n’ont rien découvert de particulièrement intelligent. - kgilpin
Si chef-client met du temps à s'exécuter, vous obtenez un délai d'attente. :( ssh: se connecter à l'hôte xx.xx.xx.xx port 22: connexion expirée - gdanko
Dans le cas où chef-client est exécuté en tant que démon après le démarrage, et quel que soit l'intervalle défini, LA FAÇON LA PLUS ÉLÉGANTE DE L'ENVOYER EST C'EST: ssh ubuntu @ ipadddress -i mycredentials.pem -f -n "sudo killall -USR1 chef -client". Fork ssh pour faire cela simultanément à une liste de nœuds. - Andrew S


Vous pourriez utiliser couteau ssh exécuter chef-client sur toutes les boîtes contenant un certain rôle ou une certaine recette:

knife ssh "role:web" "sudo chef-client" -x ubuntu --sudo 

Ou si vous êtes dans EC2:

knife ssh "role:web" "sudo chef-client" -x ubuntu -a ec2.public_hostname 

11
2018-02-04 22:09





Vous pouvez utiliser ansible pour déployer et exécuter chef-client.

$ ansible -i hosts all -a 'chef-client'

ansible s'installe facilement avec pip:

pip install ansible

Votre fichier d'inventaire (dans l'exemple, nommé "hôtes") pourrait ressembler à ceci:

[all] host1.example.com ansible_user=root host2.example.com ansible_user=root host3.example.com ansibel_user=root

(notez "all" est le nom du groupe dans le fichier de configuration pour notre exemple - ceci est arbitraire et peut être n'importe quoi. Votre fichier d'inventaire peut également inclure d'autres groupes, par exemple [web_wervers], [database_servers], [chef_servers] , etc.)

Donc, encore une fois, assembler le tout:

> ansible -i hosts all -a 'chef-client'

ou peut-être:

> ansible -i hosts all -a 'systemctl status'


2
2018-05-22 05:36





J'utilise Jenkins CI pour gérer les pistes. Le serveur Linux est configuré en tant que station de travail et Jenkins est installé sur celui-ci. Donc, je peux amorcer les nœuds avec run_list modifié. Quoi qu’il en soit, le processus d’amorçage exécute chef-client à la fin.

Pour l'exécution ad hoc, le travail Jenkins exécute des commandes couteau afin de modifier la liste d'exécution pour un nœud et d'utiliser le plug-in SSH pour exécuter le chef-client sur le nœud souhaité.


0
2018-05-19 14:52





Il est dommage que pour envoyer une commande au chef cuisinier, nous devons utiliser le soulignement SSH.

Il semble que, bien que chaque client Chef ait établi une connexion sécurisée avec le serveur Chef, ce dernier ne fournit pas de multiplexeur de commandes sur cette connexion sécurisée. Pourquoi?


0
2018-03-07 06:16