Project: springxd
Issue XD-969: Add functionality to provision EC2 instance and mount EBS
* The Application should ** Create a Spring Application Context. ** Should take a command line parameter --config that will point to a property file with key/value pairs specified below. By default the file xd-ec2.properties will be looked for on the classpath ** Associate EBS shared volume for each machine instance * Packaging ** Use gradle application plugin to generate a ‘bin’ directory with a script to start the application. Seehttp://www.gradle.org/docs/current/userguide/application_plugin.html ** The config file xd-ec2.properties should be in a directory (ideally a 'config' directory parallel to 'bin' and will be loaded by the application by default - loading via the CP is probably the easiest way. ** Create a POJO to easily reference these properties, vs. using a raw java Properties object. How to verify it works * Integration testing ** Create JUnit based tests. JClouds itself has extensive testing, can look at those for structure. ** Verify what you created has been installed. ** Verify ports are open Instance Information ** EBS of 50GB Base for each instance. * Report successful and failed Instances. Key-Value pairs in configuration file properties may include: * cluster-name= a name describing the cluster you are creating * aws-access-keys= the access key assigned to you by admin * aws-secret-key= the secret key assigned to you by admin * private-key-file= the private key file assigned to you by admin. Used for ssh-ing into * multi-node=true/false if true then installer will run the number of nodes as enumerated in the number-nodes property value. if false the installer will start a single node server * number-nodes=The number of nodes(containers) to deploy for this cluster. Value is an integer > 0 * machine-size=The size of machines to be assigned for admin and nodes. small, medium, large * redis-port=6379 * rabbit-port=5279 * xd-dist-url=The url to download the XD to install. for example: http://blahblahblah.zip * ami = The ami image to use for your cluster. for example: ami-dfadsfdadf
Story points: 10