Comment copier un fichier sur tous les clients à l'aide d'une marionnette?

8

Comment copier des fichiers sur tous les clients à l'aide d'une marionnette? 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 suis juste un débutant et je veux juste savoir comment copier des fichiers sur tous les clients du serveur de marionnettes? Je veux aussi savoir comment supprimer des fichiers?

karthick87
la source
1
De Jorge dans le chat: docs.puppetlabs.com/guides/file_serving.html Copié le lien comme réponse.
Rinzwind

Réponses:

8

Le serveur de fichiers Puppet

Ce guide couvre l'utilisation de la capacité de service de fichiers de Puppet.


Le service de marionnettes maître 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 attribut source, les nœuds récupèrent ce fichier à partir 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 => "puppet: /// modules / module_name / 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'est-à-dire puppet:///{mount point}/{path}, notez la triple barre oblique), l'URI sera résolu sur 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ôtes doivent être omis autant que possible.

Le reste de la marionnette: l'URI est mappé au système de fichiers du serveur de deux manières, selon que les fichiers sont fournis par a moduleou exposés via a custom mount point.

Fichiers de modules de service

Étant donné que la grande majorité du service de fichiers doit être effectuée via des modules, le serveur de fichiers Puppet fournit un point de montage spécial et semi-magique appelé modules, qui est disponible par défaut. Si le point de montage d'un URI est un module, Puppet:

  • Interpréter le segment suivant du chemin comme le nom d'un module…
  • ... localisez ce module dans le chemin du module du serveur (comme décrit ici sous "Recherche de module" ...
  • ... et résolvez le reste du chemin à partir du dossier / répertoire de ce module.
  • C'est-à-dire que si un module nommé test_module est installé dans le /etc/puppet/modulesrépertoire du serveur central , la marionnette suivante: URI ...

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

    ... résoudra le chemin absolu suivant:

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

    S'il test_moduleétait installé dans /usr/share/puppet/modules, le même URI se résoudrait à la place:

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

Bien qu'aucune configuration supplémentaire ne soit requise pour utiliser le point de montage des modules, certains contrôles d'accès peuvent être spécifiés dans la configuration du serveur de fichiers en ajoutant un [modules]bloc de configuration; voir Sécurité.

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

Puppet peut également servir des fichiers à partir de points de montage arbitraires spécifiés dans la configuration du serveur de fichiers du serveur (voir ci-dessous). Lorsque vous servez des fichiers à partir d'un point de montage personnalisé, Puppet n'effectue pas l'abstraction d'URI supplémentaire utilisée dans le montage des modules et résoudra le chemin d'accès suivant le nom du montage 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 --fsconfigdrapeau au maître des marionnettes.

Le format du fileserver.conffichier est presque exactement comme celui de rsync, et ressemble à peu près à 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 point de montage donné:

  • Chemin d'accès à l'emplacement du montage sur le disque
  • N'importe quel nombre de directives d'autorisation
  • N'importe quel nombre de directives de refus

chemin est la seule option requise, mais comme la configuration de sécurité par défaut consiste à refuser tout accès, un point de montage sans directive d'autorisation ne serait disponible pour aucun nœud.

Le chemin peut contenir tout ou partie de %h, %Het %d, qui sont remplacés dynamiquement par le nom d'hôte du client, son nom de domaine complet et son nom de domaine, respectivement. Tous sont extraits du certificat SSL du client (soyez donc prudent si vous avez des incompatibilités de nom d'hôte / nom de certificat). Ceci est utile pour créer des modules où les fichiers de chaque client sont conservés complètement 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 de fichier /private/file.txtdu client client1.example.com recherchera un fichier /data/private/client1/file.txt, tandis que la même demande de client2.example.comtentera 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 de fin ou une erreur en résultera. Veillez également à ce que puppet.confvous ne spécifiez pas d’emplacement de répertoire comportant des barres obliques de fin.

Sécurité

La sécurisation du serveur de fichiers Puppet consiste à autoriser et refuser l'accès (à différents niveaux de spécificité) par point de montage. Les groupes de nœuds peuvent être identifiés pour une autorisation ou un refus de trois manières: par adresse IP, par nom ou par un seul caractère générique global (*). Les points de montage personnalisés par défaut refusent tout accès.

En plus des points de montage personnalisés, il existe deux points de montage spéciaux qui peuvent être gérés avec fileserver.conf: moduleset plugins. Aucun de ces points de montage ne doit avoir une option de chemin d'accès spécifiée. Le comportement du point de montage des modules est décrit ci-dessus sous Traitement des fichiers à partir des points de montage personnalisés. Le montage des plugins n'est pas un vrai point de montage, mais plutôt un crochet pour permettre à fileserver.conf de spécifier quels nœuds sont autorisés à synchroniser les plugins depuis Puppet Master. Ces deux points de montage existent par défaut, et les deux par défaut permettent tous les accès; si des directives d'autorisation ou de refus sont définies pour l'un de ces montages spéciaux, ses paramètres de sécurité se comporteront comme ceux d'un montage normal (c'est-à-dire qu'il refusera par défaut tout accès). Notez que ce sont les seuls points de montage pour lesquels refuser * n'est pas redondant.

Si les nœuds ne se connectent pas directement au serveur de fichiers Puppet, par exemple en utilisant un proxy inverse et Mongrel (voir Utilisation de Mongrel), alors le serveur de fichiers verra toutes les connexions comme provenant de l'adresse IP du serveur proxy plutôt que de celle du nœud Agent Puppet . Dans ce cas, il est préférable de restreindre l'accès en fonction du nom d'hôte. De plus, la ou les machines agissant comme proxy inverse (généralement 127.0.0.0/8) devront être autorisées à accéder aux points de montage applicables.

Priorité

Des instructions plus spécifiques de refus et d'autorisation ont priorité sur les instructions 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 deny ont priorité sur les instructions allow.

Un comportement imprévisible peut résulter du mélange des directives d'adresse IP avec les directives de nom d'hôte et de nom de domaine, essayez donc d'éviter cela. (Actuellement, si l'adresse IP de node.domain.com est 192.168.1.80 et si fileserver.conf contient allow 192.168.1.80 et refuse node.domain.com, la directive allow basée sur IP aura la priorité. Ce comportement peut être modifié dans le futur et ne doit pas être invoqué.)

Noms d'hôtes

Les noms d'hôte peuvent être spécifiés à l'aide d'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 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

Autoriser global

La spécification d'un seul caractère générique permettra à n'importe quel nœud d'accéder à un point de montage:

[export]
    path /export
    allow *

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

Rinzwind
la source
Bonjour @Rinzwind, ce sera bien si vous ajoutez la réponse exacte que je veux.
karthick87
Eh bien, le lien de Jorge / cette réponse est le début pour y arriver et il répond à la question "Comment copier des fichiers sur tous les clients utilisant des marionnettes?" y compris la sécurité que vous devez prendre en considération. Tout ce qui lui manque, c'est une méthode pour supprimer des fichiers. J'inclurai cela (le dernier morceau de cette réponse est plus sur le fait de le faire en toute sécurité, il serait peut-être préférable de le supprimer).
Rinzwind
Est-ce que je veux éditer le fichier des manifestes? Et entrez les lignes ci-dessus?
karthick87