Comment installer et utiliser CFEngine Community Edition sur Ubuntu 14.04

introduction

Si vous recherchez un outil de gestion de configuration rapide et hautement évolutif pour votre infrastructure informatique, vous devriez essayer CFEngine. Bien que les fonctionnalités proposées soient assez similaires à celles offertes par d’autres outils populaires tels que Puppet et Chef, CFEngine a une empreinte beaucoup plus réduite, en termes d’utilisation de la mémoire et du processeur, et est généralement plus rapide, car écrit en C et s’exécute donc nativement sur le système d’exploitation.

Dans ce didacticiel, vous apprendrez à installer et utiliser CFEngine Community Edition 3.6.5 sur Ubuntu 14.04.

Conditions préalables

Avant de commencer, vous devriez avoir accès à:

Étape 1 - Ajout des référentiels de packages de CFEngine

Pour installer la dernière version de CFEngine à l’aide de + apt-get +, vous devez ajouter les référentiels de packages de CFEngine à la liste de référentiels de votre serveur. Utilisez la commande + add-apt-repository pour le faire:

sudo add-apt-repository 'deb http://cfengine.com/pub/apt/packages stable main'

Étape 2 - Ajout de la clé publique de CFEngine

Le référentiel que vous avez ajouté à l’étape précédente ne peut pas être utilisé tant que vous n’ajoutez pas la clé publique de CFEngine à la liste des clés approuvées de APT.

Téléchargez la clé publique CFEngine en utilisant + wget.

wget http://cfengine.com/pub/gpg.key -O /tmp/gpg.key

Utilisez + apt-key + pour l’ajouter à la liste des clés de confiance.

sudo apt-key add /tmp/gpg.key

Étape 3 - Installation de CFEngine

Vous pouvez maintenant utiliser + apt-get + pour installer CFEngine Community Edition.

sudo apt-get update && sudo apt-get install cfengine-community

Avant de poursuivre, vérifiez l’installation:

cf-agent --version

Vous devriez voir la sortie suivante:

Sortie de cf-agent

CFEngine Core 3.6.5

Étape 4 - Démarrage du Policy Hub

Comme nous utilisons un seul serveur Ubuntu dans ce didacticiel, nous l’utiliserons à la fois en tant que concentrateur de règles et en tant que client. Pour démarrer le hub de règles de CFEngine, vous devez l’amorcer avec l’adresse IP de votre serveur.

sudo cf-agent --bootstrap

Une fois cette commande exécutée avec succès, CFEngine sera entièrement configuré et prêt à être utilisé sur votre serveur.

Étape 5 - Création de votre première politique

Pour automatiser une tâche d’administration système à l’aide de CFEngine, vous devez créer un fichier de stratégie à cet effet. Un fichier de stratégie est écrit dans le DSL (Domain Specific Language) de CFEngine. La langue a une courbe d’apprentissage assez abrupte, mais il est facile d’effectuer des tâches simples.

Commençons par créer une politique simple «Hello World». Utilisez + nano + ou votre éditeur de texte favori pour créer un nouveau fichier nommé + myPolicy.cf + dans le répertoire + / tmp +:

nano /tmp/myPolicy.cf

Les commandes que vous souhaitez exécuter à l’aide de CFEngine doivent être regroupées dans un bundle. Les paquets peuvent être de différents types. Pour le moment, vous allez créer un paquet que + c & f-agent peut amuser. Pour imprimer un message sur la console, vous devez utiliser la promesse + reports +. En conséquence, ajoutez le code suivant au fichier:

myPolicy.cf

bundle agent SayHello {
   reports:
       "Hello!";
}

Enregistrez le fichier et quittez.

Vous pouvez maintenant exécuter votre politique en utilisant la commande + cf-agent.

sudo cf-agent -b SayHello /tmp/myPolicy.cf

Vous devriez voir la sortie suivante:

Sortie de cf-agent

R: Hello!

Étape 6 - Ajout d’une stratégie au serveur de stratégies

Lors de l’étape précédente, vous avez exécuté la stratégie manuellement à l’aide de la commande + cf-agent +. Pour exécuter la stratégie automatiquement, et plus important encore, sur plusieurs ordinateurs, vous devez l’ajouter au serveur de règles. Par défaut, les stratégies ajoutées au serveur sont exécutées une fois toutes les 5 minutes par + cf-agent +.

Écrivons maintenant une politique légèrement plus avancée qui crée un fichier dans le répertoire + / tmp +.

Utilisez + nano + ou votre éditeur de texte favori pour créer un nouveau fichier appelé + createFilePolicy.cf +:

nano /tmp/createFilePolicy.cf

Dans cette stratégie, vous utiliserez la promesse + fichiers + pour créer un fichier et la promesse + reports + d’afficher un message indiquant que le fichier a été créé.

La politique suivante crée un fichier vide nommé + hello.txt + dans le répertoire + / tmp +. Ajoutez le code suivant à la stratégie:

createFilePolicy.cf

bundle agent CreateHelloFile {
  files:
     "/tmp/hello.txt"
       create => "true";

  reports:
     "File created";
}

Enregistrez votre fichier et quittez + nano +.

Exécutez la politique en tapant la commande suivante:

sudo cf-agent -b CreateHelloFile /tmp/createFilePolicy.cf

Une fois cette opération terminée, vous pouvez exécuter la commande + ls + pour voir que + hello.txt + a été créé dans + / tmp +.

ls /tmp

Maintenant que nous savons que notre stratégie ne contient aucune erreur et fait ce qu’elle est censée faire, ajoutons-la au serveur.

Le serveur de règles utilise ses règles depuis le répertoire + / var / cfengine / masterfiles / +. Par conséquent, copiez + createFilePolicy.cf + dans + + masterfiles +:

sudo cp /tmp/createFilePolicy.cf /var/cfengine/masterfiles/

Ensuite, pour que CFEngine connaisse votre fichier de stratégie et son ensemble, vous devez ajouter une référence à ceux-ci dans + promises.cf +, le fichier de stratégie principal de CFEngine. Utilisez + nano + pour éditer + promises.cf +:

sudo nano /var/cfengine/masterfiles/promises.cf

Ajoutez le nom de votre fichier de règles à la fin de la liste + input +. Après les modifications, la liste devrait ressembler à ceci:

extrait de promises.cf

inputs => {

   ...

 # List of services here
 "services/file_change.cf",


};

Assurez-vous de ne pas omettre la virgule à la fin de la ligne.

De plus, le nom du paquet dans votre fichier de politique doit être mentionné dans la liste + bundlesequence + en haut du fichier. Ajoutez + CreateHelloFile + comme dernier élément de + bundlesequence +:

extrait de promises.cf

bundlesequence => {

    ...

    # Agent bundle
     cfe_internal_management,   # See cfe_internal/CFE_cfengine.cf
     service_catalogue,
     @(cfengine_enterprise_hub_ha.management_bundles),



};

Veillez également à ne pas omettre la virgule à la fin de la ligne. Enregistrez le fichier et quittez.

Votre stratégie a maintenant été ajoutée au serveur de règles et sera exécutée toutes les cinq minutes. Cela signifie que même si vous supprimez + / tmp / hello.txt +, CFEngine le recréera automatiquement au bout de cinq minutes.

Si vous souhaitez supprimer la stratégie, vous devez d’abord supprimer le nom de l’ensemble et le nom du fichier de stratégie de + promises.cf +, puis déplacer le fichier de stratégie hors du répertoire + masterfiles +.

Conclusion

Dans ce didacticiel, vous avez appris à installer la dernière version de CFEngine Community Edition sur un serveur Ubuntu 14.04 à l’aide des référentiels de packages de CFEngine. Vous avez également appris à créer et à exécuter des stratégies simples, à la fois manuellement et automatiquement. Vous pouvez maintenant utiliser CFEngine pour gérer la configuration de votre serveur.

Pour en savoir plus sur le DSL, reportez-vous au CFEngine 3.6 Manuel.