Configuración de PICA

PICA tiene actualmente tres ficheros de configuración. Su sintaxis es parecida a la de los ficheros de DNS, por ser clara y legible y resultar familiar a los administradores de sistemas. En uno especificamos algunos datos necesarios para el propio ejecutable de PICA, y en los otros dos especificamos las máquinas y los objetos que vamos a manejar, respectivamente. Los ficheros se llaman pica.conf, hosts.conf y objects.conf. Aunque no es importante para entender el funcionamiento general de PICA, sí es importante a la hora de usarlo saber que los ficheros se leen en ese orden.

pica.conf

En este fichero se especifican las rutas de varios ejecutables que PICA necesita, algunos directorios locales importantes para el programa (dónde van los ficheros temporales, por ejemplo) y una lista de directorios que no deben borrarse:

Ejemplo 1. Ejemplo de pica.conf

# pica.conf

defaults {
   # Directorios (locales) importantes para el ejecutable
   picaroot    = /var/lib/pica;  # Raíz de los ficheros para PICA
   picatmp     = /var/lib/pica/tmp; # Ficheros temporales
   # Donde están los ficheros a distribuir
   picasrc     = /var/lib/pica/src;
   # Ficheros de inclusión del preprocesador
   picainclude = /var/lib/pica/include;

   # Rutas de algunos programas usados por PICA
   sshpath   = '/usr/bin/ssh -q';  # Ruta al ssh (y opciones)
   diffpath  = '/usr/bin/diff';
   tarpath   = '/bin/tar';
   rsyncpath = '/usr/bin/rsync';

   # Directorios protegidos (nunca se borrarán ni se cogerán
   # como directorios temporales)
   protecteddirs {
      /,
      /bin,
      /usr/bin,
      /lib,
      /usr/lib
   }
}
      

hosts.conf

El fichero de descripción de máquinas permite especificar los nombres de las que vamos a manejar y sus propiedades, junto con la definición de los posibles grupos que queramos (para facilitarnos el referirnos a éstas al llamar a PICA). Por defecto, se intentará conectar con las máquinas por el nombre que le demos en el fichero. Si se quiere poner un nombre «lógico» diferente del nombre real de la máquina, se puede usar la propiedad fqdn.

Ejemplo 2. Ejemplo de hosts.conf

# hosts.conf

# Valores por defecto
defaults {
   method      =  'tar'; # método de copia (tar, rsync or ssh)

   # Variables globales
   vars {
      docdir  = '/var/www/html/sysadm';
   }
}

# Definición de máquina
host mimaquina;
host miotramaquina {
   method = ssh;
   fqdn   = nombre.completo.net;
}

# Definición de grupo
hostgroup migrupo {
    members { mimaquina, miotramaquina }
}

hostgroup miotrogrupo {
    members { miotramaquina }
}
      

objects.conf

El fichero de objetos probablemente será el que modifiquemos con más frecuencia, y desde luego es el que tiene la sintaxis más completa. Al igual que en el fichero de máquinas, especificamos la lista de objetos que podemos distribuir con sus propiedades y los grupos que queramos crear (aunque se declaran de forma diferente, ver ejemplo).

Ejemplo 3. Ejemplo de objects.conf

# objects.conf

# Inclusión de ficheros
#include <pifia.conf>

# Valores por defecto
defaults {
    uid = 0;
    gid = 0;
    perms = 644;
    verbatim = 0;  # Si vale 1 no se aplica el preprocesador
                   # antes de copiar
}

# Ficheros de prueba
file pica-rules {
    path = '/var/lib/pica/rules'; # Donde se instalan en la máquina
                                  # remota
    source = 'pica-rules';	# Donde está el "fuente" localmente

    # Variables locales para el fichero (se podrán sustituir
    # en el fichero de distribución, ver ejemplos del preprocesador
    # más adelante)
    vars {
       myvar         = 'foo';
       limit         = '2';
       mythirdvar    = 'enough';
    }
}

# Ficheros de autentificación RSA con SSH
group sshauth {
   file auth_keys {
      source = 'SSHAuth/authorized_keys';
      path   = '/root/.ssh/authorized_keys';
      perms  = '600';
   }
   # SSH v.2
   file auth_keys2 {
      source = 'SSHAuth/authorized_keys2';
      path   = '/root/.ssh/authorized_keys2';
      perms  = '600';
   }
}