def create_launch_config(lconfig_name, image_id, inst_type, key_name, security_groups, spot_price=0, user_data_file=None, user_data=None, block_dev_mappings=None, ebs_optimized=False, overwrite=False): existing_config = Cluster.get_launch_config(lconfig_name) if existing_config is not None: if overwrite: existing_config.delete() Cluster.log_info( "Deleted launch config %s to overwrite new config", lconfig_name) else: Cluster.log_error("Launch config %s already exists.", lconfig_name) raise Exception("Launch configuration already exists") auto_scale_conn = Cluster._autoscale() if user_data is None: if user_data_file is not None: with open(user_data_file, 'r') as udf: user_data = udf.read() lconfig = LaunchConfiguration() lconfig.instance_type = inst_type lconfig.name = lconfig_name lconfig.image_id = image_id lconfig.key_name = key_name lconfig.security_groups = security_groups lconfig.user_data = user_data if spot_price > 0: lconfig.spot_price = spot_price if block_dev_mappings is not None: lconfig.block_device_mappings = block_dev_mappings if ebs_optimized: lconfig.ebs_optimized = True auto_scale_conn.create_launch_configuration(lconfig) Cluster.log_info("Created launch configuration %s", lconfig.name)
def create_launch_config(lconfig_name, image_id, inst_type, key_name, security_groups, spot_price=0, user_data_file=None, user_data=None, block_dev_mappings=None, ebs_optimized=False, overwrite=False): existing_config = Cluster.get_launch_config(lconfig_name) if existing_config is not None: if overwrite: existing_config.delete() Cluster.log_info("Deleted launch config %s to overwrite new config", lconfig_name) else: Cluster.log_error("Launch config %s already exists.", lconfig_name) raise Exception("Launch configuration already exists") auto_scale_conn = Cluster._autoscale() if user_data is None: if user_data_file is not None: with open(user_data_file, 'r') as udf: user_data = udf.read() lconfig = LaunchConfiguration() lconfig.instance_type = inst_type lconfig.name = lconfig_name lconfig.image_id = image_id lconfig.key_name = key_name lconfig.security_groups = security_groups lconfig.user_data = user_data if spot_price > 0: lconfig.spot_price = spot_price if block_dev_mappings is not None: lconfig.block_device_mappings = block_dev_mappings if ebs_optimized: lconfig.ebs_optimized = True auto_scale_conn.create_launch_configuration(lconfig) Cluster.log_info("Created launch configuration %s", lconfig.name)
def create_launch_config(connection, module): name = module.params.get('name') image_id = module.params.get('image_id') key_name = module.params.get('key_name') security_groups = module.params['security_groups'] user_data = module.params.get('user_data') volumes = module.params['volumes'] instance_type = module.params.get('instance_type') spot_price = module.params.get('spot_price') instance_monitoring = module.params.get('instance_monitoring') assign_public_ip = module.params.get('assign_public_ip') kernel_id = module.params.get('kernel_id') ramdisk_id = module.params.get('ramdisk_id') instance_profile_name = module.params.get('instance_profile_name') ebs_optimized = module.params.get('ebs_optimized') classic_link_vpc_id = module.params.get('classic_link_vpc_id') classic_link_vpc_security_groups = module.params.get( 'classic_link_vpc_security_groups') append_hash = module.params.get('append_hash') bdm = BlockDeviceMapping() if volumes: for volume in volumes: if 'device_name' not in volume: module.fail_json(msg='Device name must be set for volume') # Minimum volume size is 1GB. We'll use volume size explicitly set to 0 # to be a signal not to create this volume if 'volume_size' not in volume or int(volume['volume_size']) > 0: bdm[volume['device_name']] = create_block_device( module, volume) lc = LaunchConfiguration( name=name, image_id=image_id, key_name=key_name, security_groups=security_groups, user_data=user_data, block_device_mappings=[bdm], instance_type=instance_type, kernel_id=kernel_id, spot_price=spot_price, instance_monitoring=instance_monitoring, associate_public_ip_address=assign_public_ip, ramdisk_id=ramdisk_id, instance_profile_name=instance_profile_name, ebs_optimized=ebs_optimized, classic_link_vpc_security_groups=classic_link_vpc_security_groups, classic_link_vpc_id=classic_link_vpc_id, ) if append_hash: # MD5 of launch configuration properties h = hashlib.md5() h.update(str(frozenset(lc.__dict__))) # Update name variables with md5 hash name = '-'.join((name, h.hexdigest())) lc.name = name launch_configs = connection.get_all_launch_configurations(names=[name]) changed = False if not launch_configs: try: connection.create_launch_configuration(lc) launch_configs = connection.get_all_launch_configurations( names=[name]) changed = True except BotoServerError, e: module.fail_json(msg=str(e))