Puppet - Servidor de archivos

Puppet sigue el concepto de cliente y servidor donde una máquina en una configuración funciona como la máquina servidor con el software de servidor Puppet ejecutándose en ella y el resto funciona como el cliente con el software de agente Puppet ejecutándose en ella. Esta característica del servidor de archivos ayuda a copiar los archivos en varias máquinas. Esta característica de la función de servicio de archivos en Puppet viene como parte del demonio central de Puppet. Puppetmasterd y la función del cliente juegan un papel clave en la obtención de atributos de archivo como objeto de archivo.

class { 'java':  
   package               => 'jdk-8u25-linux-x64',  
   java_alternative      => 'jdk1.8.0_25',  
   java_alternative_path => '/usr/java/jdk1.8.0_25/jre/bin/java'  
}

Como en el fragmento de código anterior, las funciones de servicio de archivos de Puppet abstraen la topología del sistema de archivos local al admitir el módulo de servicio de archivos. Especificaremos el módulo de servicio de archivos de la siguiente manera.

“puppet://server/modules/module_name/sudoers”

Formato de archivo

En la estructura de directorios de Puppet, de forma predeterminada, la configuración del servidor de archivos se encuentra en /etc/puppet/fileserver.config directorio, si el usuario desea cambiar esta ruta de archivo de configuración predeterminada, puede hacerlo usando el nuevo indicador de configuración para puppetmasterd. El archivo de configuración se parece a los archivos INI pero no es exactamente el mismo.

[module] 
path /path/to/files 
allow *.domain.com 
deny *.wireless.domain.com

Como se muestra en el fragmento de código anterior, las tres opciones están representadas en el archivo de configuración. El nombre del módulo va entre paréntesis. La ruta es la única opción requerida. La opción de seguridad predeterminada es denegar todo el acceso, por lo que si no se especifican líneas permitidas, el módulo que se configurará estará disponible para cualquiera.

La ruta puede contener cualquiera o todos los% d,% hy% H que se reemplazan dinámicamente por su nombre de dominio, su nombre de host y su nombre de host completo. Todos se toman del certificado SSL del cliente (así que tenga cuidado si uno tiene una discrepancia en el nombre de host y el nombre del certificado). Esto es útil para crear módulos donde los archivos de cada cliente se guarden completamente por separado. Ejemplo, para claves de host privadas.

[private] 
path /data/private/%h 
allow *

En el fragmento de código anterior, el código está intentando buscar el archivo /private/file.txt del cliente client1.vipin.com. Lo buscará en /data/private/client1/file.txt, mientras que la misma solicitud para client2.vipin.com intentará recuperar el archivo /data/private/client2/file.txt en el servidor de archivos.

Seguridad

Puppet admite los dos conceptos básicos de protección de archivos en el servidor de archivos Puppet. Esto se logra permitiendo el acceso a archivos específicos y negando el acceso a los que no son necesarios. De forma predeterminada, Puppet no permite el acceso a ninguno de los archivos. Debe definirse explícitamente. El formato que se puede utilizar en los archivos para permitir o denegar el acceso es mediante la dirección IP, el nombre o el permiso global.

Si el cliente no está conectado al servidor de archivos Puppet directamente, por ejemplo, usando un proxy inverso y Mongrel, entonces el servidor de archivos verá todas las conexiones como provenientes del servidor proxy y no del cliente Puppet. En los casos anteriores, la mejor práctica es restringir el nombre de host en base al nombre de host.

Un punto clave que debe tenerse en cuenta al definir la estructura del archivo es que todas las declaraciones denegación se analizan antes de la declaración allow. Por lo tanto, si alguna declaración de denegación coincide con un host, ese host será denegado y si no se escribe ninguna declaración de permiso en los archivos siguientes, se denegará el host. Esta función ayuda a establecer la prioridad de cualquier sitio en particular.

Nombre de host

En cualquier configuración de servidor de archivos, el nombre de host del archivo se puede especificar de dos formas, ya sea usando un nombre de host completo o especificando un nombre de dominio completo usando el comodín * como se muestra en el siguiente ejemplo.

[export] 
path /usr 
allow brcleprod001.brcl.com 
allow *.brcl.com 
deny brcleprod002.brcl.com

Dirección IP

En cualquier configuración de servidor de archivos, la dirección del archivo se puede especificar como similar a los nombres de host, utilizando una dirección IP completa o una dirección comodín. También se puede utilizar la notación del sistema CIDR.

[export] 
path /usr 
allow 127.0.0.1 
allow 172.223.30.* 
allow 172.223.30.0/24

Permitir global

El permiso global se usa cuando el usuario desea que todos puedan acceder a un módulo en particular. Para hacer esto, un solo comodín ayuda a permitir que todos accedan al módulo.

[export] 
path /export 
allow *