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 |