Hi,

We have come across several issues in current repository structure and
release model of Puppet, Dockerfiles, Mesos artifacts, Kubernetes artifacts
etc. (deployment artifacts). To name a few;
 - Publishing Puppet modules to PuppetForge is problematic
 - Releasing planning is bit complicated since all the Puppet modules
should be released
 - Not possible to release a specific Puppet module for a product since all
the modules resides in a single repo

To overcome these issues we can split each Puppet module, Dockerfile, Mesos
artifacts, K8S artifacts into its own repo. For eg:


   - wso2/puppet-<product>
   - wso2/docker-<product>
   - wso2/aws-artifacts-<product>
   - wso2/mesos-artifacts-<product>
   - wso2/kubernetes-artifacts-<product>


Now there are common Puppet resources being used by product modules, and
these can be hosted in wso2/puppet-common repo. Similarly we can host
common artifacts in wso2/mesos-artifacts-common,
wso2/kubernetes-artifacts-common

Also we can host Hieradata in the same repo as platform specific repo. For
eg:


   - mesos-artifacts-<product>/hieradata/
   - kubernetes-artifacts-<product>/hieradata/


Common Hiera data for each platform can be hosted in
wso2/<platform>-artifacts-common
repo. We can ship default Hiera data with a Vagrantfile in the
wso2-<product> repo.

Using this approach it would be much easier to do frequent releases of
Puppet modules, especially when a new product is released. By having common
repos (puppet-common, docker-common etc.) as Git sub-modules of product
specific repos (puppet-wso2esb, docker-wso2esb), transition will be
seamless for the users and no additional maintenance cost to developers.

Another concern is release versioning for Puppet modules. As per some
offline discussions, having product version number + puppet version suffix
seems to be appropriate since it would be easier for users find the
compatible and latest Puppet module for a specific product.

*Another option* is to make Puppet module for specific product compatible
across all the versions released under the same platform version. For eg;
wso2esb-4.9.0 and wso2esb-5.0.0 which is released under platform version
4.4.0 should be supported by puppet-wso2esb 4.4.0 family. Older versions of
puppet-wso2esb may not support products released after, but it should be
backward compatible with all the products released under the same platform
version.

Please note that repo names are not finalized yet and are still open to
suggestions. Please do share your thoughts.

Thanks.

-- 
Akila Ravihansa Perera
WSO2 Inc.;  http://wso2.com/

Blog: http://ravihansa3000.blogspot.com
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to