Marionnette - Fonction

Puppet prend en charge les fonctions comme tout autre langage de programmation puisque le langage de développement de base de Puppet est Ruby. Il prend en charge deux types de fonctions connues sous le nom destatement et rvalue les fonctions.

  • Statementssont autonomes et n'ont aucun type de retour. Ils sont utilisés pour effectuer des tâches autonomes telles que l'importation d'autres modules Puppet dans le nouveau fichier manifeste.

  • Rvalue renvoie des valeurs et ne peut être utilisé que lorsque l'instruction requiert une valeur, telle qu'une affectation ou une instruction case.

La clé derrière l'exécution de la fonction dans Puppet est qu'elle ne s'exécute que sur Puppet master et qu'elle ne s'exécute pas sur le client ou l'agent Puppet. Par conséquent, ils n'ont accès qu'aux commandes et aux données disponibles sur le maître Puppet. Il existe différents types de fonctions qui sont déjà présentes et même l'utilisateur a le privilège de créer des fonctions personnalisées selon les besoins. Quelques fonctions intégrées sont répertoriées ci-dessous.

Fonction de fichier

La fonction de fichier de la ressource fichier est de charger un module dans Puppet et de renvoyer la sortie souhaitée sous la forme d'une chaîne. Les arguments recherchés sont la référence <nom du module> / <file>, qui aide à charger le module depuis le répertoire de fichiers du module Puppet.

Comme script / tesingscript.sh chargera les fichiers depuis <nom du module> /script/files/testingscript.sh. La fonction a la capacité de lire et d'accepter un chemin absolu, ce qui aide à charger le fichier à partir de n'importe où sur le disque.

Inclure la fonction

Dans Puppet, la fonction include est très similaire à la fonction include de tout autre langage de programmation. Il est utilisé pour la déclaration d'une ou plusieurs classes, ce qui aboutit à évaluer toutes les ressources présentes à l'intérieur de ces classes et enfin à les ajouter à un catalogue. La façon dont cela fonctionne est que la fonction include accepte un nom de classe, une liste de classes ou une liste de noms de classes séparés par des virgules.

Une chose à garder à l'esprit lors de l'utilisation d'un includeest, il peut être utilisé plusieurs fois dans une classe mais a la limitation d'inclure une seule classe une seule fois. Si la classe incluse accepte un paramètre, la fonction include recherchera automatiquement des valeurs pour eux en utilisant <nom de classe> :: <nom de paramètre> comme clé de recherche.

Inclure la fonction ne fait pas qu'une classe soit contenue dans la classe quand elle est déclarée, pour cela nous devons utiliser une fonction contenue. Il ne crée même pas de dépendance dans la classe déclarée et les classes qui l'entourent.

Dans la fonction include, seul le nom complet d'une classe est autorisé, les noms relatifs ne sont pas autorisés.

Fonction définie

Dans Puppet, la fonction définie aide à déterminer où une classe ou un type de ressource donné est défini et renvoie une valeur booléenne ou non. On peut également utiliser define pour déterminer si une ressource spécifique est définie ou si la variable définie a une valeur. Le point clé à garder à l'esprit lors de l'utilisation de la fonction définie est que cette fonction prend au moins un argument de chaîne, qui peut être un nom de classe, un nom de type, une référence de ressource ou une référence de variable de la forme «$ name».

Définissez des vérifications de fonction pour le type de fonction natif et défini, y compris les types fournis par les modules. Le type et la classe correspondent à leurs noms. La fonction correspond à la décélération de la ressource en utilisant la référence de ressource.

Définir les correspondances de fonction

# Matching resource types 
defined("file") 
defined("customtype")  

# Matching defines and classes 
defined("testing") 
defined("testing::java")  

# Matching variables 
defined('$name')  

# Matching declared resources 
defined(File['/tmp/file'])