Puppet File Source peut-il provenir d'un service Web?


10

Existe-t-il un moyen (simple) pour que la marionnette utilise un fichier disponible sur Internet pour la propriété Source d'un fichier?

par exemple:

file { "/home/text.txt":
  source => [
    "http://www.example.com/text.txt",
  ]
}

Si vous appréciez l'intégrité de vos serveurs, utilisez au moins https. Et utilisez un domaine plus fiable car vous ne savez pas qui pourrait contrôler celui-là ... euh ... ça devient plus trouble d'ici.
mc0e

Réponses:


4

J'écris une réponse mise à jour pour informer les futurs lecteurs que la ressource File implémente désormais la source HTTP.

De la documentation :

la source

Un fichier source, qui sera copié en place sur le système local. Cet attribut est mutuellement exclusif avec le contenu et la cible. Les valeurs autorisées sont:

  • puppet: URI, qui pointent vers des fichiers dans des modules ou des points de montage de serveur de fichiers Puppet.
  • Chemins d'accès complet aux fichiers disponibles localement (y compris les fichiers sur les partages NFS ou les lecteurs mappés Windows).
  • file: URI, qui se comportent de la même manière que les chemins de fichiers locaux.
  • http: URI, qui pointent vers des fichiers servis par des serveurs Web communs

Vous pouvez donc utiliser la construction telle que vous l'avez écrite:

file { "/home/text.txt":
  source => "http://www.example.com/text.txt",
}

2
à partir de la version 4.4.0 de Puppet (via ticket tickets.puppetlabs.com/browse/PUP-1072 )
KJH

4

Cela a été demandé en tant que fonctionnalité pendant des années ... Mais vous finirez par avoir besoin d'une fonction personnalisée pour cela ... ou pour utiliser curlou wget. Voir Puppet Forge .

Que contient text.txt?


txt.txt n'est qu'un exemple. En fait, je veux l'utiliser pour extraire les clients Freeradius d'un système d'administration.
gunwin

4

Ce n'est pas possible dès la sortie de la boîte:

la source:

...

Les schémas d'URI disponibles sont les marionnettes et les fichiers. Les URI de Puppet récupèrent les fichiers du serveur de fichiers intégré de Puppet

J'ai fini par utiliser definej'ai trouvé sur internet:

define remote_file($remote_location=undef, $mode='0644'){
  exec{ "retrieve_${title}":
    command => "/usr/bin/wget -q ${remote_location} -O ${title}",
    creates => $title,
  }

  file{$title:
    mode    => $mode,
    require => Exec["retrieve_${title}"],
  }
}

remote_file{'/home/text.txt':
  remote_location => 'http://www.example.com/text.txt'
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.