<div dir="ltr"><div><div>Hi,<br><div class="" id="magicdomid2"><h3><span class="">General info</span></h3></div><div class="" id="magicdomid670"></div><div class="" id="magicdomid820"><span class="">Detailed
 documentation is available in the latest spec [1] (see [2] for HTML 
format). You can also check blue-print [3]  and etherpad how-to [4] for 
more info.</span></div><div class="" id="magicdomid673"><br></div><div class="" id="magicdomid8"><h3><span class="">Fuel-library granularization status</span></h3></div><div class="" id="magicdomid9"></div><div class="" id="magicdomid828"><span class="">As
 you may know, we're using granular task based deployment in master 
branch already. Currently we have a set of separate manifests that are 
applied by puppet as separate tasks, they are stored here [</span><span class="">5</span><span class="">].</span></div><div class="" id="magicdomid11"><br></div><div class="" id="magicdomid56"><span class="">According
 to our implementation plan (step #2, see spec for details) we moved 
node roles (controller, compute, cinder, ceph-osd, mongo, zabbix-server)
 into separate tasks. So every role is deployed by its own separate 
puppet manifest applied as Fuel task.</span></div><div class="" id="magicdomid13"><br></div><div class="" id="magicdomid14"><span class="">We're also going to remove the following files shortly as we no longer use/need them:</span></div><div class="" id="magicdomid15"><br></div><div class="" id="magicdomid16"><span class="">deployment/puppet/osnailyfacter/examples/site.pp</span></div><div class="" id="magicdomid17"><span class="">deployment/puppet/osnailyfacter/manifests/cluster_ha.pp</span></div><div class="" id="magicdomid18"><span class="">deployment/puppet/osnailyfacter/manifests/cluster_simple.pp</span></div><div class="" id="magicdomid19"><span class="">deployment/puppet/osnailyfacter/modular/legacy.pp</span></div><div class="" id="magicdomid20"><br></div><div class="" id="magicdomid21"><span class="">So here are few examples, just to illustrate current deployment process:</span></div><div class="" id="magicdomid22"><br></div><div class="" id="magicdomid23"><span class="">1) Controller (primary and non-primary) role:</span></div><div class="" id="magicdomid24"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/hiera.pp</span></div><div class="" id="magicdomid25"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/globals.pp</span></div><div class="" id="magicdomid26"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/logging.pp</span></div><div class="" id="magicdomid27"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/netconfig.pp</span></div><div class="" id="magicdomid28"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/firewall.pp</span></div><div class="" id="magicdomid29"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/hosts.pp</span></div><div class="" id="magicdomid30"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/tools.pp</span></div><div class="" id="magicdomid31"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/controller.pp</span></div><div class="" id="magicdomid32"><br></div><div class="" id="magicdomid33"><span class="">2) Compute role:</span></div><div class="" id="magicdomid34"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/hiera.pp</span></div><div class="" id="magicdomid35"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/globals.pp</span></div><div class="" id="magicdomid36"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/logging.pp</span></div><div class="" id="magicdomid37"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/netconfig.pp</span></div><div class="" id="magicdomid38"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/firewall.pp</span></div><div class="" id="magicdomid39"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/hosts.pp</span></div><div class="" id="magicdomid40"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/tools.pp</span></div><div class="" id="magicdomid41"><span class="">puppet apply /etc/puppet/modules/osnailyfacter/modular/compute.pp</span></div><div class="" id="magicdomid42"><br></div><div class="" id="magicdomid43"><h3><span class="">Hiera</span></h3></div><div class="" id="magicdomid44"></div><div class="" id="magicdomid122"><span class="">Also
 we're switching from parseyaml() function and global $::fuel_settings 
hash to Hiera. All the configuration data should be pulled into 
manifests via hiera() only. </span><span class=""> Hiera is configured by the first two tasks:</span></div><div class="" id="magicdomid135"><br></div><div class="" id="magicdomid264"><span class="">/etc/puppet/modules/osnailyfacter/modular/hiera.pp - configures Hiera</span></div><div class="" id="magicdomid277"><span class="">/etc/puppet/modules/osnailyfacter/modular/globals.pp
 - creates /etc/hiera/globals.yaml file with node-specific calculated 
data that should help to avoid code duplication in manifests</span></div><div class="" id="magicdomid61"><br></div><div class="" id="magicdomid520"><span class="">For example: globals.yaml contains </span><span class=""><b>internal_address</b></span><span class=""> for the node and you can pull it via hiera:</span></div><div class="" id="magicdomid390"><br></div><div class="" id="magicdomid389"><span class="">root@node-1:~# hiera internal_address</span></div><div class="" id="magicdomid384"><span class="">192.168.0.3</span></div><div class="" id="magicdomid391"><br></div><div class="" id="magicdomid510"><span class="">Without globals.yaml you would have to search for internal_address in nodes hash in astute.yaml. </span><span class="">You can see current modular manifests for </span><span class="">more </span><span class="">examples.</span></div><div class="" id="magicdomid46"><br></div><div class="" id="magicdomid47"><h3><span class="">CI updates</span></h3></div><div class="" id="magicdomid48"></div><div class="" id="magicdomid826"><span class="">We
 also have some changes in fuel-library CI related to granular 
deployment. Since our deployment process depends on tasks, which are 
shipped with fuel-library repo, we've added new CI test job [</span><span class="">6</span><span class="">] that runs basic schema validation and makes sure we have acyclic tasks graph.</span></div><div class="" id="magicdomid774"><br></div><div class="" id="magicdomid788"><br></div><div class="" id="magicdomid796"><span class="">[1] </span><span class=""><a href="https://review.openstack.org/147591">https://review.openstack.org/147591</a></span></div><div class="" id="magicdomid794"><span class="">[2] </span><span class=""><a href="http://docs-draft.openstack.org/91/147591/13/check/gate-fuel-specs-docs/e58793b//doc/build/html/specs/6.1/fuel-library-modularization.html">http://docs-draft.openstack.org/91/147591/13/check/gate-fuel-specs-docs/e58793b//doc/build/html/specs/6.1/fuel-library-modularization.html</a></span></div><div class="" id="magicdomid785"><span class="">[3] </span><span class=""><a href="https://blueprints.launchpad.net/fuel/+spec/fuel-library-modularization">https://blueprints.launchpad.net/fuel/+spec/fuel-library-modularization</a></span></div><div class="" id="magicdomid787"><span class="">[4] </span><span class=""><a href="https://etherpad.openstack.org/p/fuel-library-modularization">https://etherpad.openstack.org/p/fuel-library-modularization</a></span></div><div class="" id="magicdomid822"><span class="">[</span><span class="">5</span><span class="">] </span><span class=""><a href="https://github.com/stackforge/fuel-library/tree/master/deployment/puppet/osnailyfacter/modular">https://github.com/stackforge/fuel-library/tree/master/deployment/puppet/osnailyfacter/modular</a></span></div><div class="" id="magicdomid824"><span class="">[</span><span class="">6</span><span class="">] </span><span class=""><a href="https://fuel-jenkins.mirantis.com/job/fuellib_tasks_graph_check">https://fuel-jenkins.mirantis.com/job/fuellib_tasks_graph_check</a></span></div><div class="" id="magicdomid773"><br></div>--<br></div>Regards,<br></div>Aleksandr Didenko<br></div>