On Mon, Apr 11, 2016 at 2:06 PM, Chamila De Alwis <chami...@wso2.com> wrote:
> Hi Pubudu, > > That's a good idea, however, we can't exactly map `environment` with the > `platform` concept. How about using a new level on top of the profile > specific level mapping to `platform`? > > :hierarchy: > - "node/%{::clientcert}" > * - > "wso2/%{::product_name}/%{::product_version}/%{::product_profile}-%{::platform}"* > - "wso2/%{::product_name}/%{::product_version}/%{::product_profile}" > - "wso2/%{::product_name}/%{::product_version}/default" > - "osfamily/%{::osfamily}" > - "vm_type/%{::vm_type}" > - wso2/common > - common > +1 for introducing a new level in hierarchy to lookup for platform specific data on top of profile specific data per product. > > This will allow us to extract the platform specific data only to one layer > up. An example would be, > > puppet-modules/hieradata/dev/wso2/wso2am/1.10.0/default-kubernetes.yaml > It would be better to have spearate folders for platform specific yaml files inside each product versions like below with changing the above hiera level to: *- "wso2/%{::product_name}/%{::product_version}/%{::product_profile}/%{::platform}"* hieradata/dev/wso2/wso2as/ └── 5.3.0 ├── default.yaml ├── <*platform*> │ ├── default.yaml │ ├── manager.yaml │ └── worker.yaml ├── kubernetes │ ├── default.yaml │ ├── manager.yaml │ └── worker.yaml ├── manager.yaml └── worker.yaml With the above structure, configs common to all platform will be there in the products' root level hierafiles. Only the platform specific configs related to a particular profile will be there in <platform>/<profile>.yaml (ex: proxy_ports). > WDYT? > > > Regards, > Chamila de Alwis > Committer and PMC Member - Apache Stratos > Software Engineer | WSO2 | +94772207163 > Blog: code.chamiladealwis.com > > > > On Mon, Apr 11, 2016 at 1:36 PM, Pubudu Gunatilaka <pubu...@wso2.com> > wrote: > >> Hi Isuru, >> >> Without duplicating files and adding new files, I would rather prefer to >> use the following hierarchy. For each and every different environment we >> can have product profiles and include the environment specific values. For >> Kubernetes, we can include the clustering section only in manager.yaml file >> which resides under environment Kubernetes. And the rest of the other >> configurations can be included in the generic file folder, i.e " >> wso2/%{::product_name}/%{::product_version}/%{::product_profile}". >> >> >> :hierarchy: >> - "node/%{::clientcert}" - - " >> wso2/%{::product_name}/%{::product_version}/%{::environment} >> /%{::product_profile}" >> - "wso2/%{::product_name}/%{::product_version}/%{::product_profile}" >> - "wso2/%{::product_name}/%{::product_version}/default" >> - "osfamily/%{::osfamily}" >> - "vm_type/%{::vm_type}" >> - wso2/common >> - common >> >> >> Thank you! >> >> On Mon, Apr 11, 2016 at 1:07 PM, Isuru Haththotuwa <isu...@wso2.com> >> wrote: >> >>> >>> >>> On Mon, Apr 11, 2016 at 12:47 PM, Gayan Gunarathne <gay...@wso2.com> >>> wrote: >>> >>>> >>>> >>>> On Mon, Apr 11, 2016 at 12:39 PM, Lakmal Warusawithana <lak...@wso2.com >>>> > wrote: >>>> >>>>> >>>>> >>>>> On Mon, Apr 11, 2016 at 12:22 PM, Imesh Gunaratne <im...@wso2.com> >>>>> wrote: >>>>> >>>>>> Hi Chamila, >>>>>> >>>>>> On Mon, Apr 11, 2016 at 7:19 AM, Chamila De Alwis <chami...@wso2.com> >>>>>> wrote: >>>>>> >>>>>>> Hi Isuru, Imesh, >>>>>>> >>>>>>> IMO we shouldn't have any platform specific restructuring in >>>>>>> wso2/puppet-modules. This should be done at the end user's setup. >>>>>>> Another >>>>>>> point is that we have now decoupled wso2/puppet-modules from >>>>>>> wso2/dockerfiles and users are not required to incorporate >>>>>>> puppet-modules >>>>>>> in their container setup. >>>>>>> >>>>>> >>>>>> A very good concern! The way I see this is little different. Let's >>>>>> evaluate the options we have: >>>>>> >>>>>> 1. Ship generic product/profile Hiera YAML files and let the >>>>>> users configure them according to their platform (VM, AWS, Azure, >>>>>> OpenStack, K8S, Mesos, OpenShift, CF, etc) >>>>>> 2. Ship product/profile/platform Hiera YAML files and let users >>>>>> use them OOB with very few changes. >>>>>> >>>>>> +1 for 2nd option. Yes, it has some duplication on configurations, >>>>> but customer POV, it is very easy to look at single place to do the >>>>> minimum >>>>> changes. (rather looking for many files in deferent folders to do the >>>>> changes) >>>>> >>>>> >>>>> >>>>> >>>>>> Which one would be the best option? IMO 2nd option would provide a >>>>>> much better user experience compared to 1 as it provides platform >>>>>> specific >>>>>> values such as clustering configuration & port mappings OOB. User will >>>>>> only >>>>>> need to provide values such as database hosts, passwords, identity >>>>>> management, etc which are user specific. >>>>>> >>>>>> The whole idea of this effort is to provide a better user experience. >>>>>> >>>>>> Thanks >>>>>> >>>>>>> >>>>>>> IMO Docker images will not be able to run OOB on Kubernetes using >>>>>>> wso2/puppet-modules and wso2/kubernetes-artifacts. There will anyway be >>>>>>> changes related to the Kubernetes Membership Scheme in >>>>>>> wso2/puppet-modules >>>>>>> and in wso2/kubernetes-artifacts where environment dependent changes >>>>>>> such >>>>>>> as image names, SecureVault passwords, etc. need to be adjusted. >>>>>>> >>>>>>> >>>>>>> Regards, >>>>>>> Chamila de Alwis >>>>>>> Committer and PMC Member - Apache Stratos >>>>>>> Software Engineer | WSO2 | +94772207163 >>>>>>> Blog: code.chamiladealwis.com >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Mon, Apr 11, 2016 at 1:36 AM, Imesh Gunaratne <im...@wso2.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi Gayan, >>>>>>>> >>>>>>>> On Sun, Apr 10, 2016 at 5:02 PM, Gayan Gunarathne <gay...@wso2.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> IMO this will create maintainability issue. We need to maintain >>>>>>>>> all the separate hieradata structure for each scenarios.For the one >>>>>>>>> particular alternation we need to change whole set of files. >>>>>>>>> >>>>>>>> >>>>>>>> In this scenario user experience is much more important than the >>>>>>>> maintainability of few yaml files. If we do not do this, users will >>>>>>>> not be >>>>>>>> able to use puppet modules OOB until they manually update configuration >>>>>>>> values in above files. The whole idea of this effort is to let users do >>>>>>>> following: >>>>>>>> >>>>>>>> - Setup a K8S cluster >>>>>>>> - Download puppet modules zip file(s). >>>>>>>> - Download docker files >>>>>>>> - Build docker images using puppet for different product >>>>>>>> profiles >>>>>>>> - Deploy WSO2 product on K8S using K8S artifacts >>>>>>>> >>>>>>>> The above process will allow users to deploy any WSO2 product (with >>>>>>>> mutlitple deployment patterns) on K8S with zero configurations. This >>>>>>>> will >>>>>>>> be true for any VM based platform or any other container cluster >>>>>>>> management >>>>>>>> system. >>>>>>>> >>>>>>> >>>> Mainly the target users group of the puppet/hiera files will be system >>>> administrators/Dev Ops. So those guys will be consider the fact the >>>> maintainability of puppet/hiera files. So if this is a maintainability >>>> issue, it will become bad experience for the end user in end of the day. >>>> >>>> >>>>> >>>>>>>>> Why can't we do this by using defined types in Hiera and lookup >>>>>>>>> parameters for a given instance? Based on the identify keys we >>>>>>>>> set for each vm, docker, K8S etc we can select the appropriate data >>>>>>>>> set from Hiera file. >>>>>>>>> >>>>>>>> >>>>>>>> Will you be able to provide a sample? >>>>>>>> >>>>>>> >>>> >>>> I think we can make this with with Defined Types[1][2] without creating >>>> duplicate set of YAML files for each platform. We can do the same as the >>>> example given in the document. >>>> >>> I do not think we need to duplicate the yaml files here. Sorry that the >>> sample in the first reply sent by me implied so. What we can do is refactor >>> out the hiera data so that data which is changing according to the platform >>> (ex.: clustering section) can be moved to a different yaml file(s). For an >>> example, clustering for kubernetes scenario can be included in >>> *puppet-modules/hieradata/dev/wso2/kubernetes/clustering.yaml*. Here, >>> 'kubernetes' is the value of the facter which is used to identify the >>> environment. Similarly, other such data can be refactored out. >>> >> If we follow this approach, then we can't specify product and profile specific data (ex: kubernetes service name varies per product and proxy_ports varies per poduct/profile) in the common platform hiera file: *puppet-modules/hieradata/dev/wso2/kubernetes/clustering.yaml.* >>>> [1] >>>> https://docs.puppet.com/puppet/latest/reference/lang_defined_types.html >>>> [2]http://puppetlunch.com/puppet/hiera.html >>>> >>>> >>>>> >>>>>>>> Thanks >>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Gayan >>>>>>>>> >>>>>>>>> >>>>>>>>> On Sat, Apr 9, 2016 at 8:28 AM, Imesh Gunaratne <im...@wso2.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Fri, Apr 8, 2016 at 7:48 PM, Isuru Haththotuwa < >>>>>>>>>> isu...@wso2.com> wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> hieradata >>>>>>>>>>> |--- dev >>>>>>>>>>> |--- wso2 >>>>>>>>>>> |---- <product_name> >>>>>>>>>>> |--- <product_version> >>>>>>>>>>> |-- *vm* >>>>>>>>>>> |-- >>>>>>>>>>> default.yaml >>>>>>>>>>> |-- >>>>>>>>>>> manager.yaml >>>>>>>>>>> |-- >>>>>>>>>>> worker.yaml >>>>>>>>>>> |--* >>>>>>>>>>> docker* >>>>>>>>>>> |-- >>>>>>>>>>> default.yaml >>>>>>>>>>> |-- >>>>>>>>>>> manager.yaml >>>>>>>>>>> |-- >>>>>>>>>>> worker.yaml >>>>>>>>>>> |-- >>>>>>>>>>> *kubernetes* >>>>>>>>>>> |-- >>>>>>>>>>> default.yaml >>>>>>>>>>> |-- >>>>>>>>>>> manager.yaml >>>>>>>>>>> |-- >>>>>>>>>>> worker.yaml >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> +1 for the suggestion Isuru, will proceed with this. We can add >>>>>>>>>> other platforms such as OpenShift, Mesos, Cloud Foundry on the same >>>>>>>>>> level. >>>>>>>>>> >>>>>>>>>> Thanks >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> *Imesh Gunaratne* >>>>>>>>>>>> Senior Technical Lead >>>>>>>>>>>> WSO2 Inc: http://wso2.com >>>>>>>>>>>> T: +94 11 214 5345 M: +94 77 374 2057 >>>>>>>>>>>> W: http://imesh.io >>>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Thanks and Regards, >>>>>>>>>>> >>>>>>>>>>> Isuru H. >>>>>>>>>>> +94 716 358 048* <http://wso2.com/>* >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> *Imesh Gunaratne* >>>>>>>>>> Senior Technical Lead >>>>>>>>>> WSO2 Inc: http://wso2.com >>>>>>>>>> T: +94 11 214 5345 M: +94 77 374 2057 >>>>>>>>>> W: http://imesh.io >>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Dev mailing list >>>>>>>>>> Dev@wso2.org >>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> >>>>>>>>> Gayan Gunarathne >>>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com) >>>>>>>>> Committer & PMC Member, Apache Stratos >>>>>>>>> email : gay...@wso2.com | mobile : +94 775030545 >>>>>>>>> <%2B94%20766819985> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Dev mailing list >>>>>>>>> Dev@wso2.org >>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> *Imesh Gunaratne* >>>>>>>> Senior Technical Lead >>>>>>>> WSO2 Inc: http://wso2.com >>>>>>>> T: +94 11 214 5345 M: +94 77 374 2057 >>>>>>>> W: http://imesh.io >>>>>>>> Lean . Enterprise . Middleware >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Dev mailing list >>>>>>>> Dev@wso2.org >>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> *Imesh Gunaratne* >>>>>> Senior Technical Lead >>>>>> WSO2 Inc: http://wso2.com >>>>>> T: +94 11 214 5345 M: +94 77 374 2057 >>>>>> W: http://imesh.io >>>>>> Lean . Enterprise . Middleware >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Dev mailing list >>>>>> Dev@wso2.org >>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Lakmal Warusawithana >>>>> Director - Cloud Architecture; WSO2 Inc. >>>>> Mobile : +94714289692 >>>>> Blog : http://lakmalsview.blogspot.com/ >>>>> >>>>> >>>>> _______________________________________________ >>>>> Dev mailing list >>>>> Dev@wso2.org >>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>> >>>>> >>>> >>>> >>>> -- >>>> >>>> Gayan Gunarathne >>>> Technical Lead, WSO2 Inc. (http://wso2.com) >>>> Committer & PMC Member, Apache Stratos >>>> email : gay...@wso2.com | mobile : +94 775030545 <%2B94%20766819985> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Dev mailing list >>>> Dev@wso2.org >>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>> >>>> >>> >>> >>> -- >>> Thanks and Regards, >>> >>> Isuru H. >>> +94 716 358 048* <http://wso2.com/>* >>> >>> >>> >>> _______________________________________________ >>> Dev mailing list >>> Dev@wso2.org >>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>> >>> >> >> >> -- >> *Pubudu Gunatilaka* >> Committer and PMC Member - Apache Stratos >> Software Engineer >> WSO2, Inc.: http://wso2.com >> mobile : +94774078049 <%2B94772207163> >> >> >> _______________________________________________ >> Dev mailing list >> Dev@wso2.org >> http://wso2.org/cgi-bin/mailman/listinfo/dev >> >> > > _______________________________________________ > Dev mailing list > Dev@wso2.org > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- Thanuja Uruththirakodeeswaran Software Engineer WSO2 Inc.;http://wso2.com lean.enterprise.middleware mobile: +94 774363167
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev