def run_instance()

in src/ansible_collections/alibaba/apsarastack/plugins/modules/ali_instance.py [0:0]


def run_instance(module, ecs, exact_count):
    if exact_count <= 0:
        return None
    zone_id = module.params['availability_zone']
    image_id = module.params['image_id']
    instance_type = module.params['instance_type']
    security_groups = module.params['security_groups']
    vswitch_id = module.params['vswitch_id']
    instance_name = module.params['instance_name']
    description = module.params['description']
    internet_charge_type = module.params['internet_charge_type']
    max_bandwidth_out = module.params['max_bandwidth_out']
    max_bandwidth_in = module.params['max_bandwidth_in']
    host_name = module.params['host_name']
    password = module.params['password']
    system_disk_category = module.params['system_disk_category']
    system_disk_size = module.params['system_disk_size']
    system_disk_name = module.params['system_disk_name']
    system_disk_description = module.params['system_disk_description']
    allocate_public_ip = module.params['allocate_public_ip']
    period = module.params['period']
    auto_renew = module.params['auto_renew']
    instance_charge_type = module.params['instance_charge_type']
    auto_renew_period = module.params['auto_renew_period']
    user_data = module.params['user_data']
    key_name = module.params['key_name']
    ram_role_name = module.params['ram_role_name']
    spot_price_limit = module.params['spot_price_limit']
    spot_strategy = module.params['spot_strategy']
    unique_suffix = module.params['unique_suffix']
    count_tag = module.params['count_tag']
    tags = module.params['tags']

    merged_tags = {}
    if tags:
        merged_tags = tags

    if literal_eval(count_tag):
        merged_tags.update(literal_eval(count_tag))

    # check whether the required parameter passed or not
    if not image_id:
        module.fail_json(msg='image_id is required for new instance')
    if not instance_type:
        module.fail_json(msg='instance_type is required for new instance')
    if not isinstance(security_groups, list):
        module.fail_json(msg='The parameter security_groups should be a list, aborting')
    if len(security_groups) <= 0:
        module.fail_json(msg='Expected the parameter security_groups is non-empty when create new ECS instances, aborting')

    client_token = "Ansible-Apsarastack-{0}-{1}".format(hash(str(module.params)), str(time.time()))

    try:
        # call to create_instance method from footmark
        instances = ecs.run_instances(image_id=image_id, instance_type=instance_type, security_group_id=security_groups[0],
                                      zone_id=zone_id, instance_name=instance_name, description=description,
                                      internet_charge_type=internet_charge_type, internet_max_bandwidth_out=max_bandwidth_out,
                                      internet_max_bandwidth_in=max_bandwidth_in, host_name=host_name, password=password,
                                      io_optimized='optimized', system_disk_category=system_disk_category,
                                      system_disk_size=system_disk_size, system_disk_disk_name=system_disk_name,
                                      system_disk_description=system_disk_description, vswitch_id=vswitch_id,
                                      amount=exact_count, instance_charge_type=instance_charge_type, period=period, period_unit="Month",
                                      auto_renew=auto_renew, auto_renew_period=auto_renew_period, key_pair_name=key_name,
                                      user_data=user_data, client_token=client_token, ram_role_name=ram_role_name,
                                      spot_price_limit=spot_price_limit, spot_strategy=spot_strategy, unique_suffix=unique_suffix,
                                      tags=merged_tags)

    except Exception as e:
        module.fail_json(msg='Unable to create instance, error: {0}'.format(e))

    return instances