cloudstore-developers
Changes
bin/config.ini.example 1(+1 -0)
Details
bin/config.ini.example 1(+1 -0)
diff --git a/bin/config.ini.example b/bin/config.ini.example
index e23efa0..b55eda0 100644
--- a/bin/config.ini.example
+++ b/bin/config.ini.example
@@ -29,6 +29,7 @@ ami_id = ami-4d5bd93a
is_autoscalable = no
cooldown = 300
remote_user = ubuntu
+instances_identifier = cloudscale
[OPENSTACK]
username =
diff --git a/cloudscale/deployment_scripts/frontend.py b/cloudscale/deployment_scripts/frontend.py
index b08e01d..e27451d 100644
--- a/cloudscale/deployment_scripts/frontend.py
+++ b/cloudscale/deployment_scripts/frontend.py
@@ -16,6 +16,7 @@ class Frontend:
def __init__(self, config, logger):
self.config = config
self.logger=logger
+ self.instance_ids = []
def setup_aws_frontend(self):
self.logger=self.logger
@@ -48,15 +49,12 @@ class Frontend:
i = aws_create_instance.CreateEC2Instance(cfg=self.config.cfg, logger=self.logger)
ip_addresses = []
num_instances = int(self.cfg.get('COMMON', 'num_instances'))
- for _ in xrange(num_instances):
- instance = i.create()
- instances.append(instance)
+ instances = i.create_all(num_instances)
+ for instance in instances:
ip_addresses.append(instance.ip_address)
self.config.save('infrastructure', 'ip_address', ','.join(ip_addresses))
-
-
self.ip_addresses = self.cfg.get('infrastructure', 'ip_address').split(",")
loadbalancer = None
if len(instances) > 1:
@@ -70,6 +68,7 @@ class Frontend:
deploy_showcase.DeploySoftware(self)
showcase_url = loadbalancer.dns_name if loadbalancer else instances[0].ip_address
+ self.logger.log("Instance ids: %s" % ",".join([instance.id for instance in instances]))
elif self.cfg.get('EC2', 'is_autoscalable') == 'yes':
i = aws_create_instance.CreateEC2Instance(cfg=self.config.cfg, logger=self.logger)
diff --git a/cloudscale/deployment_scripts/logger.py b/cloudscale/deployment_scripts/logger.py
index aa5046e..020fbc7 100644
--- a/cloudscale/deployment_scripts/logger.py
+++ b/cloudscale/deployment_scripts/logger.py
@@ -1,5 +1,5 @@
import logging
-logging.basicConfig(filename='deployment_scripts.log')
+logging.basicConfig(filename='deployment_scripts.log', level=logging.INFO)
class Logger:
def __init__(self):
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_autoscalability.py b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_autoscalability.py
index e5546ac..caa6a78 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_autoscalability.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_autoscalability.py
@@ -6,6 +6,7 @@ from boto.ec2.autoscale import ScalingPolicy
import boto.ec2.cloudwatch
from boto.ec2.cloudwatch import MetricAlarm
import sys
+from boto.ec2.autoscale.tag import Tag
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
@@ -91,7 +92,8 @@ class Autoscalability:
['http'],
None,
self.cfg.get('EC2', 'instance_type'),
- instance_monitoring=True)
+ instance_monitoring=True
+ )
self.conn.create_launch_configuration(lc)
return lc
@@ -105,10 +107,20 @@ class Autoscalability:
self.logger.log("Creating autoscalability group ...")
try:
+ tag = Tag(
+ key='Name',
+ value = self.cfg.get('EC2', 'instances_identifier'),
+ propagate_at_launch=True,
+ resource_id='cloudscale-as'
+ )
ag = AutoScalingGroup(group_name='cloudscale-as',
load_balancers=[lb_name],
availability_zones=self.cfg.get('EC2', 'availability_zones').split(","),
- launch_config=lc, min_size=1, max_size=10, connection=self.conn)
+ launch_config=lc,
+ min_size=1,
+ max_size=10,
+ connection=self.conn,
+ tags=[tag])
self.conn.create_auto_scaling_group(ag)
except boto.exception.BotoServerError as e:
if e.error_code != 'AlreadyExists':
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_instance.py b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_instance.py
index 5187808..43ab768 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_instance.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_instance.py
@@ -26,9 +26,30 @@ class CreateEC2Instance:
self.create_security_groups()
instance = self.create_instance()
#self.write_config(instance)
- self.logger.log(instance.id)
+
return instance
+ def create_all(self, num_instances):
+ res = self.conn.run_instances(
+ self.cfg.get('EC2', 'ami_id'),
+ max_count=num_instances,
+ key_name=self.key_name,
+ instance_type=self.cfg.get('EC2','instance_type'),
+ security_groups=['http', 'ssh'],
+ monitoring_enabled=True,
+ placement=self.cfg.get('EC2', 'availability_zones').split(',')[0]
+ )
+
+ instance_ids = []
+ for instance in res.instances:
+ self.wait_available(instance)
+ instance_ids.append(instance.id)
+
+ instances = self.conn.get_all_instances(instance_ids)[0].instances
+ self.conn.create_tags(instance_ids, {'Name': 'cloudscale'})
+
+ return instances
+
def create_security_groups(self):
self.logger.log("Creating security groups http and ssh ...")
self.create_security_group('http', 'Security group for HTTP protocol', '80', '0.0.0.0/0')
@@ -49,11 +70,13 @@ class CreateEC2Instance:
key_name=self.key_name,
instance_type=self.cfg.get('EC2','instance_type'),
security_groups=['http', 'ssh'],
+ monitoring_enabled=True,
placement=self.cfg.get('EC2', 'availability_zones').split(',')[0]
)
self.wait_available(res.instances[0])
instance = self.conn.get_all_instances([res.instances[0].id])[0].instances[0]
+ self.conn.create_tags([instance.id], {'Name': 'cloudscale'})
self.conn.monitor_instances([instance.id])
return instance
diff --git a/dist/cloudscale-deployment-scripts-0.1.0.tar.gz b/dist/cloudscale-deployment-scripts-0.1.0.tar.gz
index b4bd964..0d59039 100644
Binary files a/dist/cloudscale-deployment-scripts-0.1.0.tar.gz and b/dist/cloudscale-deployment-scripts-0.1.0.tar.gz differ