Marioneta - Archivos manifiestos
En Puppet, todos los programas que están escritos usando el lenguaje de programación Ruby y guardados con una extensión de .pp son llamados manifests. En términos generales, todos los programas Puppet que se construyen con la intención de crear o administrar cualquier máquina host de destino se denominan manifiestos. Todos los programas escritos en Puppet siguen el estilo de codificación Puppet.
El núcleo de Puppet es la forma en que se declaran los recursos y cómo estos recursos representan su estado. En cualquier manifiesto, el usuario puede tener una colección de diferentes tipos de recursos que se agrupan usando clase y definición.
En algunos casos, el manifiesto de Puppet puede incluso tener una declaración condicional para lograr un estado deseado. Sin embargo, en última instancia, todo se reduce a asegurarse de que todos los recursos se definan y utilicen de la manera correcta y que el manifiesto definido cuando se aplica después de convertirse en un catálogo sea capaz de realizar la tarea para la que fue diseñado.
Flujo de trabajo de archivo de manifiesto
El manifiesto de marionetas consta de los siguientes componentes:
Files (estos son archivos simples en los que Puppet no tiene nada que ver con ellos, solo para recogerlos y colocarlos en la ubicación de destino)
Resources
Templates (estos se pueden usar para construir archivos de configuración en el nodo).
Nodes (toda la definición relacionada con un nodo cliente se define aquí)
Classes
Puntos a tener en cuenta
En Puppet, todos los archivos de manifiesto usan Ruby como lenguaje de codificación y se guardan con .pp extensión.
La instrucción "Importar" en muchos manifiestos se usa para cargar archivos cuando se inicia Puppet.
Para importar todos los archivos contenidos en un directorio, puede usar la declaración de importación de otra manera, como importar 'clientes / *'. Esto importará todos.pp archivos dentro de ese directorio.
Escribiendo Manifiestos
Trabajar con variables
Mientras escribe un manifiesto, el usuario puede definir una nueva variable o utilizar una variable existente en cualquier punto de un manifiesto. Puppet admite diferentes tipos de variables, pero pocas de ellas se utilizan con frecuencia, como cadenas y matriz de cadenas. Aparte de ellos, también se admiten otros formatos.
Ejemplo de variable de cadena
$package = "vim"
package { $package:
ensure => "installed"
}
Usar bucles
Los bucles se utilizan cuando uno desea pasar por múltiples iteraciones en un mismo conjunto de código hasta que se cumple una condición definida. También se utilizan para realizar tareas repetitivas con diferentes conjuntos de valores. Creando 10 tareas para 10 cosas diferentes. Uno puede crear una sola tarea y usar un bucle para repetir la tarea con diferentes paquetes que desee instalar.
Por lo general, se utiliza una matriz para repetir una prueba con diferentes valores.
$packages = ['vim', 'git', 'curl']
package { $packages:
ensure => "installed"
}
Usando condicionales
Puppet admite la mayor parte de la estructura condicional que se puede encontrar en los lenguajes de programación tradicionales. La condición se puede utilizar para definir dinámicamente si se debe realizar una tarea en particular o si se debe ejecutar un conjunto de código. Como if / else y declaraciones de casos. Además, las condiciones como ejecutar también admitirán atributos que funcionan como condición, pero solo aceptan la salida de un comando como condición.
if $OperatingSystem != 'Linux' {
warning('This manifest is not supported on this other OS apart from linux.')
} else {
notify { 'the OS is Linux. We are good to go!': }
}