J'ai créé des fichiers yaml pour chaque type d'environnement dev, qa, intégration. Cependant, il existe plusieurs environnements de développement et je souhaite remplacer certaines modifications via des fichiers yaml spécifiques à l'hôte.Utilisation de hiera_hash pour les changements d'augeas dans la marionnette hiera
Hiera
|--host
| |-dev1.internet.com
| |-dev2.intranet.com
|--servertype
| |-dev
| |-qa
dev.yaml
augeas_xml:
- 'set /root/node/servername/#text 'dev'
- 'set /root/node/serverlocation/#text 'London'
- 'set /root/node/ntp/#text '123.123.123.123'
dev1.internet.com.yaml
augeas_xml:
- 'set /root/node/serverlocation/#text 'New York'
- 'set /root/node/ntp/#text '123.123.123.125'
dev2.intranet.com.yaml
augeas_xml:
- 'set /root/node/serverlocation/#text 'Accrington'
je besoin d'un moyen d'obtenir la configuration de dev1.internet.com.yaml avoir les éléments suivants
augeas_xml:
- 'set /root/node/servername/#text 'dev'
- 'set /root/node/serverlocation/#text 'New York'
- 'set /root/node/ntp/#text '123.123.123.125'
hiera_array ne me donne pas le résultat souhaité et hiera_hash me donne l'erreur suivante : Incompatibilité de type Hiera pour la clé 'augeas_xml': attendue Hash and got Array
Les paramètres spécifiques à l'hôte n'ont pas priorité sur les paramètres spécifiques à l'environnement. L'exemple que j'ai donné est pour un petit ensemble de serveurs. J'utilise des marionnettes pour gérer des centaines de serveurs. Je pourrais utiliser hiera et créer un fichier yaml pour chaque hôte. Cependant, je veux avoir un default.yaml et être en mesure de passer outre les changements dans la host.yaml
---
:hierarchy:
- "host/%{::fqdn}"
- "server_type/%{server_type}"
- default
:backends:
- yaml
:yaml:
:datadir: "/puppet/hieradata/%{::environment}"
:merge_behavior: deeper
Ce dernier produit des
dev1.internet.com.yaml
augeas_xml:
- 'set /root/node/serverlocation/#text 'New York'
- 'set /root/node/ntp/#text '123.123.123.125'
- 'set /root/node/servername/#text 'dev'
- 'set /root/node/serverlocation/#text 'London'
- 'set /root/node/ntp/#text '123.123.123.123'
mais je veux faire
dev1.internet.com.yaml
augeas_xml:
- 'set /root/node/servername/#text 'dev'
- 'set /root/node/serverlocation/#text 'London'
- 'set /root/node/ntp/#text '123.123.123.123'
- 'set /root/node/serverlocation/#text 'New York'
- 'set /root/node/ntp/#text '123.123.123.125'
'hiera_hash' ne sert à rien ici, que vous créez en effet des tableaux. Qu'en est-il du résultat de 'hiera_array' n'est pas désiré? S'il vous plaît montrer la sortie qu'il génère, et pourquoi c'est un problème. –
Les paramètres spécifiques à l'hôte n'ont pas priorité sur les paramètres spécifiques à l'environnement. L'exemple que j'ai donné est pour un petit ensemble de serveurs. J'utilise des marionnettes pour gérer des centaines de serveurs. Je pourrais utiliser hiera et créer un fichier yaml pour chaque hôte. Cependant, je veux avoir un default.yaml et être en mesure de remplacer les changements dans le host.yaml – Vash
S'il vous plaît ajouter votre hiera.yaml à la question et plus exactement montrer les emplacements des fichiers que vous décrivez - est-ce un répertoire structure ou une structure logique en haut? –