Aller au contenu
Infrastructure as Code medium

Installer un serveur CINC : inventaire et recherche sur le parc

10 min de lecture

Logo Chef

Le local mode vous mène loin, mais il ne saura jamais répondre à « quelles machines existent ? » ni « lesquelles portent ce rôle ? ». Ces questions exigent un serveur. Ce module monte un serveur CINC, la distribution libre du Chef Infra Server, y enrôle un nœud, et montre ce que cela débloque réellement : un inventaire centralisé et la recherche sur le parc. L'installation réserve quelques pièges : ils sont tous documentés ici. Public visé : avancés ayant décidé que le serveur se justifiait.

  • Installer et configurer un serveur CINC.
  • Créer une organisation et un utilisateur.
  • Enrôler un nœud avec knife bootstrap.
  • Interroger le parc avec knife search.

Le paquet ne s'appelle pas cinc-server mais cinc-server-core. C'est la première erreur classique : chercher un paquet qui n'existe pas.

Fenêtre de terminal
VER=15.10.114
curl -fsSLO "https://downloads.cinc.sh/files/stable/cinc-server/${VER}/debian/13/cinc-server-core_${VER}-1_amd64.deb"
sudo dpkg -i cinc-server-core_*.deb

L'installation ne fait que déposer les fichiers (environ 360 Mo). C'est la reconfiguration qui construit réellement le serveur : elle déploie PostgreSQL, OpenSearch, nginx et les services internes. Comptez plusieurs minutes.

Fenêtre de terminal
sudo cinc-server-ctl reconfigure --chef-license accept

Relancez la reconfiguration après chaque correction. Le succès est explicite :

Cinc Server Reconfigured!

Un serveur Chef isole les données par organisation. Il faut donc au moins un utilisateur et une organisation, chacun repartant avec une clé RSA.

Fenêtre de terminal
sudo cinc-server-ctl user-create stephane Stephane Robert admin@lab.local \
'MotDePasse!' --filename /tmp/stephane.pem
sudo cinc-server-ctl org-create lab "Lab Chef" \
--association_user stephane --filename /tmp/lab-validator.pem

Deux clés en sortent, aux rôles bien distincts. stephane.pem est votre clé personnelle : c'est elle qui vous authentifie depuis le poste de travail. lab-validator.pem est la clé de validation : elle sert uniquement à créer l'identité d'un nouveau nœud lors de son enrôlement.

Le poste dialogue avec le serveur via un config.rb qui pointe vers l'URL de l'organisation, et non vers la racine du serveur.

.chef/config.rb
chef_server_url "https://cinc-server.local/organizations/lab"
node_name "stephane"
client_key File.expand_path("stephane.pem", File.dirname(__FILE__))
cookbook_path [File.expand_path("../cookbooks", File.dirname(__FILE__))]

Le serveur présente un certificat auto-signé. Il faut donc le récupérer et le faire confiance, ce que knife sait faire :

Fenêtre de terminal
knife ssl fetch
knife ssl check
Successfully verified certificates from `cinc-server.local'

La connexion se vérifie d'un coup :

Fenêtre de terminal
knife user list
stephane

En mode serveur, les nœuds ne lisent plus vos cookbooks sur votre disque : ils les téléchargent depuis le serveur. Il faut donc les y publier.

Fenêtre de terminal
knife cookbook upload webstack durcissement
knife cookbook list
Uploaded 2 cookbooks.
durcissement: 1.0.0
webstack: 1.0.0

knife bootstrap se connecte en SSH, installe l'agent, crée l'identité du nœud sur le serveur, puis lance une première convergence.

Fenêtre de terminal
knife bootstrap 192.168.122.245 \
--ssh-user ubuntu --sudo -i ~/.ssh/id_ed25519 \
--node-name web-srv1 \
--run-list 'recipe[webstack]'
Creating a new client identity for web-srv1 using the validator key.
Infra Phase complete, 2/11 resources updated in 02 seconds

C'est ici que le serveur justifie son coût. Deux capacités, impossibles en local mode.

Le serveur conserve ce que chaque nœud lui a rapporté lors de sa dernière convergence. Vous interrogez cette mémoire, pas la machine :

Fenêtre de terminal
knife node show web-srv1
Node Name: web-srv1
Environment: _default
FQDN: chef-node-1.local
IP: 192.168.122.245
Run List: recipe[webstack]
Recipes: webstack, webstack::install, webstack::config
Platform: debian 13

Aucune connexion SSH n'a eu lieu. Sur un parc de plusieurs centaines de machines, c'est la différence entre savoir et aller voir.

C'est la fonctionnalité que le local mode ne remplacera jamais. Le serveur indexe les attributs de tous les nœuds, et vous les interrogez :

Fenêtre de terminal
knife search node 'platform:debian' -i
knife search node 'recipes:webstack*' -i
1 items found
web-srv1

La question « quelles machines portent cette recette ? » obtient enfin une réponse. Et cette recherche est disponible depuis une recette : un serveur web peut découvrir l'adresse de la base de données sans qu'on la lui code en dur. C'est ce qui rend une infrastructure réellement dynamique.

L'installation du serveur est le passage le plus accidenté de ce parcours. Voici les erreurs rencontrées et leur parade.

SymptômeCause probableSolution
Paquet cinc-server introuvableIl s'appelle cinc-server-coreTélécharger le bon nom
cannot load such file -- .../partybus/config.rbConfiguration absente du paquetLa créer (voir plus haut)
Parent directory /etc/cron.hourly does not existImage minimale sans cronsudo mkdir -p /etc/cron.hourly
The server's certificate belongs to 'cinc-server.local'Nom d'hôte ne correspondant pas au certificatUtiliser exactement le nom du certificat
401 "Unauthorized" au bootstrapAncienne identité dans /etc/cinc/Supprimer client.pem et client.rb dans /etc/cinc
Le nœud ne trouve pas ses cookbooksIls ne sont pas publiésknife cookbook upload
  1. Le paquet s'appelle cinc-server-core ; l'installation dépose les fichiers, c'est reconfigure qui construit le serveur.
  2. Sur Debian 13, deux lacunes de packaging bloquent la reconfiguration : partybus/config.rb et /etc/cron.hourly.
  3. Un serveur isole par organisation ; deux clés en sortent : la vôtre (authentification) et le validateur (enrôlement), qui est un passe-partout à protéger.
  4. Le certificat est auto-signé : knife ssl fetch, et le nom d'hôte doit correspondre au certificat.
  5. En mode serveur, les cookbooks se publient (knife cookbook upload) : les nœuds les téléchargent.
  6. Un nœud ex-local mode garde son identité dans /etc/cinc/ (et non /etc/chef/) : la nettoyer, sinon 401.
  7. Le serveur débloque l'inventaire sans connexion et la recherche sur le parc, y compris depuis une recette.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn