Earlier today I installed cfengine3 on a new Raspberry Pi computer. Now it's time to do some user-mode testing! I don't think there's anything RasPi-specific here, although I did run/test all this on my Pi.
The default install directory is /var/cfengine, same as most platforms. For user-mode testing, I'll set up the ~pi/.cfagent/ directory tree:
ssh [email protected] CFE=~/.cfagent # Remove any cruft from earlier testing: rm -rf $CFE # Set up the bin/ directory: mkdir $CFE ln -siv -t $CFE /var/cfengine/bin PATH="$CFE/bin:$PATH" # Set up the inputs/ directory: mkdir $CFE/inputs chmod 700 $CFE/inputs cp -p /var/cfengine/share/doc/cfengine/examples/* $CFE/inputs/
One of the files that should have been copied just now is $CFE/inputs/helloworld.cf First we'll explicity check the syntax, then have cf-agent run it.
That "R: Hello world!" output means this test is successful, so user-mode cfengine is looking good. Next step is to set up a policy server, or keep noodling around in usermode writing some test policies.
It's been a while since I did an update on my Raspberry Pi setup. I just got a pair of model 1 B's, and my old SD card image is pretty out-of-date. So it's time to document the full procedure!
I'm starting with an 8 GB SD card, Raspbian Wheezy 2015-05-05, and the Ivan's Pi Filler. Once Raspbian is installed and booted on the Pi, use Ivan's Pi Finder (if you don't know what IP address was assigned to your new Pi). Log in, set your locale, expand the filesystem, then reboot for the resize to take effect.
ssh [email protected] (password) sudo raspi-config (select "Internationalisation Options", set locale and timezone) (select "Expand Filesystem") (tab to "Finish", and reboot when given the option)
While the Pi is rebooting, go find the URL for the latest stable version of cfengine3 community edition.
(I found the Amazon S3 URL on the CFEngine forum, just updated to version 3.6.5 a few days ago.)
wget http://s3.amazonaws.com/cfengine.package-repos/tarballs/cfengine-3.6.5.tar.gz tar -vxzf cfengine-3.6.5.tar.gz cd cfengine-3.6.5 ./configure --with-tokyocabinet --without-pam make sudo make install
The configure step took about 5 minutes, once I figured out which options would get it to run successfully. The build took about 25 minutes, with the install finishing in under a minute.
Thanks to Lefteris' post for some good suggestions! Next up on my Pi/network: Testing my freshly-installed cfengine...
Basé sur les travaux de mark Burgess et co. Compilé par Aleksey Tsalolikhin, le 1er décembre 2012. Traduit en français par Hichame Jeffali.
CFEngine est conçu pour être complet et pour permettre de modéliser tous les aspects possibles d'une configuration système. Il y a 478 attributs de promesse uniques dans CFEngine 3.4.0 pour vous aider à y arriver.
Ce qui suit est un listing détaillé, tiré du manuel de référence, de tous les attributs de promesse disponibles dans CFEngine 3.4.0, avec le synopsis pour chaque attribut. Pour plus de détail, veuiller consulter le guide de syntaxe ou le manuel de référence.
Fort heureusement, CFEngine est conçu aussi pour affronter les défis de la gestion de connaissance (Knowledge Management) tout en résumant et masquant les détails bas-niveau du système à modéliser.
Attributs de contrôle pour tout type de composant [15] (bundlesequence, goal_patterns, ignore_missing_bundles, ignore_missing_inputs, inputs, version, lastseenexpireafter, output_prefix, domain, require_comments, host_licenses_paid, site_classes, syslog_host, syslog_port, fips_mode)
Attributs de contrôle du moniteur [5] (forgetrate, monitorfacility, histograms, tcpdump, tcpdumpcommand)
Attributs de contrôle du runagent (agent de connexion) [10] (hosts, port, force_ipv4, trustkey, encrypt, background_children, max_children, output_to_file, output_directory, timeout)
Attributs de contrôle de l'exécutant (executor) [8] (splaytime, mailfrom, mailto, smtpserver, mailmaxlines, schedule, executorfacility, exec_command)
Attributs de contrôle pour la gestion de connaissances (cf-know) [19] (build_directory, document_root, generate_manual, graph_directory, graph_output, html_banner, html_footer, id_prefix, manual_source_directory, query_engine, query_output, sql_type, sql_database, sql_owner, sql_passwd, sql_server, sql_connection_db, style_sheet, view_projections)
Attributs de contrôle pour le rapporteur (reporter) [13] (aggregation_point, auto_scaling, build_directory, csv2xml, error_bars, html_banner, html_embed, html_footer, query_engine, reports, report_output, style_sheet, time_stamps)
Attributs de contrôle de la passerelle (ou hub) [4] (export_zenoss, exclude_hosts, hub_schedule, port)
Attributs de contrôle des fichiers de politique individuels ("body file control") [1] (namespace)
Attributs des promesses de type classes - peut apparaître dans tout type de bundle [8] (and, dist, expression, or, persistence, not, select_class, xor)
Attributs des promesses de type defaults - peut apparaître dans tout type de bundle [3] (if_match_regex, string, slist)
Attributs des promesses de type meta - peut apparaître dans tout type de bundle [2] (string, slist)
Attributs de promesse de type reports - peut apparaître dans tout type de bundle [7] (friend_pattern, intermittency, lastseen, printfile, printfile, report_to_file, showstate)
Attributs des promesses de type vars - peut apparaître dans tout type de bundle [7] (string, int, real, slist, ilist, rlist, policy)
Attributs de promesse de type processes dans le bundle agent [20] (process_count in_range_define, process_count match_range, process_count out_of_range_define, process_select command, process_select pid, process_select pgid, process_select ppid, process_select priority, process_select process_owner, process_select process_result, process_select rsize, process_select status, process_select stime_range, process_select ttime_range, process_select tty, process_select threads, process_select vsize, process_stop, restart_class, signals)
Attributs de promesse de type services dans un bundle agent [6] (service_policy, service_dependencies, service_method service_args, service_method service_autostart_policy, service_method service_bundle, service_method service_type)
Attributs de promesse de type storage dans un bundle agent [11] (mount edit_fstab, mount mount_type, mount mount_source, mount mount_server, mount mount_options, mount unmount, volume check_foreign, volume freespace, volume sensible_size, volume sensible_count, volume scan_arrivals)
Attributs de promesse de type access dans un bundle server [5] (admit, deny, maproot, ifencrypted, resource_type)
Attributs de promesse de type roles dans un bundle server [1] (authorize)
Attributs de promesse de type inferences dans un bundle knowledge [2] (precedents, qualifiers)
Attributs de promesse de type things dans un bundle knowledge [22] (synonyms, affects, belongs_to, causes, certainty, determines, generalizations, implements, involves, is_caused_by, is_connected_to, is_determined_by, is_followed_by, is_implemented_by, is_located_in, is_measured_by, is_part_of, is_preceded_by, measures, needs, provides, uses)
Attributs des promesses de type topics dans un bundle knowledge [5] (association forward_relationship, association backward_relationship, association associates, synonyms, generalizations)
Attributs des promesses de type occurences dans un bundle knowledge [3] (about_topics, represents, representation)
Attributs des promesses de type measurements dans un bundle knowledge [9] (stream_type, data_type, history_type, units, match_value select_line_matching, match_value select_line_number, match_value extraction_regex, match_value track_growing_file, match_value select_multiline_policy)
Attributs de contrôle pour tout type de composant
bundlesequence
Liste des bundles de promesse à vérifier dans l'ordre
goal_patterns
La liste des expressions régulières qui correspondent aux sujets de promesse et thèmes considérés comme étant des buts organisationnels
ignore_missing_bundles
Si un bundle de bundlesequence est absent, ignorer et continuer
ignore_missing_inputs
Si un fichier d'entrée est absent, ignorer et continuer
inputs
Liste des fichiers additionnels pour analyser la syntaxe des promesses
version
Scalaire chaîne, version de la configuration présente
lastseenexpireafter
Nombre de minutes après lesquelles les entrées déjà pris en compte sont supprimées
output_prefix
La chaîne préfixe pour la sortie standard
domain
Spécifie le nom de domaine pour la machine présente
require_comments
Alerter des promesses qui n'ont pas de commentaires de documentation
host_licenses_paid
Le nombre de licences que vous avez payé pour activer cette valeur (mention légale pour les licences commerciales)
site_classes
La liste des classes représentant les zones géographiques de machines. Ces classes doivent être définies quelque part dans la configuration des promesses de type classes
syslog_host
Nom et adresse de la machine auquelle les messages syslog doivent être adressés directement par UDP
syslog_port
Le numéro de port du service syslog UDP
fips_mode
Activer le mode de restrictions plein FIPS
Attributs de contrôle de l'agent
abortclasses
Une liste de classes qui si définies mènent à l'arrêt de cf-agent
abortbundleclasses
Une liste de classes qui si définies mènent à l'arrêt du bundle courant
addclasses
Une liste de classes qui doivent être toujours définies dans le contexte courant
agentaccess1
Une liste de noms d'utilisateurs pouvant exécuter cf-agent
agentfacility
La facilité syslog pour cf-agent
allclassesreport
Génerer le rapport allclasses.txt
alwaysvalidate
Indicateur true/false pour déterminer si les configurations vont être toujours vérifiées avant leur exécution, ou seulement après les mises-à-jours
auditing
Indicateur true/false pour activer la trace d'audit de cf-agent
binarypaddingchar
Caractère utilisé pour créer des espaces vides de remplacements inégaux au cours de l'édition binaire
bindtointerface
Utiliser cette interface pour les connexions sortantes
hashupdates
Indicateur true/false pour indiquer si les codes de hachage stockés sont mis-à-jour après un changement détecté dans la source
childlibpath
Le chemin LD_LIBRARY_PATH pour les processus fils
checksum_alert_time
Le temps de persistence pour la classe checksum_alert
defaultcopytype
Les ctime ou mtime sont différents
dryrun
Mode bruyant et sans action de modification
editbinaryfilesize
Entier de la limite de taille maximale du fichier binaire à éditer
editfilesize
Entier de la limite de taille maximale du fichier texte à éditer
environment
Liste des variables d'environnement à hériter par les fils
exclamation
Indicateur true/false pour imprimer les points d'exclamation au cours des alertes de sécurité
expireafter
Valeur globale par défaut pour la durée d'expiration avant l'interruption de réparation des promesses en cours
files_single_copy
Liste des noms de fichier à observer pour les conflits de sources multiples
files_auto_define
Liste de noms de fichier pour la définition de classes une fois copiés
hostnamekeys
Indicateur true/false pour labelliser les ppkeys par nom de machine et non par adresse IP
ifelapsed
Valeur globale par défaut pour la durée d'expiration avant la re-vérification d'une promesse
inform
Indicateur true/false pour renseigner le niveau inform par défaut
intermittency
Cette option est maintenant obsolète. Elle est là pour raison de compatibilité ascendante.
max_children
Nombre maximum de tâches de fond qui peuvent être lancées en parallèle
maxconnections
Nombre maximal de connexions sortantes vers cf-serverd
mountfilesystems
Indicateur true/false pour monter les systèmes de fichiers promis
nonalphanumfiles
Indicateur true/false pour alerter des fichiers sans contenu alphanumérique
repchar
Caractère utilisé pour canoniser les noms de chemins dans le dépôt de fichier
refresh_processes
Recharger la table des processus avant la vérification des bundles nommés dans cette liste (évaluation tardive)
default_repository
Chemin vers le dépôt de fichiers par défaut
secureinput
Indicateur true/false pour vérifier si les fichiers en entrée sont modifiables par des utilisateurs non-autorisés
sensiblecount
Nombre minimal de fichiers autorisé dans un système de fichier une fois monté
sensiblesize
Nombre d'octets minimal autorisé dans un système de fichier une fois monté
skipidentify
Ne pas envoyer l'IP/nom pendant la connexion vers un serveur si la résolution d'adresse ne marche pas
suspiciousnames
Liste des noms générant des alertes si trouvés pendant une recherche de fichiers
syslog
Indicateur true/false de redirection vers syslog au niveau "inform"
track_value
Indicateur true/false pour traquer l'évaluation des promesses
timezone
Liste des zones horaires permises sur la machine en cours
default_timeout
Durée d'expiration de tentative de connexion réseau
verbose
Indicateur true/false pour une sortie standard plus bruyante
Attributs de contrôle du serveur
allowallconnects
Liste des adresses IP et machines qui peuvent initier plus d'une connexion vers le port du serveur
allowconnects
Liste des adresses IP et machines qui peuvent se connecter au port du serveur
allowusers
Liste des utilisateurs autorisés à excécuter des requêtes depuis ce serveur
auditing
Indicateur true/false d'activation de l'audit des connexions serveur
bindtointerface
IP de l'interface sur laquelle le serveur doit écouter sur les machines multi-interfaces
cfruncommand
Chemin vers la commande cf-agent ou cf-execd pour l'exécution à distance
call_collect_interval
L'intervalle en minutes entre les différentes collectes des appels vers le hub de politique offrant un tunnel de collection de rapports (version entreprise)
collect_window
La durée en seconde pendant laquelle un tunnel de collecte/appel peut rester ouvert aux tentatives d'un hub pour transférer un rapport avant qu'il soit fermé (version entreprise)
denybadclocks
Indicateur true/false pour accepter des connexions depuis des machines ayant des sources de temps non synchronisées
denyconnects
Liste des IPs ou machines qui ne peuvent pas se connecter au port du serveur
dynamicaddresses
Liste des IPs ou machines qui peuvent changer d'IPs ou de noms
hostnamekeys
Indicateur true/false pour stocker les clefs après résolution des adresses IP en noms de machine
keycacheTTL
Nombre maximal d'heures pour retenir les clefs publiques dans le cache
logallconnections
Indicateur true/false pour tracer toutes les nouvelles connexions vers syslog
logencryptedtransfers
Indicateur true/false pour tracer tous les transferts réussis et devant être chiffrés
maxconnections
Maximum de nombre de connexions pouvant être acceptées par cf-serverd
port
Port par défaut pour le serveur cfengine
serverfacility
Option menu du niveau de facilité syslog
skipverify
Liste des IPs ou machines vers lesquelles nous n'attendons pas de résolution DNS et ne pouvant être vérifiés
trustkeysfrom
Liste des IPs depuis lesquelles nous acceptons les clefs publiques de confiance
Attributs de contrôle du moniteur
forgetrate
Fraction décimale [0,1] pesant les nouvelles valeurs par rapport aux anciennes après calcul de moyenne 2d
monitorfacility
Option menu déterminant la facilité syslog
histograms
Obsolète. Laissée pour compatibilité ascendante.
tcpdump
Indictauer true/false pour l'utilisation de tcpdump si présent
tcpdumpcommand
Chemin vers le binaire tcpdump
Attributs de contrôle du runagent (agent de connexion)
hosts
Liste des machines ou adresses IP pour toute tentative de connexion
port
Port par défaut pour le serveur cfengine
force_ipv4
Indicateur true/false pour forcer l'utilisation de ipv4 pour se connecter
trustkey
Indicateur true/false pour accepter toutes les clefs de confiance des serveurs distants
encrypt
Indicateur true/false pour chiffrer les connexions vers les serveurs distants
background_children
Indicateur true/false pour des connexions parallèles vers les serveurs distants
max_children
Maximum de nombre de tentatives de connexion simultanées
output_to_file
Indicateur true/false pour rediriger le flux de sortie vers un/des fichier(s)
output_directory
Répertoire où stocker le flux de sortie
timeout
Délai d'expiration en secondes
Attributs de contrôle de l'exécutant (executor)
splaytime
Temps d'évasement en minutes pour cette machine basé sur le hachage de son nom
mailfrom
Adresse de messagerie pour désigner l'emetteur
mailto
Adresse de messagerie pour désigner le destinataire
smtpserver
Nom ou adresse du serveur smtp qui envoira des emails
mailmaxlines
Maximum de nombre de lignes de sortie à envoyer par email
schedule
La classe d'échéance utilisée par cf-execd pour activer cf-agent
executorfacility
Option menu du niveau de facilité syslog
exec_command
Le nom et chemin complet de la commande à exécuter par défaut (éliminant celle par défaut)
Attributs de contrôle pour la gestion de connaissances (cf-know)
build_directory
Le répertoire dans lequel seront générés les fichiers de sortie
document_root
Le répertoire où réside la racine du serveur web
generate_manual
Indicateur true/false pour générer la squelette de page manuel texinfo pour cette version
graph_directory
Chemin du répertoire où seront créés les fichiers .png générés
graph_output
Indicateur true/false pour générer si possible la visualisation de la carte des thèmes (requiert lib)
html_banner
Le code HTML de la bannière à ajouter à l'html rendu après l'entête
html_footer
Code HTML pour le bas de page à ajouter à l'html rendu avant la fin de la balise body
id_prefix
Le préfixe identifiant LTM utilisé pour labelliser les cartes de thèmes (utilisé pour la résolution des ambiguités de fusion)
manual_source_directory
Chemin de répertoire où trouver les textes bruts sur les thèmes de manuel (build_directory par défaut)
query_engine
Nom de la page web dynamique utilisée pour accepter et lancer des requêtes dans le browser web
query_output
Option menu pour le format de sortie générée
sql_type
Option menu pour le type de bases de données supportées
sql_database
Nom de la base de données utilisée pour la carte des thèmes
sql_owner
Identifiant de l'utilisateur de la base de données SQL
sql_passwd
Mot de passe d'accès à la base SQL
sql_server
Nom et IP de serveur de base de données (ou localhost par défaut)
sql_connection_db
Le nom d'une base de donnée existante pour se connecter et créer/gérer d'autres bases de données
style_sheet
Nom de la feuille de style utilisée pour le rendu du HTML de sortie (ajoutée aux entêtes)
view_projections
Effectue les analyses de projection des vues pendant la génération des graphiques
Attributs de contrôle pour le rapporteur (reporter)
aggregation_point
Répertoire racine du cache de données pour l'agrégation CMDB
auto_scaling
Indicateur true/false pour ajuster la taille du graphique de sortie et optimiser l'utilisation d'espace
build_directory
Le répertoire où générer les fichiers de sortie
csv2xml
Une liste de fichiers au format CSV dans le répertoire de build à convertir en simple XML
error_bars
Indicateur true/false pour générer les barres d'erreur dans le graphique de sortie
html_banner
Bannière de code HTML à ajouter à l'HTML rendu et placer après l'entête
html_embed
Indicateur true/false pour indiquer qu'aucune entête ou bas de page ne doivent être ajoutés à la sortie HTML
html_footer
Code HTML de bas de page à ajouter à l'HTML rendu et placer avant la balise de fin de body
query_engine
Nom de la page web dynamique utilisée pour accepter et lancer les requêtes dans le browser web
reports
Une liste de rapports qui peuvent être générés
report_output
Option de menu pour le format de sortie généré. Appliqué seulement aux rapports texte, les graphiques sont au format xydy
style_sheet
Nom de la feuille de style à utiliser pour le rendu de la sortie HTML (ajouté aux entêtes)
time_stamps
Indicateur true/false pour générer un horodatage dans le nom de répertoire de sortie
Attributs de contrôle de la passerelle (ou hub)
export_zenoss
Génerer un rapport d'intégration Zenoss
exclude_hosts
Liste des IPs de machines à exclure de la collection de rapport
hub_schedule
La classe d'échéance utilisée par cf-hub pour la collation de rapport
port
Port par défaut de contact des noeuds de hub
Attributs de contrôle des fichiers de politique individuels ("body file control")
namespace
Passer à un espace de noms privé pour protéger le fichier en cours des définitions dupliquées
Attributs des promesses de type classes - peut apparaître dans tout type de bundle
and
Combine les classes sources avec ET
dist
Générer une distribution de classe probabilistique (tirée des startégies dans cfengine 2)
expression
Evaluer une chaîne d'expression de classes en format normal
or
Combine les classes sources avec un OU inclusif
persistence
Rendre la classe persistante (dans un cache) pour éviter la réévaluation, exprimé en minutes
not
Evaluer la négation d'une chaîne d'expression de classes en format normal
select_class
Choisir une des listes nommées contenant des classes à définir à partir de l'identité de machine
xor
Combine les classes sources avec un OU exclusif
Attributs des promesses de type defaults - peut apparaître dans tout type de bundle
if_match_regex
Si cette expression régulière corresponde à la valeur courante de la variable, remplacer la avec la valeur par défaut
string
Scalaire de chaîne
slist
Liste de scalaires de chaînes
Attributs des promesses de type meta - peut apparaître dans tout type de bundle
string
Scalaire de chaîne
slist
Liste de scalaire de chaînes
Attributs de promesse de type reports - peut apparaître dans tout type de bundle
friend_pattern
Une expression régulière pour éloigner les machines choisies de la liste des rapports amis
intermittency
Nombre réel de seuil [0,1] d'intermittence des pairs courants, afficher en haut
lastseen
Entier de la durée en heures du seuil depuis lequel les pairs en cours ont été constatés, afficher l'absence
printfile
Chemin et nom du fichier vers lequel sera redirigé la sortie standard
printfile
Entier du nombre maximal de lignes à afficher du fichier choisi
report_to_file
Le chemin et nom de fichier à la fin duquel la sortie va être ajoutée
showstate
Liste des services dont les rapports de statut devront être redirigés vers la sortie standard
Attributs des promesses de type vars - peut apparaître dans tout type de bundle
string
Sclaire de chaîne
int
Scalaire d'un entier
real
Scalaire de nombre réel
slist
Liste de scalaires de chaîne
ilist
Une liste d'entiers
rlist
Liste de nombres réels
policy
La politique pour permettre/refuser la (re-)définition des variables
Attributs de tout promesse dans n'importe quel type de bundle
action action_policy
S'il faut réparer ou tracer une promesse non tenue
action audit
Indicateur true/false pour tracer en détail les rapports de cette promesse
action background
Indicateur true/false pour paralléliser la réparation de cette promesse
action expireafter
Nombre de minutes avant qu'une action de réparation soit interrompue et relancée
action ifelapsed
Nombre de minutes avant la prochaine permission d'évaluation d'une promesse
action logstring
Un message à tracer si une vérification de promesse mène à une réparation
action log_level
Le niveau de trace envoyé à syslog
action log_kept
Nom de fichier vers lequel log_string va être sauvegardée. Si non défini, tracer vers les logs système
action log_priority
Niveau de priorité d'un message de trace comme interprété par un serveur syslog
action log_repaired
Nom de fichier vers lequel log_repaired va être sauvegardée, si non défini tracer vers les logs système
action log_failed
Nom de fichier vers lequel log_failed va être sauvegardée, si non défini tracer vers les logs système
action measurement_class
Indicateur pour mesurer et enregistrer la performance sous cet identifiant
action report_level
Le niveau de trace vers la sortie standard pour cette promesse
action value_kept
Valeur en nombre réel attribuée pour tenir cette promesse
action value_repaired
Valeur en nombre réel attribuée pour réparer cette promesse
action value_notkept
Valeur en nombre réel (peut être négative) attribuée pour ne pas tenir cette promesse
classes promise_repaired
Une liste de classes à définir globalement
classes repair_failed
Une liste de classes à définir globalement
classes repair_denied
Une liste de classes à définir globalement
classes repair_timeout
Une liste de classes à définir globalement
classes promise_kept
Une liste de classes à définir globalement
classes cancel_kept
Une liste de classes à annuler si la promesse est tenue
classes cancel_repaired
Une liste de classes à annuler si la promesse est réparée
classes cancel_notkept
Une liste de classes à annuler si la promesse n'est pas tenue pour une raison ou une autre
classes kept_returncodes
Une liste de codes retour indiquant une promesse tenue de type commands
classes repaired_returncodes
Une liste de codes retour indiquant une promesse réparée de type commands
classes failed_returncodes
Une liste de codes retour indiquant une promesse échouée de type commands
classes persist_time
Nombre de minutes pendant lesquelles les classes spécifiées doivent rester actives
classes timer_policy
Si une classe persistante doit ré-initialiser son compteur quand elle est redécouverte
comment
Un commentaire à propos des intentions de la promesse qui suit
depends_on
Une liste des descripteurs de promesses que cette promesse construise ou en dépend (pour la gestion des connaissances)
handle
Une chaîne d'identifiant-balise unique pour indiquer un receveur de promesse ailleurs
ifvarclass
Classes étendues ANDées (combinés avec l'opérateur ET) avec un contexte
meta
Donnée utilisateur associée à une politique, e.g des chaînes de type clé=valeur
Attributs de promesse de type commands dans les bundles agent
args
Chaîne de caractètes alternative représentant des arguments de commande à concaténer
contain useshell
Indicateur true/false pour appeler la commande dans un shell d'environnement
contain umask
La valeur umask pour le processus fils
contain exec_owner
Le nom ou identifiant d'utilisateur sous lequel le processus est exécuté
contain exec_group
Le nom ou identifiant de groupe sous lequel le processus est exécuté
contain exec_timeout
Délai d'expiration en secondes pour l'arrêt d'exécution de la commande
contain chdir
Répertoire pour attribuer le répertoire courant ou de base au processus
contain chroot
Répertoire du bac à sable (sandbox) racine pour le processus exécuté
contain preview
Indicateur true/false pour lancer la commande d'aperçu en mode dry-run (marche à vide) (avec option -n)
contain no_output
Indicateur true/false pour ignorer toute sortie de commande
module
Indicateur true/false pour s'attendre au protocole du module cfengine
Attributs de promesse de type databases dans les bundles agent
database_server db_server_owner
Nom d'utilisateur pour la connexion à la base de données
database_server db_server_password
Vider le mot de passe pour la connexion à la base de données
database_server db_server_host
Machine ou adresse pour la connexion à la base de données, localhost si vide
database_server db_server_type
Le dialecte du serveur de base de données
database_server db_server_connection_db
Le nom d'une base de données existante et utilisée pour créer/gérer d'autres bases de données
database_type
Le type de base de données à manipuler
database_operation
La nature de la promesse - être ou ne pas être
database_columns
Liste de définitions de colonnes promises par la base de données SQL
database_rows
Liste ordonnée des valeurs de lignes promises par la base de données SQL
registry_exclude
Liste d'expressions régulières à ignorer pendant la vérification clé/valeur
Attributs de promesse de type guest_environments dans les bundles agent
environment_host
Une classe indiquant le noeud physique exécutant la machine d'acceuil
environment_interface env_addresses
Adresses IP des interfaces réseau de l'environnement virtuel
environment_interface env_name
Nome de machine de l'environnement virtuel
environment_interface env_network
Interface réseau de l'environnement virtuel
environment_resources env_cpus
Nombre de processeurs de l'environnement virtuel
environment_resources env_memory
Taille de stockage primaire (RAM) de l'environement virtuel (Mo)
environment_resources env_disk
Taille de stockage secondaire (disque) de l'environement virtuel (Mo)
environment_resources env_baseline
Le chemin vers une image avec laquelle il faut jalonner l'environnement virtuel
environment_resources env_spec
Une chaîne contenant un groupe de promesses de technologie spécifique à l'instance virtuelle
environment_state
Etat dynamique désiré de l'environnement en question
environment_type
Type d'environnement virtuel
Attributs de promesse de type files dans les bundles agent
acl aces
Réglages natifs pour l'entrée de contrôle des accès
acl acl_directory_inherit
Type de la liste des contrôles d'accès pour le système de fichiers en question
acl acl_method
Méthode d'édition de la liste de contrôle des accès
acl acl_type
Type de la liste des contrôles d'accès pour le système de fichiers en question
acl specify_inherit_aces
Réglages natifs pour l'entrée de contrôle des accès
changes hash
Fichiers de hachage destinés à la détection de changement
changes report_change
Spécifier le critère de changement d'alertes
changes update_hashes
Mettre à jour les valeurs de hachage immédiatement après le changement d'alertes
changes report_diffs
Générer des rapports de sommaire des différences majeurs entre les différents fichiers de texte
copy_from source
fichier de source de référence depuis lequel il faut copier
copy_from servers
Liste des serveurs en ordre de préférence depuis lesquels il faut copier
copy_from collapse_destination_dir
Indicateur true/false pour placer des fichiers dans des sous-répertoires du répertoire de la destination principale durant l'opération de copie
copy_from compare
Choix de l'option de politique pour la comparaison entre les attributs du fichier source et du fichier image
copy_from copy_backup
Choix de l'option de politique de contrôle de sauvegarde/version de fichiers
copy_from encrypt
Indicateur true/false pour chiffrer le flux de données à destination de la machine distante
copy_from check_root
Indicateur true/false pour vérifier les permissions du répertoire racine durant le depth_search (recherche en profondeur)
copy_from copylink_pattern
Liste des schémas correspondant aux fichiers qui doivent être copiés au lieu d'êtres liés
copy_from copy_size
Entier de l'intervalle de tailles de fichiers à copier
copy_from findertype
Choix d'option pour le type de recherche par défaut sur MacOSX
copy_from linkcopy_patterns
Liste des schémas correspodant aux fichiers qui doivent être remplacés par des liens symboliques
copy_from link_type
Choix d'option pour le type de liens à utiliser pendant l'opération de copie
copy_from force_update
Indicateur true/false pour exiger toujours la mise-à-jour des copies
copy_from force_ipv4
Indicateur true/false pour forcer l'utilisation de ipv4 sur des réseaux ipv6
copy_from portnumber
Numéro de port de connexion vers le serveur distant
copy_from preserve
Indicateur true/false pour la préservation des permissions de fichiers copiés
copy_from purge
Indicateur true/false pour la purge des fichiers sur le client qui ne correspondent pas à des fichiers sur le serveur au cours d'une opération depth_search (recherche profonde)
copy_from stealth
Indicateur true/false pour préserver l'horodatage (time stamps) des fichiers copiés
copy_from timeout
Délai de connexion en secondes
copy_from trustkey
Indicateur true/false pour autoriser des clefs publiques depuis un serveur distant inconnu pour l'instant
copy_from type_check
Indicateur true/false pour comparer les types de fichier et exiger la correspondance avant l'opération de copie
copy_from verify
Indicateur true/false pour vérifier le fichier à transférer en hachant après la copie (pénalité de ressource)
create
Indicateur true/false pour créer un fichier inexistant
delete dirlinks
Option de choix de la politique de gestion des liens symboliques vers des répertoires durant l'opération de suppression
delete rmdirs
Indicateur true/false pour supprimer les répertoires vides pendant la suppression récursive
depth_search depth
Niveau de profondeur maximale de recherche
depth_search exclude_dirs
Liste des expressions régulières des noms de répertoires à exclure pendant la recherche en profondeur
depth_search include_basedir
Indicateur true/false pour inclure le répertoire de début/racine durant la recherche de résultats
depth_search include_dirs
Liste des expressions régulières de noms de répertoires à inclure pendant la recherche en profondeur
depth_search rmdeadlinks
Indicateur true/false pour supprimer les liens orphelins
depth_search traverse_links
Indicateur true/false pour traverser les liens symboliques vers des répertoires
depth_search xdev
Indicateur true/false pour exclure les répertoires qui sont sur des appareils différents
edit_defaults edit_backup
Option de choix de la politique de sauvegarde pendant l'édition des changements
edit_defaults empty_file_before_editing
Modèle de mémoire de base pour le fichier à tronquer avant le début des modifications promises
edit_defaults inherit
Si true, le sous-bundle héritera des classes privées de son parent
edit_defaults max_file_size
Ne pas éditer des fichiers plus volumineux que cette taille en nombre d'octets
edit_defaults recognize_join
Joindre les lignes qui finissent par un antislash, jusqu'à une limite de 4Ko
edit_defaults rotate
Combien de sauvegardes à stocker si la politique de rotation edit_backup est choisie. Valeur par défaut est 1.
edit_line
Spécifier le nom du bundle edit_line
edit_template
Le nom d'un modèle de fichier CFEngine spécial à étendre
edit_xml
Spécifier le nom du bundle edit_xml
file_select leaf_name
Liste des expressions régulières qui correspondent à un nom autorisé
file_select path_name
Liste de noms de chemin qui correspondent à une cible autorisée
file_select search_mode
Une liste de masques de mode pour les permissions de fichier acceptables
file_select search_size
Entier d'intervalle de taille du fichier
file_select search_owners
Liste des noms et identifiants d'utilisateurs acceptables pour un fichier, ou des expressions régulières correspondantes
file_select search_groups
Liste des noms et identifiants de groupes acceptables pour un fichier, ou des expressions régulières correspondantes
file_select search_bsdflags
Chaîne de caractère des indicateurs de système de fichiers BSD attendus
file_select ctime
Intervalle des temps de changement (ctime) des fichiers acceptés
file_select mtime
Intervalle des temps de modification (mtime) des fichiers acceptés
file_select atime
Intervalle des temps d'accès (atime) des fichiers acceptés
file_select exec_regex
Retourne le fichiers si cette expression régulière corresponde à n'importe quelle ligne entière retournée par la commande
file_select exec_program
Exécuter cette commande pour chaque fichier et accepter si le code retour est zéro
file_select file_types
Liste des types de fichier acceptés dans le menu des choix
file_select issymlinkto
Liste des expressions régulières qui correspondent à des objets de fichier
file_select file_result
Expression logique combinant les classes définies par des critères de recherche de fichier
link_from copy_patterns
Ensemble de schémas qui doivent être copiés et synchronisés au lieu d'être liés
link_from link_children
Indicateur true/false pour lier tous les sous-répertoires à leurs originaux en source
link_from link_type
Le type de lien utilisé comme un alias du fichier
link_from source
Le fichier source vers lequel doit pointer le lien
link_from when_linking_children
Politique pour écraser les fichiers existants quand il faut lier des sous-répertoires
link_from when_no_source
Comportement à suivre quand le fichier source à lier est absent
move_obstructions
Indicateur true/false pour déplacer les obstructions vers des créations de fichiers objet
pathtype
Option de choix pour l'interprétation du fichier objet du celui qui promet
perms bsdflags
Liste des options pour le choix des indicateurs du système de fichiers BSD
perms groups
Liste des groupes de groupes d'identifiants acceptables, first pour le changement de cible
perms mode
Permissions de fichiers (à la chmod POSIX)
perms owners
Liste des identifiants de détenteurs ou utilisateurs acceptables, first pour le changement de cible
perms rxdirs
Indicateur true/false pour ajouter l'indicateur d'exécution pour les répertoires si l'indicateur est choisi
rename disable
Indicateur true/false pour renommer ou ôter les permissions automatiquement
rename disable_mode
Les permissions à donner si le fichier est désactivé
rename disable_suffix
Le suffixe à ajouter aux fichiers pendant la désactivation (.cfdisabled)
rename newname
Le nom souhaité pour le fichier courant
rename rotate
Le nombre maximal de rotations de fichier à préserver
repository
Nom du dépôt de gestion des versions
touch
Indicateur true/false pour retoucher les horodatages (time stamps) du fichier
transformer
Commande (avec chemin complet) à utiliser pour transformer le fichier courant (aucun shell n'est utilisé)
Différents attributs du type de promesse edit_line
select_region include_start_delimiter
S'il faut inclure le séparateur de section de début
select_region include_end_delimiter
S'il faut inclure le séparateur de section de fin
select_region select_start
Expression régulière correspondant au début de la région éditée
select_region select_end
Expression régulière correspondant à la fin de la région éditée
Attributs de promesse de type delete_lines dans edit_line
delete_select delete_if_startwith_from_list
Supprimer la ligne si elle commence par une chaîne dans cette liste
delete_select delete_if_not_startwith_from_list
Supprimer la ligne si elle ne commence pas par une chaîne dans cette liste
delete_select delete_if_match_from_list
Supprimer la ligne si elle correspond à une expression régulière dans cette liste
delete_select delete_if_not_match_from_list
Supprime la ligne si elle ne correspond pas à une expression régulière dans cette liste
delete_select delete_if_contains_from_list
Supprime la ligne si une de ses sections correspond à une expression régulière dans cette liste
delete_select delete_if_not_contains_from_list
Supprime la ligne si aucune section d'elle ne correspond à une expression régulière dans cette liste
not_matching
Indicateur true/false pour la négation d'un critère de correspondance
Attributs de promesse de type insert_lines dans edit_line
expand_scalars
Etendre toute variable non-étendue
insert_type
Type d'objet vers lequel le prometteur se réfère
insert_select insert_if_startwith_from_list
Insérer une ligne si elle commence par une chaîne dans la liste
insert_select insert_if_not_startwith_from_list
Insérer une ligne si elle ne commence pas par une chaîne dans la liste
insert_select insert_if_match_from_list
Insérer une ligne si elle correspond à une expression régulière dans la liste
insert_select insert_if_not_match_from_list
Insérer une ligne si elle ne correspond à aucune expression régulière dans la liste
insert_select insert_if_contains_from_list
Insérer une ligne si une de ses sections correspond à une expression régulière dans la liste
insert_select insert_if_not_contains_from_list
Insérer une ligne si aucune de ses sections ne correspond à une expression régulière dans la liste
location before_after
Option menu, pointer le curseur avant ou après la ligne correspondante
location first_last
Option menu, choisir entre la première ou la dernière occurrence d'une correspondance dans le fichier
location select_line_matching
Expression régulière pour correspondre à un endroit de ligne dans le fichier
whitespace_policy
Critère de correspondance et de reconnaissance de lignes existantes
Attributs de promesse de type field_edits dans edit_line
edit_field allow_blank_fields
Indicateur true/false pour permettre des champs vides dans une ligne (ne pas purger)
edit_field extend_fields
Indicateur true/false pour ajouter des nouveaux champs à la fin d'une ligne pour compléter l'édition si nécessaire
edit_field field_operation
Option menu pour la politique d'édition des sous-champs
edit_field field_value
renseigner la valeur de champ avec une valeur fixe
edit_field select_field
Entier d'un indice du champs requis 0..n (commence par défaut par 1)
edit_field start_fields_from_zero
Si indiqué, les numéros de champ commenceront à partir de 0
edit_field value_separator
Caractère agissant comme séparateur de sous-champs dans le champ choisi
Attributes of replace_patterns promises in edit_line
replace_with occurrences
Option de choix pour remplacer toutes les occurrences ou juste la première (note: la dernière n'est pas convergente)
replace_with replace_value
Valeur utilisée pour remplacer les correspondances d'expression régulière pendant la recherche
Différents attributs de promesse de type edit_xml
build_xpath
Construire un XPath dans un fichier XML
select_xpath
Choisir le noeud XPath à éditer dans un fichier XML
Attributs de promesse de type set_attributes dans edit_xml
attribute_value
Valeur de l'attribut à insérer dans un noeud XPath dans un fichier XML
Attributs de promesse de type interfaces dans un bundle agent
tcp_ip ipv4_address
Adresse IPv4 d'une interface
tcp_ip ipv4_netmask
Masque réseau d'une interface
tcp_ip ipv6_address
Adresse IPv6 d'une interface
Attributs de promesse de type methods dans un bundle agent
inherit
Si vrai le sous-bundle va hériter des classes privées de son père
usebundle
Le nom d'une variable locale qui contient le résultat ou code retourné par un fils
Attributs de promesse de type outputs dans le bundle agent
output_level
Niveau de sortie à observer pour une promesse nommée ou bundle (méta-promesse)
promiser_type
Niveau de sortie à observer pour une promesse nommée ou bundle (méta-promesse)
Attributs de promesse de type packages dans le bundle agent
package_architectures
Choisir l'architecture de sélection de paquets
package_method package_add_command
Commande d'installation d'un paquet dans le système
package_method package_arch_regex
Expression régulière avec des références inverses pour extraire la chaîne de l'architecture des paquets
package_method package_changes
Option menu pour grouper les paquets au sein d'une seule commande agrégée
package_method package_delete_command
Commande pour supprimer un paquet du système
package_method package_delete_convention
La façon avec laquelle le gestionnaire de paquets attende que le paquet soit référencé dans la partie de suppression d'une mise à jour de paquet, e.g. $(name)
package_method package_file_repositories
Une liste de machines-répertoires locaux pour la recherche de paquets
package_method package_installed_regex
Expression régulière correspondant aux paquets déja installés
package_method package_default_arch_command
Commande pour détecter l'architecture de paquets par défaut
package_method package_list_arch_regex
Expression régulière avec une référence inverse pour l'extraction
package_method package_list_command
Commande pour obtenir la liste des paquets disponibles
package_method package_list_name_regex
Expression régulière avec une référence inverse pour l'extraction du nom de paquet
package_method package_list_update_command
Commande pour la mise à jour de la liste des paquets disponibles (si présente)
package_method package_list_update_ifelapsed
Le temps de verrouillage ifelapsed entre les mises à jour de la liste des paquets
package_method package_list_version_regex
Expression régulière avec une référence inverse pour l'extraction de la version des paquets
package_method package_name_convention
La façon avec laquelle le gestionnaire de paquets attende que le paquet soit référencé, e.g. $(name).$(arch)
package_method package_name_regex
Expression régulière avec une référence inverse pour l'extraction du nom des paquet
package_method package_noverify_regex
Expression régulière correspondant à la vérification de la sortie en erreur
package_method package_noverify_returncode
Entier du code retour indiquant l'échec de vérification des paquets
package_method package_patch_arch_regex
Expression régulière avec une référence inverse pour l'extraction de l'architecture de mise à jour
package_method package_patch_command
Commande pour mettre à jour les derniers patchs d'un paquet déjà installé
package_method package_patch_installed_regex
Expression régulière correspondant à des paquets déjà installés
package_method package_patch_list_command
Commande pour obtenir la liste des patchs ou mises à jours disponibles
package_method package_patch_name_regex
Expression régulière avec une référence inverse pour l'extraction de la mise à jour des noms de paquets
package_method package_patch_version_regex
Expression régulière avec une référence inverse pour l'extraction de la version de mise à jour
package_method package_update_command
Commande de mise à jour de la dernière version du paquet déja installé
package_method package_verify_command
Commande de vérification de cohérence du paquet installé
package_method package_version_regex
Expression régulière avec une référence inverse pour l'extraction de la version de paquet
package_method package_multiline_start
Expression régulière correspondant au début d'un paquet dans une sortie multi-lignes
package_method package_commands_useshell
Indique s'il faut utiliser le shell pour lancer des commandes dans cette section de corps (body)
package_method package_version_less_command
Commande pour vérifier si la version du premier paquet renseigné est inférieure à celle du second
package_method package_version_equal_command
Commande pour vérifier si la version du premier paquet renseigné est égale à celle du second
package_policy
Critère d'installation ou mise à jour du paquet sur le système courant
package_select
Critère pour la première correspondance acceptable et relative à "package_version"
package_version
Version du point de référence pour déterminer la version promise
Attributs de promesse de type processes dans le bundle agent
process_count in_range_define
Liste des classes à définir si le résultat est dans l'intervalle
process_count match_range
Entier d'intervalle des numéros permis pour ce processus
process_count out_of_range_define
Liste des classes à définir si le résultat est en dehors de l'intervalle
process_select command
Expression régulière correspondant au champ de commande/cmd d'un processus
process_select pid
Intervalle d'entiers correspondant à l'identifiant d'un processus
process_select pgid
Intervalle d'entiers correspondant à l'identifiant groupe d'un processus
process_select ppid
Intervalle d'entiers correspondant à l'identifiant du parent d'un processus
process_select priority
Intervalle d'entiers correspondant au champ de priorité (PRI/IN) d'un processus
process_select process_owner
Liste des expressions régulières correspondant à l'utilisateur du processus
process_select process_result
Expression booléenne retournant la combinaison logique des classes définies par un test de sélection de processus
process_select rsize
Intervalle d'entiers correspondant à la taille mémoire résidente d'un processus en Ko
process_select status
Expression régulière correspondant au champs de statut d'un processus
process_select stime_range
Intervalle d'entiers correspondant à la date de début d'un processus
process_select ttime_range
Intervalle d'entiers correspondant à la durée totale consommée d'un processus
process_select tty
Expression régulière correspondant au champ tty d'un processus
process_select threads
Intervalle d'entiers correspondant au champ de threads (NLWP) d'un processus
process_select vsize
Intervalle d'entiers correspondant à la taille mémoire virtuelle d'un processus en Ko
process_stop
Une commande utilisée pour arrêter un processus en cours d'exécution
restart_class
Une classe à définir globalement si le processus est arrêté pour qu'une autre commande essairait de le redémarrer
signals
Une liste d'options de menu représentant les signaux à envoyer au processus
Attributs de promesse de type services dans un bundle agent
service_policy
Politique pour le statut du service cfengine
service_dependencies
Liste de services sur lesquels dépend l'abstraction du service nommé
service_method service_args
Paramètres pour démarrer un service par une commande
service_method service_autostart_policy
Indique si le service doit être démarré automatiquement par l'OS
service_method service_bundle
Comment gérer les dépendances et les services dépendants
service_method service_type
Type de service d'abstraction
Attributs de promesse de type storage dans un bundle agent
mount edit_fstab
Indicateur true/false pour ajouter/supprimer des entrées dans la table des systèmes de fichier (fstab)
mount mount_type
Type de protocole du système de fichier distant
mount mount_source
Chemin de montage du système de fichier distant
mount mount_server
Nom ou adresse IP du serveur du système de fichier distant
mount mount_options
Liste d'options à ajouter à la table des systèmes de fichier (fstab)
mount unmount
Indicateur true/false pour démonter un système de fichier déjà monté
volume check_foreign
Indicateur true/false pour vérifier la taille d'un système de fichier monté sur cette machine
volume freespace
Espace disque minimal absolut ou en pourcentage qui doit être disponible avant d'alerter
volume sensible_size
Espace minimal en octets qui doit être utilisé sur un équipement de stockage de données
volume sensible_count
Nombre de fichiers minimal qui doit exister sur un équipement de stockage de données
volume scan_arrivals
Indicateur true/false pour générer une distribution pseudo-périodique d'arrivée de changement de disque
Attributs de promesse de type access dans un bundle server
admit
Liste des machines ou adresses IP à autoriser l'accès vers des objets fichier
deny
Liste des machines ou adresses IP à refuser l'accès vers des objets fichier
maproot
Liste des machines ou adresses IP à autoriser l'accès en lecture sur le serveur
ifencrypted
Indicateur true/false pour indiquer si l'accès du fichier courant à la promesse est conditionné par le chiffrement de la connexion depuis le client
resource_type
Le type d'objet dont l'accès est autorisé (par défaut donner accès aux fichiers)
Attributs de promesse de type roles dans un bundle server
authorize
Liste des noms d'utilisateurs des clefs publiques qui sont autorisés à activer la classe promise durant l'activation de l'agent distant
Attributs de promesse de type inferences dans un bundle knowledge
precedents
Le vecteur fondateur de l'inférence trinaire
qualifiers
Le second vecteur de l'inférence trinaire
Attributs de promesse de type things dans un bundle knowledge
synonyms
Une liste de mots devant être traités comme équivalents au sein du contexte défini
affects
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
belongs_to
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
causes
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
certainty
Renseigne le niveau de certainté pour la connaissance proposée, pour utiliser dans le raisonnement inférentiel
determines
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
generalizations
Une liste de mots devant être traités comme des super-groupes du thème courant, utilisé en cours de raisonnement
implements
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
involves
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
is_caused_by
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
is_connected_to
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
is_determined_by
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
is_followed_by
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
is_implemented_by
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
is_located_in
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
is_measured_by
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
is_part_of
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
is_preceded_by
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
measures
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
needs
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
provides
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
uses
Relation fixe spéciale pour décrire des thèmes de type choses ("things")
Attributs des promesses de type topics dans un bundle knowledge
association forward_relationship
Nom de l'association en avant entre le thème prometteur et associés
association backward_relationship
Nom de l'association avant/inverse depuis les associés au thème prometteur
association associates
Liste des thèmes associés par cette relation en avant
synonyms
Liste des mots à traiter comme équivalents dans un contexte défini
generalizations
Liste des mots à traiter comme des super-groupements pour le thème en cours
Attributs des promesses de type occurences dans un bundle knowledge
about_topics
Liste des thèmes adressés par un document ou une ressource
represents
Liste des explications pour la relation que ce document entretient avec les thèmes dont il est le sujet
representation
Comment interpréter une chaîne de prometteur e.g. donnée pure ou référence à une donnée
Attributs des promesses de type measurements dans un bundle knowledge
stream_type
La donnée (datatype) collectée
data_type
La donnée (datatype) en cours de collection
history_type
Si la donnée peut être considérée comme une série-temps ou juste une valeur isolée
units
Les dimensions architecturales de cette valeur ou une note à propos de l'intention utilisée dans son illustration
match_value select_line_matching
Expression régulière correspondant à un endroit de ligne
match_value select_line_number
Lire à partir de la nème ligne de sortie (format fixe)
match_value extraction_regex
Expression régulière contenant une référence en arrière unique pour extraire une valeur
match_value track_growing_file
Si indiqué, cfengine se souvient de la position à laquelle il a lu dernièrement quand il a ouvert le fichier, et il doit se placer au début si le fichier a été tronqué
match_value select_multiline_policy
Expression régulière correspondant à un endroit de ligne
Recette cfengine3 #2: Détecter l'OS de l'environnement d'acceuil
Question : Comment détecter le type de système d'opération utilisé par un environnement d'accueil donné ?
Réponse :
Tout d'abord clarifions quelques points importants :
Il y a une seule politique/stratégie (et donc un seul fichier de configuration cfengine) pour tout le parc même si ce parc est hétérogène.
Quand la stratégie est exécutée sur un serveur/nœud donné de ce parc, cfengine sait détecter automatiquement (parmi d'autres choses) le système d'exploitation de ce serveur.
Chaque attribut spécifique à un noeud donné détecté par une instance de cfengine est enregistré dans une entité nommé "classe".
Par exemple, cfengine attribuera automatiquement à un serveur nommé "monserveur.mondomaine.com" de type Linux Debian et ayant l'adresse IP "192.168.1.8" les classes suivantes : "linux", "debian", "monserveur", "monserveur_mondomaine_com" et "ipv4_192_168_1_8". Ces classes attribuées automatiquement sont appelées : classes dures (hard classes en anglais).
Les classes que nous définissons nous-mêmes (et que nous pouvons utiliser aussi pour des évaluations conditionnelles) sont appelées classes douces (soft classes en anglais).
Ainsi l'exemple suivant nous aidera à classifier les serveurs de notre parc hétérogène selon leur OS et ou la distribution qu'ils utilisent :
body common control { bundlesequence => { "deuxio" }; } bundle agent deuxio { reports: debian|ubuntu:: "Env de type Linux Debian ou Ubuntu"; redhat:: "Env de type Linux Redhat"; windows:: "Env de type Microsoft Windows"; }
Ligne 1 et 2 : Ces deux lignes aiguillent cfengine vers le bundle à évaluer en premier. Ici, le bundle nommé "deuxio". (voir la recette #1)
Ligne 6 : Un bundle est une suite de promesses. Celui là ("deuxio") est composé de trois promesses (toutes de type "reports") et concerne donc un message à afficher.
Ligne 7 : Ceci est une expression d'évaluation de classes cfengine car elle finit par ::. Si l'expression est évaluée à "oui", la promesse qui suit est évaluée. Si l'expression est évaluée à "non", la promesse qui suit n'est pas prise en compte.
L'expression "debian|ubuntu" veut concrètement dire ceci: si la classe "debian" OU la classe "ubuntu" sont définies, passer à l'évaluation de la promesse qui suit l'expression. Le "OU" est le résultat de le présence de l'opérateur "|".
Ligne 8 : Si l'expression de la ligne 7 est évaluée à "oui", le message de log "Env de type Linux Debian ou Ubuntu" est affiché (car la promesse est de type "reports").
Ligne 9 et 10: Affiche le message "Env de type Linux Redhat" si la classe "redhat" est définie. "redhat" étant une classe dure, elle ne peut être définie que par cfengine lui-même et que dans le cas où l'environnement en question est un Linux Redhat.
Ligne 11 et 12: Affiche le message "Env de type Microsoft Windows" si l'environnement de la machine en question est un Microsoft Windows (NT, 2000, 8 ou autre).
Pour finir
CFEngine dispose d'un puissant système de classification automatique qui nous évite ainsi de programmer nos propres routines de détection des caractéristiques de chaque serveur et de chaque plateforme possible. Nous verrons dans les prochaines recettes d'autres utilisations salvatrices de ce système de classes.
Les développeurs de la société cfengine viennent de sortir la nouvelle version communauté de leur produit phare cfengine3.
Parmi les nouvelles fonctionnalités :
Amélioration et extension des fonctionnalités d'édition des fichiers XML. Avec la prolifération des logiciels ayant des fichiers en mode XML (surtout dans le milieu Java), cette fonctionnalité à mon avis est plus que la bienvenue.
Le support des ACL au format POSIX (http://fr.wikipedia.org/wiki/Access_Control_List). Ce format permet une gestion plus fine des accès et des permissions que notre valeureux format UNIX n'en dispose pas.
Le support de l'utilisation de syslog pour le logging à distance. Quiconque a déjà géré un parc de plus de 10 serveurs sache à quel point il est important de pouvoir centraliser, consolider et auditer les messages de logs qu'ils génèrent.
L'ajout des promesses de type "outputs". Elles permettent de configurer le niveau de log pour syslog par exemple et donc de contrôler finement le volume de logs à générer.
L'ajout du support de la VM open-source VirtualBox comme environnement cible et donc gérable par une instance cfengine3. La prise en compte des environnements de type VM est semble-t-il dans la ligne de mire des concepteurs de cfengine3.
Il faut noter que les binaires générés ne sont plus placés par défaut dans /var/cfengine/sbin mais dans le répertoire /var/cfengine/bin pour des raisons de homogénéité.
La liste des changements détaillés est disponible ici. Les sources sous licence GPLv3 sont disponibles en suivant ce lien.
Question : Comment construire un fichier de "politique" cfengine de base ?
Réponse :
Un seul fichier suffit généralement à décrire la politique à suivre pour automatiser l'administration d'un parc informatique donné. Commençons d'abord par ces quelques définitions cruciales pour comprendre la structure d'un fichier de politique cfengine3.
Un fichier de politique cfengine3 est constitué de conteneurs (de type bundles ou bodies).
Les bundles contiennent des groupements de promesses.
Les bodies contiennent des attributs de configuration liés souvent à des promesses.
Une promesse est une déclaration d'intention concernant un fichier, une commande, un service ou un espace de stockage par exemple.
L'exemple suivant décrit une politique qui vise à assurer qu'un fichier donné existe sur tous les nœuds de notre parc, de le créer dans le cas contraire et d'afficher un message de log après chaque vérification faire par cfengine.
body common control { bundlesequence => { "recette1" }; } bundle agent recette1 { files: "/tmp/premier.txt" create => "true"; reports: cfengine:: "premiere recette executee"; }
Procédons maintenant à l'explication de chaque ligne de notre fichier .cf :
Ligne 1: Le "body common" est la section où sont définis les attributs communs à tous les bundles présents dans le fichier politique.
Ligne 3: Ici l'attribut bundlesequences donne la liste des bundles à invoquer. Ici nous allons invoquer le bundle "recette1" de type agent.
Ligne 7: Ici est défini le bundle (ou conteneur de promesses) de type agent nommé "recette1". Ce conteneur contient deux promesses (une promesse concernant un fichier et une autre concernant un rapport d'activité à afficher).
Ligne 9: le mot clé "files:" indique que la promesse suivante est de type "files" et concerne donc un fichier.
Ligne 10 et ligne 11: Plus précisément, la promesse concerne le fichier "/tmp/premier.txt". Le corps de la promesse est constitué de l'attribut "create" ayant la valeur "true". Cela indique que dans le cas où la promesse n'est pas tenue (c'est à dire dans le cas où le fichier nommé "premier.txt" n'existe pas dans le répertoire "/tmp"), l'agent d'exécution cfengine3, doit créer ce fichier pour satisfaire cette promesse.
Ligne 13: le mot clé "reports:" indique que la promesse suivante est de type "reports" et concerne donc un rapport d'activité à afficher.
Ligne 15: Plus précisément, la promesse concerne celle d'afficher à chaque exécution de l'agent cfengine3 le message "premiere recette executee" vers la sortie standard.
Ligne 14: Contrairement à la promesse de type "files", celle là est conditionnée par la définition de la classe "cfengine3". Sachant que cette classe est définie par défaut, la promesse sera toujours évaluée. Nous aborderons la notion de classe dans les recettes suivantes.
Vérifier la syntaxe
Sur un nœud donné, exécuter la commande suivante :
$ cf-promises -f recette1.cf
L'absence de message en sortie indique que la syntaxe du fichier de politique recette1.cf est valide. Dans le cas contraire, le message en sortie indique des erreurs de syntaxe.
Exécuter la politique sur un noeud donné
Sur un nœud donné, exécuter la commande suivante :
$ cf-agent -K -f recette1.cf
Cette commande spéciale, exécute la politique contenue dans le fichier recette1.cf sur le nœud en question. Plus tard nous verrons comment cfengine exécute la même politique périodiquement sur plusieurs nœuds en même temps à l'aide d'une architecture client/serveur.
Pour finir
J'espère que ce premier exemple vous aidera à rédiger des politiques d'automatisation plus compliquées.
In the "Cfengine 3 Concept Guide" (PDF), section 2.6 has instructions for "Getting started with the Community Edition". One problem: they assume you are running as root!
I would prefer to test things out as a non-privileged user. There will be a few issues with not having access to change system files, etc., but I would rather deal with those than accidentally roach my whole system (or network)! So here are my instructions for:
Getting started with the Community Edition in user mode