Necesidad
El estado de configuración de los sistemas tiende a la divergencia
Los humanos tenemos no somos consistentes
Eliminación de las tareas repetitivas
Acelerar el tiempo de puesta a punto de un sistema nuevo
A medida que la red crece y el número de sistemas y servicios aumenta, la administración manual se vuelve una pesadilla
Qué es cfengine
cf = configuración, engine = motor
Consiste en:
Un lenguaje de muy alto nivel para definir políticas de configuración
Varias herramientas:
cfagent Un agente que ejecuta las políticas
cfexecd Un daemon que gestiona el agente
cfservd Un servidor de archivos y de acciones remotas
cfrun Ejecuta agentes externos
Es una medicina contra la repetición
Cfengine + Control de Versiones
Distribución del Paquete
bin/ Binarios
inputs/ Configuración
modules/ Extensiones
outputs/ Mensajes
ppkeys/ Claves privadas y públicas
state/ Información del entorno
Sintaxis
La configuración consta de: acciones, condiciones y declaraciones:
# comentarios
acción:
clase1::
declaración
declaración
clase2|clase3::
declaración
Condiciones
Las condiciones en cfengine se componen de clases (classes) o grupos (groups), con operadores lógicos:
'.' o '&' equivale al 'AND' lógico
'|' equivale al 'OR' lógico
'!' equivale al 'NOT' lógico
Los paréntesis sirven para modificar la precedencia
!Hr00.(parche_disponible|Tuesday)
(Verdadero si NO es medianoche Y hay un parche o es martes)
Clases predeterminadas
Por defecto, cfengine define una serie de clases asociadas a la máquina donde se ejecuta
Verificar con cfagent -pv
10_1_1 10_1_1_1 ipv4_10 ipv4_10_1 ipv4_10_1_1 ipv4_10_1_1_1
192_168_1 192_168_1_1 ipv4_192 ipv4_192_168 ipv4_192_168_1 ipv4_192_168_1_1
net_iface_eth0 net_iface_eth1 net_iface_lo
host1 host1_example_com
Clases definidas por el administrador
classes:
any::
servidor_mx = ( servidor1 servidor2 servidor3 )
servidor_mail = ( servidor4 servidor5 )
cliente_cfengine = ( any )
Definir bajo la acción classes
Acción control
Especifica qué debe hacer el agente y cómo
Si no existe esta acción, nada ocurre!
Define ciertas variables, configura valores por defecto y define el orden en que se han de ejecutar las acciones definidas en otras partes de la configuración
La variable de control más importante es actionsequence
Acción control
control:
site = ( walc )
domain = ( localdomain )
sysadm = ( walcadmin@localdomain )
smtpserver = ( mail.localdomain )
SplayTime = ( 1 )
schedule = ( Min00_05 Min15_20 Min30_35 Min45_50 )
actionsequence =
(
links.some
mountall
links.others
files
)
Actionsequence
Acciones permitidas en esta variable:
actionsequence =
(
mountall # mount filesystems in fstab
mountinfo # scan mounted filesystems
checktimezone # check timezone
netconfig # check net interface config
resolve # check resolver setup
unmount # unmount any filesystems
packages # check for required packages
shellcommands # execute shell commands
editfiles # edit files
addmounts # add new filesystems to system
directories # make any directories
links # check and maintain links (single and child)
mailcheck # check mailserver
mountall # (again)
required # check required filesystems
tidy # tidy files
disable # disable files
files # check file permissions
copy # make a copy/image of a master file
processes # signal / check processes
module:name # execute a user-defined module
)?
Acciones
copy:
Copia archivos de un directorio a otro, o del servidor al cliente. Manipula permisos, chequea integridad, etc.
El servidor debe estar ejecutando 'cfservd'
El cliente debe ser admitido en la configuración del servidor
Cliente y servidor deben tener la misma hora
Cliente y servidor deben tener la clave pública del otro
copy:
any::
$(cfmaster) dest=$(cfworkdir)
r=inf mode=o-rw type=checksum server=$(policyhost)
trustkey=true exclude=*~ exclude=#*
Página siguiente |