<div dir="ltr"><div><div><div><div>Hi,<br><br></div>there is a blueprint about Hiera implementation in Fuel [1] and some additional info plus notes [2]. So as the first step I suggest to simply configure Hiera on Fuel master node and OS nodes before the first puppet run and merge this into master branch. This will allow manifests developers to start using Hiera in their modules/classes.<br></div><br>But we need to come up with solutions for some key moments before we can proceed:<br><br></div>1) Where to ship main hiera.yaml config file?<br></div><div>2) What Hiera <code><span class="">:hierarchy: </span></code>should we use?<br></div>3) Where to ship hieradata yamls for fuel-library modules/classes?<br><div><div><div><div><div>4) Anything else I forgot to mention?<br></div><div><br></div><div>We should also take into account MOS versioning scheme we currently use for puppet manifests and modules.<br></div><div><br></div><div>My suggestions:<br><br></div><div>1) We should ship hiera.yaml with our "osnailyfacter" module under "fuel-library" project, like we do with main "site.pp". So we can put config in "deployment/puppet/osnailyfacter/examples/hiera.yaml" file and symlink /etc/puppet/hiera.yaml to it [3]. This solution will support MOS versioning, because our modules are (will be) stored in version based directories.<br><br></div><div>2) We could use something like [4]:<br><ul><li> /etc/astute.yaml - is used as default if nothing was found</li><li> /etc/puppet/hieradata/default/ - is shipped with fuel-library</li><li> /etc/puppet/hieradata/override/ - allows ops team to override needed settings on per fact, class or module basis<br></li></ul></div><div>In this case we'll also have to add /etc/puppet/hieradata/ into our puppet manifests/modules versioning scheme. Maybe an easier solution would be putting "hieradata" under some directory which is already versioned, for example under /etc/fuel/6.0 ? But in this case we need to either introduce new fact like $fuel_version and use it in Hiera <code><span class="">:hierarchy: </span></code>or setup a symlink like /etc/fuel/current -> /etc/fuel/6.0<br><br></div><div>3) Add new directory in fuel-library (for example "hieradata") that will be extracted into "/etc/puppet/hieradata/default". This will allow puppet manifest developers to add needed hiera settings along with their modules:<br><br><ul><li>fuel-library/deployment/puppet/<b>my_new_module/</b> - puppet module<br></li><li>fuel-library/deployment/hieradata/module/<b>my_new_module.yaml</b> - hiera data for the module</li></ul></div><div>Your input/comments are welcome and appreciated :)<br></div><div><br>[1] <a href="https://blueprints.launchpad.net/fuel/+spec/replace-parseyaml-with-hiera">https://blueprints.launchpad.net/fuel/+spec/replace-parseyaml-with-hiera</a><br>[2] <a href="https://etherpad.openstack.org/p/fuel_hiera">https://etherpad.openstack.org/p/fuel_hiera</a><br>[3] <a href="https://review.openstack.org/#/c/126559/">https://review.openstack.org/#/c/126559/</a><br>[4] <a href="http://pastebin.com/HH0bUtYc">http://pastebin.com/HH0bUtYc</a><br><br></div><div>Regards,<br>Aleksandr Didenko<br></div></div></div></div></div></div>