Configuration spécifique à l'environnement dans la marionnette

J'ai un module de marionnette personnalisé pour configurer le server web Apache et j'utilise des templates pour copyr les configurations. Nous avons des environnements différents tels que la production, l'assurance de la qualité, les tests d'intégration.

Chaque environnement possède un ou plusieurs servers. Le model utilise des variables basées sur ces environnements, ce qui garantit l'utilisation du même file model dans tous les environnements au lieu d'utiliser différents files spécifiques à l'environnement

Jusqu'à présent, je suis arrivé à savoir que nous pouvons utiliser les files de type {environment} .yaml dans Heira, ce que je préfère, car je ne veux pas conserver deux jeux de files pour les environnements comme production.yaml et qa.yaml

Quelle est la meilleure pratique pour réaliser ce scénario?

  1. Mon sharepoint vue est que nous assignons des environnements d'hôte dans /etc/puppet/manifest/site.pp
  2. Où devons-nous maintenir des variables spécifiques à l'environnement (comme domain = mysite.qa.example.com). Est-ce emballé dans les faits à l'intérieur du module en fonction de l'environnement à partir de site.pp pour le nœud ou est-il maintenu comme configuration spécifique au noeud dans /etc/facter/facts.d/ sur chaque noeud?

Existe-t-il un exemple de travail pour ce qui précède.

La manière correcte de gérer datatables spécifiques à l'environnement consiste à utiliser Hiera – Hiera a pour but de séparer datatables de configuration (p. Ex. Les domaines, les adresses IP) et le code logique Puppet. Si vous avez des environnements similaires, la duplication de la configuration est attendue.

Vous pouvez utiliser un fait statique pour déterminer l'environnement et utiliser %{::environment} (pour Puppet3) ou %{facts.environment} (pour Puppet4) pour accéder à cela dans votre structure Hiera.

Vos modules devraient utiliser la paramétrage pour permettre à Hiera de transmettre des valeurs dans les classs.

Pour stocker un fait statique, créez un file dans /etc/facter/facts.d (créez le directory si nécessaire) avec l' environment=production contenu environment=production , par exemple:

 odin ~ # echo 'environment=production' >> /etc/facter/facts.d/env.txt odin ~ # facter -p environment production