Contexte
J'utilise puppet5
& hiera5
sur un maître puppet
de prises en pension git
séparés.
Le code est déployé à l'aide de r10k
dans leurs emplacements respectifs à l'aide du mappage de répertoire de branche à environnement. En raison de la limitation des conflits d'environnement dans r10k
(mes excuses si ce n'est plus le cas) j'utiliser un autre endroit pour mon hieradata
:Modifier le hiera 5 environnement couche hiera.yaml emplacement
Puppet code - /etc/puppetlabs/code/envirnments/
Hiera code - /etc/puppetlabs/code/hieradata/
Je dispose d'un fichier hiera.yaml
global dans /etc/puppetlabs/puppet/hiera.yaml
et un fichier hiera.yaml
spécifique à l'environnement dans mon emplacement de succursale/environnement hiera
.
par exemple. /etc/puppetlabs/code/hieradata/production/hiera.yaml
Problème
Mon environnement hiera.yaml
est ignoré en raison de son emplacement, il devrait être là où ma marionnette Code <ENVIRONMENT>
est:
/etc/puppetlabs/code/environments/production/hiera.yaml
pris de https://docs.puppet.com/puppet/5.0/hiera_config_yaml_5.html#location
mais c'est:
/etc/puppetlabs/code/hieradata/production/hiera.yaml
Solution
La seule solution que j'ai pu trouver est de trouver un hiera.yaml
dans mon code marionnette repo avec un datadir mis à
datadir: ../../hieradata/%{::environment}/hieradata
(il doit être relatif)
Ce qui fonctionne bien mais n'est pas idéal donc je cherche d'autres solutions.
Même si je mets le hiera.yaml datadir
global à:
/etc/puppetlabs/code/hieradata/%{::environment}/
(il peut être un chemin complet)
et n'ont pas un fichier hiera.yaml
dans mon repo de marionnettes, hiera
œuvres, mais le hiera.yaml
environnement situé là est ignoré.
Une autre idée était d'échanger les emplacements, mais mon code marionnette ne fonctionne pas. Donc, idéalement, ce que je dois faire est de définir l'emplacement de la couche d'environnement hier.yaml
car il semble être codé en dur à <ENVIRONMENT>
, où se trouve mon code de marionnette.
Je veux toujours utiliser r10k
et je veux héberger mon environnement hiera.yaml
dans mon repo hiera.
La solution la plus simple serait un lien symbolique entre la configuration hiera déployée par r10k et l'emplacement auquel Puppet s'attend. Est-ce que ça sonne bien? –
Alors que cela fonctionnerait, il deviendrait assez compliqué à cause des environnements liés aux branches git, donc si j'allais écrire quelque chose pour ça alors je suppose que je n'utiliserais tout simplement pas r10k et script. – geedoubleya
Ok, alors pourquoi ne pas déployer votre config hiera avec votre repo de contrôle et votre hieradata en tant que module, tous les deux avec r10k? Vous semblez déjà être à mi-chemin, et c'est un cas d'utilisation normal ces jours-ci. –