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
