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:
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é:
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 *.