Comment copier des fichiers sur toutes les machines à l'aide de Puppet Master?

12

J'ai installé puppetmaster dans ubuntu 11.04 et j'ai installé puppetmaster sur tous mes clients. J'ai rejoint tous mes clients marionnettes avec le maître marionnette. Est-il possible de copier un fichier sur tous ces clients de marionnettes depuis le maître de marionnettes?

Par exemple:

J'ai le fichier nommé datas.xls dans mon bureau (Puppet Master). Comment copier ces fichiers sur tous mes clients marionnettes à l'emplacement suivant (/ home / operator1 / Desktop / Backup /)?

Mise à jour:

  • Salut, le fichier n'est pas partagé.
  • Comment modifier cette ligne puppet:///modules/module_name/datas.xlsle fichier à copier est sous cet emplacement /etc/puppet/modules/mymodule/manifests/datas.xls?

Erreur sur le client: (résolu)

root@testing:~# puppetd --test 
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class sudo at /etc/puppet/manifests/site.pp:2 on node testing.chn.jd.com
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

Erreur 2 sur le client:

root@tme13:~# puppetd --test
err: Could not run Puppet configuration client: Could not retrieve local facts: bad URI(is not URI?): http://169.254.169.254/2008-02-01/meta-data/<HTML><HEAD><TITLE>HTTP access denied</TITLE></HEAD><BODY><img src/

Nouvelle mise à jour:

Comment appliquer ce module à tous les nœuds? Telle que le fichier sera copié sur tous les nœuds.

karthick87
la source
... mais n'avez-vous pas déjà posé cette question? askubuntu.com/questions/61080/…
fossfreedom
Oui mais la solution ne fonctionne plus.
karthick87
De plus, ce n'est pas très clair, l'utilisateur vient de copier le contenu de certains sites Web.
karthick87
Ce n'est toujours pas une raison pour poser une nouvelle question (?) Btw j'ai copié celle-là à partir d'un lien que Jorge m'a donné et il m'a dit de le c / p;) afaik ce qui est dans cette réponse fonctionne toujours!?
Rinzwind
voici une autre référence: serverfault.com/questions/200101/…
Rinzwind

Réponses:

24

La marionnette est un peu un monstre pour faire tourner la tête, donc apprendre par l'exemple n'est pas une mauvaise chose. Dans le ci-dessous, je suppose que vous utilisez des modules - veuillez dire dans un commentaire si vous ne l'êtes pas ou si vous avez besoin de plus de détails sur la façon d'assembler le module.

Disons que vous démarrez un nouveau module appelé mymodule. Dans le répertoire de base des marionnettes (généralement /etc/puppet) sur le maître de marionnettes, vous devez créer le répertoire des manifestes et des fichiers du module:

mkdir -p modules/mymodule/manifests
mkdir -p modules/mymodule/files

Créez ensuite un fichier dans ce répertoire nommé init.ppet entrez:

class myfile {
    file { '/home/operator1/Desktop/Backup':
        ensure => directory,
        mode => '0755',
        owner => 'operator1',
        group => 'operator1',
    }

    file { "/home/operator1/Desktop/Backup/datas.xls":
        mode => "0644",
        owner => 'operator1',
        group => 'operator1',
        source => 'puppet:///modules/module_name/datas.xls',
    }
}

Ensuite, placez le datas.xlsfichier dans le filesrépertoire du module - dans cet exemple dans modules/mymodule/files/. (Notez qu'il peut également y avoir un templatesrépertoire pour les modèles ).

Dans le manifests/site.ppfichier, vous devez importer le module et inclure la classe en faisant quelque chose comme:

import 'mymodule'

node base {
    include myfile
}

node server1 inherits base {}
node server2 inherits base {
    # extra config here
}

Assurez-vous que tous vos nœuds héritent de la base et que cela devrait être tout ce que vous devez faire. Depuis la marionnette 0.25, vous pouvez utiliser des expressions régulières dans le nom du nœud, par exemple:

node server[0-9] inherits base {}

Faites-moi savoir dans les commentaires si vous avez besoin de précisions supplémentaires.

Configuration d'un client pour parler au maître des marionnettes

Sur le client, vous devez faire:

sudo apt-get install puppet

Ensuite, modifiez /etc/default/puppetet changez START=noen START=yes.

Modifiez /etc/puppet/puppet.confet ajoutez également une ligne à la [main]section pour lui indiquer où trouver le maître des marionnettes:

server=puppet.mydomain.com

Ensuite, nous pouvons faire un test avec sudo puppetd --test. Si vous obtenez des erreurs de clé, vous devrez peut-être accéder au serveur maître de marionnettes et signer la clé client. Pour vérifier le nom exact que vous pouvez faire sudo puppetca --listpuis sudo puppetca --sign server1.mydomain.com(ou quel que soit le nom du serveur à partir de la commande list).

Maintenant, lancez le service de marionnettes avec sudo service puppet startet vous devriez être absent. Le service de marionnettes fonctionnera toutes les heures, donc si vous mettez à jour vos recettes de marionnettes, tous vos clients seront également mis à jour.

Suppression de fichiers

Je note dans la question d'origine que vous vouliez savoir comment supprimer des fichiers. Vous modifieriez le manifests/init.pppour être

file { "/home/operator1/Desktop/Backup/datas.xls":
    ensure => absent,
}

Autres conseils utiles

Si vous rencontrez des problèmes, vous pouvez faire certaines choses. Sur toute machine avec une marionnette installée, vous pouvez vérifier votre syntaxe en exécutant

puppet --parseonly --ignoreimport myfile.pp

ou vérifiez le tout en retirant le --ignoreimportdrapeau, bien que cela puisse conduire à des messages d'erreur amusants qui ne sont pas vraiment des erreurs que j'ai trouvées. Vous pouvez également exécuter puppet live sur une machine cliente de marionnettes en faisant:

sudo puppetd --test

qui montre diverses sorties utiles, avec des erreurs et des avertissements mis en évidence dans différentes couleurs. Si vous voulez encore plus de détails, vous pouvez exécuter:

sudo puppetd --test --debug

mais cela génère généralement tellement de sortie qu'il est difficile de passer à travers, alors ne faites cela que si vous avez déjà essayé les étapes précédentes et êtes coincé et avez besoin de voir tout ce qui se fait.

Notez que cela est basé sur la marionnette 0.25.x qui est ce que j'utilise actuellement, et c'est également la version d'Ubuntu 10.04. Le code de la marionnette dans la section principale fonctionnera certainement, mais les versions ultérieures de la marionnette ont de nouveaux indicateurs qui peuvent aider au débogage de la sortie.

Hamish Downer
la source
Permettez-moi d'essayer cette solution ce soir et de vous informer des mises à jour. Merci beaucoup :)
karthick87
Comment modifier cette ligne, puppet:///modules/module_name/datas.xlsle fichier à copier se trouve sous cet emplacement/etc/puppet/modules/mymodule/manifests/datas.xls
karthick87
Le fichier à copier doit être mis /etc/puppet/modules/mymodule/files/datas.xls- je mettrai à jour la réponse pour être plus clair à ce sujet.
Hamish Downer
Oke merci ,. comment exécuter les manifestes?
karthick87
Comment appliquer ce module à tous les nœuds de puppetmaster? Au lieu de l'appliquer avec force à chaque nœud en exécutantpuppet agent --test
karthick87