Comment copier un fichier sur tous les clients utilisant une marionnette?

Comment copier des fichiers sur tous les clients utilisant des marionnettes? J’ai installé un serveur de marionnettes et des clients et j’ai testé la connexion qui fonctionnait bien. Je ne suis pas un expert en marionnettes, je ne suis qu’un débutant et je veux juste savoir comment copier des fichiers vers tous les clients à partir du serveur de marionnettes? Je veux aussi savoir comment supprimer des fichiers?

Le serveur de fichiers de marionnettes

Ce guide traite de l’utilisation de la capacité de serveur de fichiers de Puppet.


Le service maître de marionnettes comprend un serveur de fichiers pour le transfert de fichiers statiques. Si une déclaration de ressource de fichier contient une marionnette: URI dans son atsortingbut source, les nœuds extrairont ce fichier du serveur de fichiers du maître:

 # copier un fichier distant dans / etc / sudoers
 fichier {"/ etc / sudoers":
     mode => 440,
     propriétaire => racine,
     groupe => racine,
     source => "marionnette: /// modules / nom_module / sudoers"
 }

Tous les URI de serveur de fichiers de marionnettes sont structurés comme suit:

puppet://{server hostname (optional)}/{mount point}/{remainder of path} 

Si un nom d’hôte de serveur est omis (c.-à-d. puppet:///{mount point}/{path} ; notez le sortingple trait oblique), l’URI sera résolu pour le serveur que le nœud évaluateur considère comme son maître. Comme cela rend le code manifeste plus portable et réutilisable, les noms d’hôte doivent être omis autant que possible.

Le rest de la marionnette: l’URI est mappé sur le système de fichiers du serveur de l’une des deux manières suivantes, selon que les fichiers sont fournis par un module ou exposés via un custom mount point .

Servir des fichiers de module

Comme la grande majorité des fichiers doivent être servis par le biais de modules, le serveur de fichiers Puppet fournit un sharepoint assembly spécial et semi-magique appelé modules, disponible par défaut. Si le sharepoint assembly d’un URI est constitué de modules, Puppet va:

  • Interprétez le segment suivant du chemin en tant que nom d’un module…
  • … localisez ce module dans le module Modulepath du serveur (comme décrit dans la section “Recherche de module” …
  • … et résolvez le rest du chemin en commençant par le répertoire files / de ce module.
  • Autrement dit, si un module nommé test_module est installé dans le répertoire /etc/puppet/modules du serveur central, la marionnette suivante: URI …

     puppet:///modules/test_module/testfile.txt 

    … va résoudre le chemin absolu suivant:

     /etc/puppet/modules/test_module/files/testfile.txt 

    Si test_module était installé dans /usr/share/puppet/modules , le même URI serait à la place résolu comme test_module :

     /usr/share/puppet/modules/test_module/files/testfile.txt 

Bien qu’aucune configuration supplémentaire ne soit nécessaire pour utiliser le sharepoint assembly des modules, certains contrôles d’access peuvent être spécifiés dans la configuration du serveur de fichiers en ajoutant un bloc de configuration [modules] ; voir la sécurité.

Servir des fichiers à partir de points de assembly personnalisés

Puppet peut également servir des fichiers à partir de points de assembly arbitraires spécifiés dans la configuration du serveur de fichiers du serveur (voir ci-dessous). Lors de la fourniture de fichiers à partir d’un sharepoint assembly personnalisé, Puppet n’effectue pas l’abstraction d’URI supplémentaire utilisée dans le assembly de modules et résout le chemin d’access après le nom de assembly sous la forme d’une structure de répertoire simple.

Configuration du serveur de fichiers

L’emplacement par défaut des données de configuration du serveur de fichiers est /etc/puppet/fileserver.conf ; cela peut être changé en passant le drapeau --fsconfig au maître des marionnettes.

Le format du fichier fileserver.conf est presque identique à celui de rsync et ressemble plus ou moins à un fichier INI:

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

Les options suivantes peuvent actuellement être spécifiées pour un sharepoint assembly donné:

  • Le chemin d’access à l’emplacement du assembly sur le disque
  • N’importe quel nombre de directives d’autorisation
  • N’importe quel nombre de directives de refus

chemin est la seule option requirejse, mais étant donné que la configuration de sécurité par défaut consiste à refuser tout access, un sharepoint assembly sans directive Autoriser ne serait disponible pour aucun nœud.

Le chemin peut contenir tout ou partie de %h , %H et %d , qui sont remplacés de manière dynamic par le nom d’hôte du client, son nom de domaine complet et son nom de domaine, respectivement. Tous sont extraits du certificate SSL du client (soyez donc prudent si vous avez des incompatibilités de nom d’hôte / certname). Cela est utile lors de la création de modules où les fichiers de chaque client sont conservés séparément, par exemple pour les clés d’hôte ssh privées. Par exemple, avec la configuration

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

la demande du fichier /private/file.txt du client client1.exemple.com recherchera un fichier /data/private/client1/file.txt , tandis que la même demande de client2.example.com tentera de récupérer le fichier / data / private / client2 / file.txt sur le serveur de fichiers.

Actuellement, les chemins ne peuvent pas contenir de barres obliques finales, ce qui entraînerait une erreur. Veillez également à ce que dans puppet.conf vous ne spécifiez pas les emplacements de répertoire puppet.conf des barres obliques.

Sécurité

Sécuriser le serveur de fichiers Puppet consiste à autoriser et à refuser l’access (à différents niveaux de spécificité) par sharepoint assembly. Les groupes de nœuds peuvent être identifiés pour autorisation ou refus de trois manières: par adresse IP, par nom ou par un seul caractère générique global (*). Les points de assembly personnalisés refusent tous les access par défaut.

Outre les points de assembly personnalisés, il existe deux points de assembly spéciaux qui peuvent être gérés avec fileserver.conf : modules et plugins . Aucun de ces points de assembly ne doit avoir une option de chemin spécifiée. Le comportement du sharepoint assembly des modules est décrit ci-dessus sous Servir des fichiers à partir de points de assembly personnalisés. Le assembly des plugins n’est pas un vrai sharepoint assembly, mais un crochet permettant à fileserver.conf de spécifier les nœuds autorisés à synchroniser les plugins à partir du Puppet Master. Ces deux points de assembly existent par défaut et autorisent tous les access. Si des directives d’autorisation ou de refus sont définies pour l’un de ces assemblys spéciaux, ses parameters de sécurité se comporteront comme ceux d’un assembly normal (c’est-à-dire qu’il refusera tous les access par défaut). Notez que ce sont les seuls points de assembly pour lesquels refuser * n’est pas redondant.

Si les noeuds ne se connectent pas directement au serveur de fichiers Puppet, par exemple à l’aide d’un proxy inverse et de Mongrel (voir Utilisation de Mongrel), le serveur de fichiers verra que toutes les connexions proviennent de l’adresse IP du serveur proxy plutôt que de celle du noeud Puppet Agent. . Dans ce cas, il est préférable de restreindre l’access en fonction du nom d’hôte. De plus, la ou les machines faisant office de proxy inverse (généralement 127.0.0.0/8) devront être autorisées à accéder aux points de assembly appropriés.

Priorité

Les déclarations négatives et autorisées plus spécifiques ont priorité sur les déclarations moins spécifiques; c’est-à-dire qu’une instruction allow pour node.domain.com le laisserait se connecter malgré une instruction deny pour * .domain.com. À un niveau de spécificité donné, les instructions de refus ont priorité sur les instructions d’autorisation.

Un comportement imprévisible peut résulter du mélange de directives d’adresse IP avec des directives de nom d’hôte et de nom de domaine. Essayez donc d’éviter de le faire. (Actuellement, si l’adresse IP de node.domain.com est 192.168.1.80 et que fileserver.conf contient allow 192.168.1.80 et refuse node.domain.com, la directive allow basée sur IP est en réalité prioritaire. Ce comportement peut être modifié dans le avenir et ne doit pas être invoqué.)

Noms d’hôtes

Les noms d’hôte peuvent être spécifiés en utilisant un nom d’hôte complet ou en spécifiant un domaine entier à l’aide du caractère générique *:

 [export] path /export allow host.domain1.com allow *.domain2.com deny badhost.domain2.com 

Adresses IP

L’adresse IP peut être spécifiée de la même manière que les noms d’hôte, en utilisant des adresses IP complètes ou des adresses avec des caractères génériques. Vous pouvez également utiliser la notation de style CIDR:

 [export] path /export allow 127.0.0.1 allow 192.168.0.* allow 192.168.1.0/24 

Permis global

Spécifier un seul caractère générique laissera n’importe quel nœud accéder à un sharepoint assembly:

 [export] path /export allow * 

Notez que le comportement par défaut des points de assembly personnalisés équivaut à refuser *.