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

Reply via email to