Thanks for sharing the implementation details Akila! I did some refinements to the README.md files.
I tried out WSO2AS module and it is working as expected. Great work! It seems like we still need to copy the product distribution to the <product-puppet-module>/files folder. Copying it to <puppet-home>/files/packs did not work. @DevOps Team: It would be great if you guys can review the improvements we have done. Thanks On Tue, Sep 6, 2016 at 5:21 PM, Akila Ravihansa Perera <raviha...@wso2.com> wrote: > Hi, > > We have already created separate GitHub repos for Puppet modules so that > the Puppet module can be shipped as part of a product release. All common > resources and classes are still in wso2base Puppet module. We have > refactored the module structure which I'll highlight below; > > Please refer to wso2base module [1] and wso2as module [2] which we have > implemented as a reference. We will discuss any improvements needed and > replicate the same structure for other modules. > > - No more Hiera lookups in init.pp > All Hiera lookups have been moved to params classes in wso2base and > product module. All common parameters across products are defined in > wso2base/params.pp and product specific ones are defined in corresponding > product Puppet module > > - Do Hiera lookups only when enabled via a facter > wso2base/params.pp lookup a facter named "use_hieradata" and decide > whether to take default values defined directly in params.pp or to perform > Hiera lookups. It would have been ideal if Hiera lookups are all done in a > separate layer (for eg: using roles and profiles pattern), but one problem > is users will have to write their own profiles module to use Hiera. > Maintaining profiles in our side would be an overhead. This is still open > to suggestions. > > - Class parameters to override defaults in params.pp > Earlier Puppet modules were tightly coupled with Hiera so that users > were unable to simply include the module from site.pp and run it. Now all > the variables are defined as class parameters which takes common values > from wso2base/params.pp [4]. Default values for any product specific > parameters are kept in <product-module>/params.pp. For eg: [5] > > Any user can now simply do the following in site.pp > > class java -> class wso2as > > Above manifest will configure wso2as using default configuration (vanilla > pack). Default values can be overridden by passing values. For eg: to set a > port offset of 10 > > $ports = { > offset => 10 > } > class java -> > class { 'wso2as': > ports => $ports > } > > - Class dependencies and containment > All base classes are contained in product module main class to enforce > the class dependency order [6]. > > - Data type validation > To enforce that parameters passed are in expected format and to help > with troubleshooting we have added validations in wso2base module which > checks whether data types passed for each parameter is correct [7]. > > - Vagrant setup > We have moved out the Vagrantfile, site.pp and hiera.yaml files to a > separate repo named "puppet-commons" [3]. This repo will contain any Puppet > related artifact which does not belong to a Puppet module. It has a > setup.sh shell script to create the PUPPET_HOME directly by cloning Puppet > module GitHub repos and merging Hieradata. Details about this setup.sh > script will be discussed in a separate thread. > > Any developer who wants to try out a Puppet module can do so by performing > following steps; > 1. Git clone puppet-commons > 2. Run setup.sh > 3. Provide PUPPET_HOME when prompted by setup.sh > 4. Provide JDK file location product pack location when prompted > 5. Goto puppet-commons/vagrant > 6. Run vagrant up > > Note that we have not fully implemented the end-to-end flow yet. > > [1] https://github.com/wso2/puppet-base > [2] https://github.com/wso2/puppet-as > [3] https://github.com/wso2/puppet-commons > [4] https://github.com/wso2/puppet-base/blob/master/manifests/params.pp > [5] https://github.com/wso2/puppet-as/blob/master/manifests/params.pp#L29 > [6] https://github.com/wso2/puppet-as/blob/master/manifests/init.pp#L115 > [7] https://github.com/wso2/puppet-base/blob/master/ > manifests/init.pp#L55-L86 > > Thanks. > > -- > Akila Ravihansa Perera > WSO2 Inc.; http://wso2.com/ > > Blog: http://ravihansa3000.blogspot.com > -- *Imesh Gunaratne* Software Architect WSO2 Inc: http://wso2.com T: +94 11 214 5345 M: +94 77 374 2057 W: https://medium.com/@imesh TW: @imesh lean. enterprise. middleware
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev