Hi all, We are working on developing a deployment automation process which will be integrated in to the test automation framework to run test suites on different product platforms.
Following is the current process of deployment automation process. Nodes information file contains all the names of nodes in the cluster of which the collective behavior is tested. It will contain hostnames of the nodes such as appserver-mgr1 appserver-wkr1. Configuration data for each node in the cluster will be kept as a data structure in another configuration file which will be restructured according to the spawned instances information (in OpenStack) and reflected in puppet master. This configuration file was initially created as an xml file similar to the product configuration files following the same xml hierarchical pattern. Following DevOps practices the configuration xml file is removed and puppet data structure file is introduced. Using python novaclient API, equal number of instances are spawned in the environment (OpenStack). When instances are being created a preconfigured OpenStack image [1] will be used from an image repository. This image includes preconfigured puppet agent and ganglia client services (aware of puppet master and ganglia monitor locations). Once the instances are spawned in OpenStack, the relevant information of the node is retrieved using facter [2]. This information will be cross mapped and merged with the configuration file with the relevant information such as IP addresses, hostnames of the instances to create a puppet central configuration file. Puppet will be taking over its operations once this configuration file is in place. By mapping the hostname of the incoming puppet agent request against the configuration file, puppet master performs the following operations. - Ensure essential packages such as unzip are present in agent node prior starting server operations. - Remove old extractions and installations of conflicting product packs. - Install the defined jdk to the instance. - Extract product pack file. - Retrieve node specific values and update product pack configuration (axis2.xml, carbon.xml, catalina-server.xml, etc...). - Start the server with given server options. In future deployment automation module will be expanded to support OpenStack, EC2, Physical networked machines and Local environments. Currently development started with OpenStack using python novaclient API. Issues encountered and findings are logged in [3], [4] and [5]. In the next phase Docker will be evaluated to facilitate cross platform test execution (Multiple DBs, JDKs, User Stores, OS etc..) Please share your ideas for improvement. We are planning to have an architectural review with DevOps team within next week. Attached diagram represents the proposed architecture. [1] https://docs.google.com/a/wso2.com/document/d/1XVEs_5Aq5I7S1IbgFKjvzMX-_xCKOX--Yo6SXgk6JYY/edit [2]http://packages.ubuntu.com/trusty/facter [3]http://suhan-opensource.blogspot.com/ [4] https://docs.google.com/a/wso2.com/document/d/16kNIQVoWYTa8mBj1bZhh8qqrh_6EuB6D53eykFUPduk/edit [5] stackoverflow 1. http://stackoverflow.com/questions/26754915/novaclient-create-cloud-server-using-boot-error-badrequest-multiple-pos 2. http://stackoverflow.com/questions/27125371/puppet-catalog-run-error-error-400-on-server-not-authorized-to-call-find-on-p 3. http://stackoverflow.com/questions/27183036/puppet-fill-templates-with-ip-addresses-of-newly-spawned-instances 4. http://stackoverflow.com/questions/27222189/puppet-iteration-with-2-dimensional-array-to-fill-template 5. http://stackoverflow.com/questions/27286731/puppet-fill-template-values-using-params-pp-complex-data-structures 6. http://stackoverflow.com/questions/27402037/puppet-site-pp-applying-node-definition-config-for-nodes-with-same-hostname-pref Thanks, Suhan -- Suhan Dharmasuriya Software Engineer - Test Automation *WSO2, Inc. * lean . enterprise . middleware Tel: +94 112 145345 Mob: +94 779 869138 Blog: http://suhan-opensource.blogspot.com/
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
