Jenkins Amazon EC2 agent cloud - Windows slaves Jenkins Amazon EC2 agent cloud - Windows slaves jenkins jenkins

Jenkins Amazon EC2 agent cloud - Windows slaves


boto.ec2 can be perfectly used to start / stop / terminate instances on the go.

I use a script for that.Here is a piece of it that I can share. I'm not able to share some parts. Thank you for understanding.

#!/usr/bin/pythonimport boto.ec2import sysimport time# specify AWS keysauth = {"aws_access_key_id": "YOUR_KEY", "aws_secret_access_key": "YOUR_SECRET_KEY"}def main():    # read arguments from the command line and    # check whether at least two elements were entered    if len(sys.argv) < 2:        print "Usage: python aws.py {start|stop}\n"        sys.exit(0)    else:        action = sys.argv[1]    if action == "start":        startInstance()    elif action == "stop":        stopInstance()    else:        print "Usage: python aws.py {start|stop}\n"def startInstance():    print "Starting the instance..."    # change "eu-west-1" region if different    try:        ec2 = boto.ec2.connect_to_region("eu-west-1", **auth)    except Exception, e1:        error1 = "Error1: %s" % str(e1)        print(error1)        sys.exit(0)    # change instance ID appropriately    try:        instances = ec2.start_instances(instance_ids="ID_INSTANCE TO START")        instances[0].update()        while instances[0].state != "running":            print instances[0].state            time.sleep(5)            instances[0].update()#this part manage the association of Elastic IP        ec2.associate_address("ID_INSTANCE","ELASTIC IP")    except Exception, e2:        error2 = "Error2: %s" % str(e2)        print(error2)        sys.exit(0)def stopInstance():    print "Stopping the instance..."    try:        ec2 = boto.ec2.connect_to_region("eu-west-1", **auth)    except Exception, e1:        error1 = "Error1: %s" % str(e1)        print(error1)        sys.exit(0)    try:        ec2.stop_instances(instance_ids="INSTANCE_ID")        instances[0].update()        while instances[0].state != "stopped":            print instances[0], instances[0].state            time.sleep(5)            instance.update()        print "Instance stopped : "    except Exception, e2:        error2 = "Error2: %s" % str(e2)        print(error2)        sys.exit(0)if __name__ == '__main__':    main()