Puppet - Serveur de fichiers

Puppet suit le concept de client et de serveur où une machine dans une configuration fonctionne comme la machine serveur avec le logiciel serveur Puppet en cours d'exécution et le reste fonctionne en tant que client avec le logiciel agent Puppet en cours d'exécution. Cette fonctionnalité du serveur de fichiers permet de copier les fichiers sur plusieurs machines. Cette fonction de service de fichiers dans Puppet fait partie du démon Puppet central. Puppetmasterd et la fonction client jouent un rôle clé dans l'approvisionnement des attributs de fichier en tant qu'objet fichier.

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'  
}

Comme dans l'extrait de code ci-dessus, les fonctions de service de fichiers de Puppet font abstraction de la topologie du système de fichiers local en prenant en charge le module de service de fichiers. Nous spécifierons le module de service de fichiers de la manière suivante.

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

Format de fichier

Dans la structure de répertoires Puppet, par défaut, la configuration du serveur de fichiers se trouve sous /etc/puppet/fileserver.config répertoire, si l'utilisateur souhaite changer ce chemin de fichier de configuration par défaut, cela peut être fait en utilisant le nouvel indicateur de configuration pour puppetmasterd. Le fichier de configuration ressemble aux fichiers INI mais n'est pas exactement le même.

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

Comme indiqué dans l'extrait de code ci-dessus, les trois options sont représentées dans le fichier de configuration. Le nom du module va quelque peu entre crochets. Le chemin est la seule option requise. L'option de sécurité par défaut est de refuser tous les accès, donc si aucune ligne d'autorisation n'est spécifiée, le module qui sera configuré sera accessible à tous.

Le chemin peut contenir tout ou partie des% d,% h et% H qui sont remplacés dynamiquement par son nom de domaine, son nom d'hôte et son nom d'hôte complet. Tous sont extraits du certificat SSL du client (soyez donc prudent si l'un d'entre eux présente une incohérence dans le nom d'hôte et le nom du certificat). Ceci est utile pour créer des modules où les fichiers de chaque client sont conservés complètement séparément. Exemple, pour les clés d'hôte privées.

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

Dans l'extrait de code ci-dessus, le code tente de rechercher le fichier /private/file.txt à partir du client client1.vipin.com. Il le recherchera dans /data/private/client1/file.txt, tandis que la même requête pour client2.vipin.com tentera de récupérer le fichier /data/private/client2/file.txt sur le serveur de fichiers.

Sécurité

Puppet prend en charge les deux concepts de base de la sécurisation des fichiers sur le serveur de fichiers Puppet. Ceci est réalisé en autorisant l'accès à des fichiers spécifiques et en refusant l'accès à ceux qui ne sont pas nécessaires. Par défaut, Puppet n'autorise l'accès à aucun des fichiers. Il doit être défini explicitement. Le format qui peut être utilisé dans les fichiers pour autoriser ou refuser l'accès consiste à utiliser l'adresse IP, le nom ou l'autorisation globale.

Si le client n'est pas connecté directement au serveur de fichiers Puppet, par exemple en utilisant un proxy inverse et Mongrel, le serveur de fichiers verra toutes les connexions comme provenant du serveur proxy et non du client Puppet. Dans les cas ci-dessus, la meilleure pratique consiste à restreindre le nom d'hôte sur la base du nom d'hôte.

Un point clé à noter lors de la définition de la structure du fichier est que toutes les instructions deny sont analysées avant l'instruction allow. Par conséquent, si une instruction de refus correspond à un hôte, cet hôte sera refusé et si aucune instruction d'autorisation n'est écrite dans les fichiers à venir, l'hôte sera refusé. Cette fonctionnalité aide à définir la priorité d'un site particulier.

Nom d'hôte

Dans n'importe quelle configuration de serveur de fichiers, le nom d'hôte du fichier peut être spécifié de deux manières en utilisant un nom d'hôte complet ou en spécifiant un nom de domaine entier à l'aide du caractère générique *, comme illustré dans l'exemple suivant.

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

Adresse IP

Dans n'importe quelle configuration de serveur de fichiers, l'adresse de fichier peut être spécifiée comme similaire aux noms d'hôte, en utilisant soit une adresse IP complète, soit une adresse générique. On peut également utiliser la notation système CIDR.

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

Autoriser global

L'autorisation globale est utilisée lorsque l'utilisateur souhaite que tout le monde puisse accéder à un module particulier. Pour ce faire, un seul caractère générique permet à tout le monde d'accéder au module.

[export] 
path /export 
allow *