Descargar

Gestión de configuraciones con cfengine

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    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

    edu.red

    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

    edu.red

    Cfengine + Control de Versiones

    edu.red

    Distribución del Paquete

    bin/ Binarios inputs/ Configuración modules/ Extensiones outputs/ Mensajes ppkeys/ Claves privadas y públicas state/ Información del entorno

    edu.red

    Sintaxis La configuración consta de: acciones, condiciones y declaraciones:

    # comentarios acción: clase1:: declaración declaración clase2|clase3:: declaración

    edu.red

    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)

    edu.red

    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

    edu.red

    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

    edu.red

    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

    edu.red

    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 )

    edu.red

    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 )?

    edu.red

    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=#*

    Partes: 1, 2
    Página siguiente