
Les Policyfiles verrouillent une révision reproductible. Les policy groups en font une chaîne de promotion : la révision validée en dev est exactement celle qui part en production, sans reconstruction ni recompilation. Ce module monte cette chaîne sur un serveur, prouve qu'un groupe n'entraîne pas l'autre, et promeut une révision de bout en bout. Public visé : avancés disposant d'un serveur CINC.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Pousser une révision de policy dans un groupe.
- Promouvoir la même révision vers un autre groupe.
- Vérifier quel groupe tourne quelle révision.
- Rattacher un nœud à un groupe.
Prérequis
Section intitulée « Prérequis »- Un serveur CINC avec un nœud enrôlé.
- Les Policyfiles et le verrouillage des dépendances.
Le problème : « c'est la même chose qu'en dev »
Section intitulée « Le problème : « c'est la même chose qu'en dev » »La phrase que tout le monde a prononcée, et que personne ne peut prouver. Entre la validation en recette et le déploiement en production, un cookbook a pu être modifié, une dépendance a pu bouger, une résolution a pu produire un résultat légèrement différent.
Les policy groups suppriment cette incertitude. Une révision de policy est
identifiée par une empreinte (revision_id) calculée sur tout son contenu :
cookbooks, versions, attributs. Promouvoir consiste à associer cette empreinte à
un autre groupe. Rien n'est reconstruit, rien n'est recalculé. Ce qui part en
production est bit pour bit ce qui a été validé.
Pousser une première révision
Section intitulée « Pousser une première révision »On part d'un Policyfile.rb qui pointe vers le serveur comme source, puis on
le verrouille :
name 'web'default_source :chef_server, 'https://cinc-server.local/organizations/lab'run_list 'webstack::default'cookbook 'webstack', path: '../cookbooks/webstack'default['webstack']['message'] = 'version dev'chef installLockfile written to Policyfile.lock.jsonPolicy revision id: 1f90927c206911a29b139536a13ef3c8d7438c27845d2fbe82e063537a917a76Cette empreinte est l'identité de la révision. On la pousse dans le groupe
dev :
chef push dev Policyfile.lock.jsonUploading policy web (1f90927c20) to policy group devUploaded webstack 1.0.0 (1d1accdf)Le groupe n'existe pas à créer : il naît de ce premier push.
Promouvoir, c'est associer, pas reconstruire
Section intitulée « Promouvoir, c'est associer, pas reconstruire »Une fois la révision validée en dev, la promotion vers la production consiste à pousser le même fichier de verrouillage dans un autre groupe :
chef push prod Policyfile.lock.jsonUploading policy web (1f90927c20) to policy group prodRegardez l'empreinte : 1f90927c20, la même. Aucune résolution de
dépendances n'a été refaite, aucun cookbook n'a été recompilé. C'est la définition
même d'une promotion sûre.
Prouver que les groupes sont indépendants
Section intitulée « Prouver que les groupes sont indépendants »C'est le test qui compte. Faisons évoluer la policy, et vérifions que la production ne bouge pas.
chef updatePolicy revision id: 53b0ef64d6e95451c8a94868dbcdd47bbb4e659b8896a737563356978b2fd2d1Nouvelle empreinte. On la pousse uniquement dans dev :
chef push dev Policyfile.lock.jsonchef show-policy* prod: 1f90927c20* dev: 53b0ef64d6Voilà l'image que vous voulez pouvoir produire à tout moment : dev a avancé, prod
est resté. chef show-policy répond à la question « qui tourne quoi ? »,
et c'est précisément ce que le local mode ne saura jamais dire.
Rattacher un nœud à un groupe
Section intitulée « Rattacher un nœud à un groupe »Un nœud ne choisit pas sa révision : il choisit son groupe. Cela se déclare dans sa configuration :
# /etc/cinc/client.rb sur le nœudpolicy_name 'web'policy_group 'prod'À la convergence, le nœud annonce explicitement la révision qu'il applique :
sudo cinc-clientUsing Policyfile 'web' at revision '1f90927c206911a29b139536a13ef3c8d7438c27845...'C'est bien l'ancienne révision, celle de prod, alors que dev en est déjà à
une plus récente. Le nœud de production est protégé de ce qui se passe en
recette : rien ne peut lui parvenir tant que personne ne l'a décidé.
Promouvoir en production
Section intitulée « Promouvoir en production »La décision se prend, et la promotion s'exécute en une commande :
chef push prod Policyfile.lock.jsonchef show-policy* prod: 53b0ef64d6* dev: 53b0ef64d6Les deux groupes portent désormais la même révision. À sa prochaine convergence, le nœud de production bascule, sans que personne ne s'y connecte :
Using Policyfile 'web' at revision '53b0ef64d6e95451c8a94868dbcdd47bbb4e659b...'La boucle est fermée : on construit une fois, on valide en dev, on promeut la même empreinte, et les nœuds suivent leur groupe.
Dépannage
Section intitulée « Dépannage »La promotion échoue rarement bruyamment : le plus dangereux est qu'elle semble fonctionner. Voici les symptômes à surveiller.
| Symptôme | Cause probable | Solution |
|---|---|---|
| La révision poussée est identique après modification | chef install réutilise le lock | Utiliser chef update pour re-résoudre |
| Le nœud n'applique pas la bonne révision | Il n'est pas dans le bon groupe | Vérifier policy_group dans /etc/cinc/client.rb |
| La prod a bougé sans qu'on l'ait voulu | Un chef push prod involontaire | La promotion doit être une décision, pas un réflexe |
chef show-policy ne montre rien | Aucune policy poussée sur ce serveur | chef push <groupe> Policyfile.lock.json |
| La prod n'est pas identique à la recette | Reconstruction au lieu de promotion | Promouvoir le lock, jamais relancer chef install |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- Une révision de policy est une empreinte de tout son contenu : cookbooks, versions, attributs.
- Promouvoir, c'est associer cette empreinte à un autre groupe : rien n'est reconstruit, donc rien ne peut diverger.
- On promeut le
Policyfile.lock.json, jamais en relançantchef installsur la cible. chef updateproduit une nouvelle révision ;chef installréutilise le lock existant.chef show-policyrépond à « qui tourne quoi » :devpeut avancer pendant queprodreste.- Un nœud choisit un groupe (
policy_group), pas une révision : il suit ensuite les décisions de promotion. - Un rollback est une promotion à l'envers : on repousse l'ancienne empreinte.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Panorama des outils de gestion de configuration : comparer ce modèle de promotion aux environnements de Salt ou Puppet.