2017-08-02 1 views
0

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.

+0

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? –

+0

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

+0

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. –

Répondre

0

mon code de travail:

datadir: "/etc/puppetlabs/code/environments/%{environment}/hiera" 

mais chemin doit être correct.

+1

Oui c'est l'endroit par défaut pour cela, est-ce que votre code hiera est dans un repo différent de votre code de marionnette et utilisez-vous r10k? – geedoubleya

+0

Oui, j'utilise r10k mais utilise seul repo avec branche différente – beliy

+1

Malheureusement, le problème que je vois est parce qu'ils sont dans deux repos différents. – geedoubleya