Table of Contents

Chef Serveur sur Raspberry Pi

Les appareils Raspberry Pi sont bon marché, silencieux et suffisamment puissants pour exécuter un système d'exploitation Linux basé sur Debian appelé Raspbian. Un tel dispositif est très pratique pour gérer son infrastructure personnelle, composée de quelques machines physiques et/ou virtuelles, en exécutant Chef Server.

Alors que le site Web officiel de Chef documente principalement l'installation de Chef Server sur Ubuntu et Red Hat Enterprise Linux, Chef Server est disponible via son API et déjà packagé pour Raspbian en tant que package chef-server-api.

L'installation de Chef Server sur un Raspberry Pi est donc assez avancée. Les étapes à suivre, décrites ci-dessous, sont inspirées de ces instructions pour installer Chef Server sur Debian à l'aide de packages binaires.

Installation de Chef Serveur

Télécharger puis graver une image Raspbian sur une carte SD en utilisant l'une des méthodes décrites ici pour graver l'image sur la carte SD.

Procédure d'installation

Installer le package Chef Server:

sudo apt-get update
sudo apt-get install chef-server-api

Configurer Chef Server, en répondant aux deux questions qui vous seront posées :

Certains services ne démarrent pas, comme jetty. chef-server sera également considéré comme ayant échoué, mais les API Chef Server fonctionneront quand même.

Rabbitmq ne semble pas être configuré lors de l'installation de chef-server via les packages deb, ce qui provoque des erreurs lors du lancement des commandes knife client create ou knife client reregister, avec le message suivant dans le journal rabbitmq:

=ERROR REPORT==== 4-Jun-2012::14:56:01 ===
exception on TCP connection <0.583.0> from 127.0.0.1:34143
{channel0_error,starting,
    {amqp_error,access_refused,
        "AMQPLAIN login refused: user 'chef' - invalid credentials",
        'connection.start_ok'}}

Pour corriger cela exécuter les commandes suivantes :

sudo rabbitmqctl add_vhost /chef
sudo rabbitmqctl add_user chef PASSWORD_PER_CONFIGURATION
sudo rabbitmqctl set_permissions -p /chef chef ".*" ".*" ".*"

Essai

root@raspberrypi:~# knife configure -i
WARNING: No knife configuration file found
Where should I put the config file? [/root/.chef/knife.rb] 
Please enter the chef server URL: [http://raspberrypi:4000] http://CHEF_SERVER_IP:4000
Please enter a clientname for the new client: [pi] root
Please enter the existing admin clientname: [chef-webui] 
Please enter the location of the existing admin client's private key: [/etc/chef/webui.pem] 
Please enter the validation clientname: [chef-validator] 
Please enter the location of the validation key: [/etc/chef/validation.pem] 
Please enter the path to a chef repository (or leave blank): 
Creating initial API user...
Created client[root]
Configuration file written to /root/.chef/knife.rb
root@raspberrypi:~# knife client list
  chef-validator
  chef-webui
  root
root@raspberrypi:~#

Configuration des nodes

Knife bootstrap est généralement la commande exécutée sur une machine que l'on souhaite gérer avec chef. La première chose que fait Knife Bootstrap est d'installer chef via un package omnibus pour le système d'exploitation que l'on démarre. Cela échouera sur un Raspberry Pi exécutant Raspbian car il n'y a pas de programme d'installation omnibus pour ARM/Raspberry Pi, mais il est assez facile de le configurer.

Installer Ruby

Commencer par télécharger puis graver une image Raspbian sur une carte SD en utilisant l'une des méthodes décrites ici pour graver l'image sur la carte SD.

Exécuter ce qui suit sur le Pi :

sudo apt-get install ruby bundler
sudo gem install chef —verbose

Ou utiliser simplement le script Ruby disponible ici.

Installer Chef via ruby gem

sudo gem install chef

Une fois que chef est installé, on est maintenant prêt à exécuter la commande chef-client pour démarrer les exécutions de chef. Cependant,à ce stade, la commande chef client ne fonctionnera pas car il faut d'abord ajouter la configuration de ce nœud dans /etc/chef/client.rb. Une façon de procéder consiste à créer les fichiers sur le poste de travail local et à les transférer sur le Pi, ou on peut exécuter la commande knife bootstrap comme ceci pour démarrer :

knife bootstrap -N NODENAME -x pi -P raspberry --sudo IP_of_rPi

Pour utiliser autre chose que le nom d'hôte par défaut sous raspbian (“raspberrypi”), il faut définir le nom de nœud explicitement. Les options -x et -P sont les identifiants raspbian par défaut.

Depuis avril 2019 le fichier bin chef-client n'est plus installé lorsque le gem chef est installé, cependant, on peut toujours obtenir le chef-client sur un raspberry pi via le gem chef, mais cela nécessite des étapes supplémentaires :

- Télécharger le stub bin chef-client dans /usr/local/bin
curl -o https://raw.githubusercontent.com/chef/chef/master/chef-bin/bin/chef-client /usr/local/bin/chef-client
- Le rendre exécutable: chmod +x chef-client