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 vraiment pas de meilleure façon, ou est-ce l'idée que dans un environnement de production réel, vous aurez quand même des nœuds à mise à jour automatique?
Réponses:
Ce serait à peu près ainsi que vous commenceriez les choses, mais cela ne doit être fait qu'une seule 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 vouliez vraiment le faire de façon plus élégante, vous pouvez abandonner le couteau-ssh et exécuter directement ssh:
cela sera probablement plus rapide, car knife-ssh effectue une recherche sur le serveur Chef pour récupérer les nœuds correspondant au terme de recherche (dans ce cas
name:dynode
), ce que vous n'avez pas strictement besoin de faire si vous connaissez déjà l'adresse IP.la source
ec2 server create
plugin couteau exécute simplement bootstrap suivi de SSH + chef-client. Donc, si cela vous fait vous sentir mieux, les auteurs du chef n'ont rien trouvé de plus intelligent.Vous pouvez utiliser le couteau ssh pour exécuter chef-client sur toutes les boîtes contenant un certain rôle ou recette:
Ou si vous êtes en EC2:
la source
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 que "all" est le nom du regroupement dans le fichier de configuration pour notre exemple - il est arbitraire et peut être n'importe quoi. Votre fichier d'inventaire peut également inclure d'autres regroupements, par exemple [web_wervers], [database_servers], [chef_servers] , etc.)
Donc, encore une fois, tout mettre ensemble:
> ansible -i hosts all -a 'chef-client'
ou peut-être:
> ansible -i hosts all -a 'systemctl status'
la source
J'utilise Jenkins CI pour gérer les runs. Le serveur Linux est configuré comme un poste de travail et Jenkins y est installé. Je peux donc amorcer les nœuds avec run_list modifié. Le processus d'amorçage, de toute façon, exécute chef-client à la fin.
Pour l'exécution adhoc, le travail Jenkins exécute les commandes de couteau pour modifier la liste_exécutions d'un nœud et utiliser le plug-in SSH pour exécuter chef-client sur le nœud souhaité.
la source
Il est dommage que pour envoyer une commande au client chef, 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, mais que le serveur chef ne fournisse pas de multiplexeur de commandes sur cette connexion sécurisée, pourquoi?
la source
Il y a une nouvelle commande
chef-run
dans Chef Workstation:Il s'installera
chef-client
s'il n'est pas présent et exécutera la ressource ou le livre de recettes que vous spécifiez.Tutoriel: https://learn.chef.io/modules/try-chef-infra#/
la source