This is an automated email from the ASF dual-hosted git repository.
mykolabodnar pushed a commit to branch DATALAB-2409
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
The following commit(s) were added to refs/heads/DATALAB-2409 by this push:
new 05e83dc [DATALAB-2409] - [AWS] SSN configure refactored
05e83dc is described below
commit 05e83dc753517e5ee3214492fb901f9fcc34c971
Author: bodnarmykola <[email protected]>
AuthorDate: Thu Jul 29 15:00:14 2021 +0300
[DATALAB-2409] - [AWS] SSN configure refactored
---
.../src/general/scripts/aws/ssn_configure.py | 83 +++++++++++++++-------
.../src/general/scripts/aws/ssn_prepare.py | 44 ++++++------
2 files changed, 78 insertions(+), 49 deletions(-)
diff --git
a/infrastructure-provisioning/src/general/scripts/aws/ssn_configure.py
b/infrastructure-provisioning/src/general/scripts/aws/ssn_configure.py
index 732e548..3cc5a4a 100644
--- a/infrastructure-provisioning/src/general/scripts/aws/ssn_configure.py
+++ b/infrastructure-provisioning/src/general/scripts/aws/ssn_configure.py
@@ -65,6 +65,7 @@ if __name__ == "__main__":
ssn_conf['region'] = os.environ['aws_region']
ssn_conf['ssn_image_name'] =
os.environ['aws_{}_image_name'.format(os.environ['conf_os_family'])]
ssn_conf['subnet_name'] =
'{}-subnet'.format(ssn_conf['service_base_name'])
+ ssn_conf['subnet_tag'] = {"Key": ssn_conf['tag_name'], "Value":
ssn_conf['subnet_name']}
ssn_conf['sg_name'] = '{}-ssn-sg'.format(ssn_conf['service_base_name'])
ssn_conf['network_type'] = os.environ['conf_network_type']
ssn_conf['datalab_ssh_user'] = os.environ['conf_os_user']
@@ -82,11 +83,39 @@ if __name__ == "__main__":
'Public')) if x == 'public' else ' --san
{0}'.format(datalab.meta_lib.get_instance_metadata(
ssn_conf['tag_name'], ssn_conf['instance_name'],
'ip_address').get('Private')))(
ssn_conf['network_type']) if x == 'true' else
'')(os.environ['conf_stepcerts_enabled'])
-
-
- print('AWS SG ID: {}'.format(os.environ['aws_security_groups_ids']))
-
- except Exception as err:
+ if 'aws_vpc_id' in os.environ and os.environ['aws_vpc_id'] != '':
+ ssn_conf['aws_vpc_id'] = os.environ['aws_vpc_id']
+ else:
+ ssn_conf['aws_vpc_id'] =
datalab.meta_lib.get_vpc_by_tag(ssn_conf['tag_name'],
+
ssn_conf['service_base_name'])
+ if os.environ['conf_duo_vpc_enable'] == 'true' and 'aws_vpc2_id' in
os.environ\
+ and os.environ['aws_vpc2_id'] != '':
+ ssn_conf['aws_vpc2_id'] = os.environ['aws_vpc2_id']
+ else:
+ ssn_conf['aws_vpc2_id'] =
datalab.meta_lib.get_vpc_by_tag(ssn_conf['tag2_name'],
+
ssn_conf['service_base_name'])
+ if os.environ['conf_duo_vpc_enable'] == 'true' and not
os.environ['aws_peering_id']:
+ ssn_conf['aws_peering_id'] =
datalab.meta_lib.get_peering_by_tag(ssn_conf['tag_name'],
+
ssn_conf['service_base_name'])
+ if 'aws_subnet_id' in os.environ and os.environ['aws_subnet_id'] != '':
+ ssn_conf['aws_subnet_id'] = os.environ['aws_subnet_ids']
+ else:
+ ssn_conf['aws_subnet_id'] =
datalab.meta_lib.get_subnet_by_tag(ssn_conf['subnet_tag'], True)
+ if 'aws_security_groups_ids' in os.environ and
os.environ['aws_security_groups_ids'] != '':
+ ssn_conf['aws_security_groups_ids'] =
os.environ['aws_security_groups_ids']
+ else:
+ ssn_conf['aws_security_groups_ids'] =
datalab.meta_lib.get_security_group_by_name(ssn_conf['sg_name'])
+ if 'aws_billing_bucket' in os.environ and
os.environ['aws_billing_bucket'] == '':
+ ssn_conf['billing_enabled'] = True
+ ssn_conf['aws_billing_bucket'] = os.environ['aws_billing_bucket']
+ else:
+ ssn_conf['billing_enabled'] = False
+ ssn_conf['aws_billing_bucket'] = 'None'
+ if 'aws_report_path' in os.environ and os.environ['aws_report_path']
== '':
+ ssn_conf['aws_report_path'] = os.environ['aws_report_path']
+ else:
+ ssn_conf['aws_report_path'] = ''
+ except Exception as err:
logging.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to generate variables dictionary.",
str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
@@ -138,8 +167,8 @@ if __name__ == "__main__":
logging.info('[CONFIGURE SSN INSTANCE]')
additional_config = {"nginx_template_dir": "/root/templates/",
"service_base_name":
ssn_conf['service_base_name'],
- "security_group_id":
os.environ['aws_security_groups_ids'],
- "vpc_id": os.environ['aws_vpc_id'], "subnet_id":
os.environ['aws_subnet_id'],
+ "security_group_id":
ssn_conf['aws_security_groups_ids'],
+ "vpc_id": ssn_conf['aws_vpc_id'], "subnet_id":
ssn_conf['aws_subnet_id'],
"admin_key": os.environ['conf_key_name']}
params = "--hostname {} --keyfile {} --additional_config '{}'
--os_user {} --datalab_path {}" \
" --tag_resource_id {} --step_cert_sans '{}' ".format(
@@ -247,23 +276,23 @@ if __name__ == "__main__":
},
{
'key': 'SUBNET_ID',
- 'value': os.environ['aws_subnet_id']
+ 'value': ssn_conf['aws_subnet_id']
},
{
'key': 'REGION',
- 'value': os.environ['aws_region']
+ 'value': ssn_conf['aws_region']
},
{
'key': 'ZONE',
- 'value': os.environ['aws_zone']
+ 'value': ssn_conf['aws_zone']
},
{
'key': 'TAG_RESOURCE_ID',
- 'value': os.environ['conf_tag_resource_id']
+ 'value': ssn_conf['conf_tag_resource_id']
},
{
'key': 'SG_IDS',
- 'value': os.environ['aws_security_groups_ids']
+ 'value': ssn_conf['aws_security_groups_ids']
},
{
'key': 'SSN_INSTANCE_SIZE',
@@ -271,7 +300,7 @@ if __name__ == "__main__":
},
{
'key': 'VPC_ID',
- 'value': os.environ['aws_vpc_id']
+ 'value': ssn_conf['aws_vpc_id']
},
{
'key': 'CONF_KEY_DIR',
@@ -314,33 +343,33 @@ if __name__ == "__main__":
cloud_params.append(
{
'key': 'SUBNET2_ID',
- 'value': os.environ['aws_subnet_id']
+ 'value': ssn_conf['aws_subnet_id']
})
cloud_params.append(
{
'key': 'VPC2_ID',
- 'value': os.environ['aws_vpc2_id']
+ 'value': ssn_conf['aws_vpc2_id']
})
cloud_params.append(
{
'key': 'PEERING_ID',
- 'value': os.environ['aws_peering_id']
+ 'value': ssn_conf['aws_peering_id']
})
else:
cloud_params.append(
{
'key': 'SUBNET2_ID',
- 'value': os.environ['aws_subnet_id']
+ 'value': ssn_conf['aws_subnet_id']
})
cloud_params.append(
{
'key': 'VPC2_ID',
- 'value': os.environ['aws_vpc_id']
+ 'value': ssn_conf['aws_vpc_id']
})
cloud_params.append(
{
'key': 'PEERING_ID',
- 'value': os.environ['aws_peering_id']
+ 'value': ssn_conf['aws_peering_id']
})
if os.environ['conf_stepcerts_enabled'] == 'true':
cloud_params.append(
@@ -508,9 +537,9 @@ if __name__ == "__main__":
os.environ['conf_billing_tag'],
os.environ['conf_cloud_provider'],
os.environ['aws_account_id'],
- os.environ['aws_billing_bucket'],
+ ssn_conf['aws_billing_bucket'],
os.environ['aws_job_enabled'],
- os.environ['aws_report_path'],
+ ssn_conf['aws_report_path'],
ssn_conf['billing_enabled'],
json.dumps(cloud_params),
os.environ['datalab_id'],
@@ -546,9 +575,9 @@ if __name__ == "__main__":
logging.info("Role profile name:
{}".format(ssn_conf['role_profile_name']))
logging.info("Policy name: {}".format(ssn_conf['policy_name']))
logging.info("Key name: {}".format(os.environ['conf_key_name']))
- logging.info("VPC ID: {}".format(os.environ['aws_vpc_id']))
- logging.info("Subnet ID: {}".format(os.environ['aws_subnet_id']))
- logging.info("Security IDs:
{}".format(os.environ['aws_security_groups_ids']))
+ logging.info("VPC ID: {}".format(ssn_conf['aws_vpc_id']))
+ logging.info("Subnet ID: {}".format(ssn_conf['aws_subnet_id']))
+ logging.info("Security IDs:
{}".format(ossn_conf['aws_security_groups_ids']))
logging.info("SSN instance shape:
{}".format(os.environ['aws_ssn_instance_size']))
logging.info("SSN AMI name: {}".format(ssn_conf['ssn_image_name']))
logging.info("Region: {}".format(ssn_conf['region']))
@@ -566,9 +595,9 @@ if __name__ == "__main__":
"role_profile_name": ssn_conf['role_profile_name'],
"policy_name": ssn_conf['policy_name'],
"master_keyname": os.environ['conf_key_name'],
- "vpc_id": os.environ['aws_vpc_id'],
- "subnet_id": os.environ['aws_subnet_id'],
- "security_id": os.environ['aws_security_groups_ids'],
+ "vpc_id": ssn_conf['aws_vpc_id'],
+ "subnet_id": ssn_conf['aws_subnet_id'],
+ "security_id": ssn_conf['aws_security_groups_ids'],
"instance_shape": os.environ['aws_ssn_instance_size'],
"region": ssn_conf['region'],
"action": "Create SSN instance"}
diff --git a/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
b/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
index 4686a42..3106a7c 100644
--- a/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
+++ b/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
@@ -111,7 +111,7 @@ if __name__ == "__main__":
#creating aws vpc
try:
if 'aws_vpc_id' in os.environ and os.environ['aws_vpc_id'] != '':
- ssn_conf['predefined_aws_vpc'] = 'true'
+ ssn_conf['aws_vpc_id'] = os.environ['aws_vpc_id']
else:
logging.info('[CREATE VPC AND ROUTE TABLE]')
params = "--vpc {} --region {} --infra_tag_name {}
--infra_tag_value {} --vpc_name {}".format(
@@ -122,9 +122,9 @@ if __name__ == "__main__":
except:
traceback.print_exc()
raise Exception
- os.environ['aws_vpc_id'] =
datalab.meta_lib.get_vpc_by_tag(ssn_conf['tag_name'],
+ ssn_conf['aws_vpc_id'] =
datalab.meta_lib.get_vpc_by_tag(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
- for cidr in
datalab.meta_lib.get_vpc_cidr_by_id(os.environ['aws_vpc_id']):
+ for cidr in
datalab.meta_lib.get_vpc_cidr_by_id(ssn_conf['aws_vpc_id']):
ssn_conf['allowed_vpc_cidr_ip_ranges'].append({"CidrIp": cidr})
except Exception as err:
logging.error('Error: {0}'.format(err))
@@ -146,7 +146,7 @@ if __name__ == "__main__":
except:
traceback.print_exc()
raise Exception
- os.environ['aws_vpc2_id'] =
datalab.meta_lib.get_vpc_by_tag(ssn_conf['tag2_name'],
+ ssn_conf['aws_vpc2_id'] =
datalab.meta_lib.get_vpc_by_tag(ssn_conf['tag2_name'],
ssn_conf['service_base_name'])
except Exception as err:
logging.error('Error: {0}'.format(err))
@@ -157,11 +157,11 @@ if __name__ == "__main__":
#creating subnet
try:
if 'aws_subnet_id' in os.environ and os.environ['aws_subnet_id'] != '':
- ssn_conf['predefined_aws_subnet'] = 'true'
+ ssn_conf['aws_subnet_id'] = os.environ['aws_subnet_id']
else:
logging.info('[CREATE SUBNET]')
params = "--vpc_id {0} --username {1} --infra_tag_name {2}
--infra_tag_value {3} --prefix {4} " \
- "--ssn {5} --zone {6} --subnet_name
{7}".format(os.environ['aws_vpc_id'], 'ssn',
+ "--ssn {5} --zone {6} --subnet_name
{7}".format(ssn_conf['aws_vpc_id'], 'ssn',
ssn_conf['tag_name'],
ssn_conf['service_base_name'],
'20',
True,
@@ -171,9 +171,9 @@ if __name__ == "__main__":
except:
traceback.print_exc()
raise Exception
- os.environ['aws_subnet_id'] =
datalab.meta_lib.get_subnet_by_tag(ssn_conf['subnet_tag'], True,
-
os.environ['aws_vpc_id'])
-
datalab.actions_lib.enable_auto_assign_ip(os.environ['aws_subnet_id'])
+ ssn_conf['aws_subnet_id'] =
datalab.meta_lib.get_subnet_by_tag(ssn_conf['subnet_tag'], True,
+
ssn_conf['aws_vpc_id'])
+
datalab.actions_lib.enable_auto_assign_ip(ssn_conf['aws_subnet_id'])
except Exception as err:
logging.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create Subnet", str(err))
@@ -182,14 +182,14 @@ if __name__ == "__main__":
#creating peering connection
try:
- if os.environ['conf_duo_vpc_enable'] == 'true' and
os.environ['aws_vpc_id'] and os.environ['aws_vpc2_id']:
+ if os.environ['conf_duo_vpc_enable'] == 'true' and
ssn_conf['aws_vpc_id'] and ssn_conf['aws_vpc2_id']:
logging.info('[CREATE PEERING CONNECTION]')
- os.environ['aws_peering_id'] =
datalab.actions_lib.create_peering_connection(
- os.environ['aws_vpc_id'], os.environ['aws_vpc2_id'],
ssn_conf['service_base_name'])
- logging.info('PEERING CONNECTION ID:' +
os.environ['aws_peering_id'])
-
datalab.actions_lib.create_route_by_id(os.environ['aws_subnet_id'],
os.environ['aws_vpc_id'],
-
os.environ['aws_peering_id'],
-
datalab.meta_lib.get_cidr_by_vpc(os.environ['aws_vpc2_id']))
+ ssn_conf['aws_peering_id'] =
datalab.actions_lib.create_peering_connection(
+ ssn_conf['aws_vpc_id'], ssn_conf['aws_vpc2_id'],
ssn_conf['service_base_name'])
+ logging.info('PEERING CONNECTION ID:' + ssn_conf['aws_peering_id'])
+ datalab.actions_lib.create_route_by_id(ssn_conf['aws_subnet_id'],
ssn_conf['aws_vpc_id'],
+ ssn_conf['aws_peering_id'],
+
datalab.meta_lib.get_cidr_by_vpc(ssn_conf['aws_vpc2_id']))
except Exception as err:
logging.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create peering connection",
str(err))
@@ -199,7 +199,7 @@ if __name__ == "__main__":
#creating security groups
try:
if 'aws_security_groups_ids' in os.environ and
os.environ['aws_security_groups_ids'] != '':
- ssn_conf['predefined_security_groups'] = 'true'
+ ssn_conf['aws_security_groups_ids'] =
os.environ['aws_security_groups_ids']
else:
logging.info('[CREATE SG FOR SSN]')
ssn_conf['ingress_sg_rules_template'] =
datalab.meta_lib.format_sg([
@@ -246,7 +246,7 @@ if __name__ == "__main__":
])
params = "--name {} --vpc_id {} --security_group_rules '{}'
--egress '{}' --infra_tag_name {} " \
"--infra_tag_value {} --force {} --ssn {}". \
- format(ssn_conf['sg_name'], os.environ['aws_vpc_id'],
+ format(ssn_conf['sg_name'], ssn_conf['aws_vpc_id'],
json.dumps(ssn_conf['ingress_sg_rules_template']),
json.dumps(egress_sg_rules_template),
ssn_conf['service_base_name'], ssn_conf['tag_name'],
False, True)
try:
@@ -254,7 +254,7 @@ if __name__ == "__main__":
except:
traceback.print_exc()
raise Exception
- os.environ['aws_security_groups_ids'] =
datalab.meta_lib.get_security_group_by_name(ssn_conf['sg_name'])
+ ssn_conf['aws_security_groups_ids'] =
datalab.meta_lib.get_security_group_by_name(ssn_conf['sg_name'])
except Exception as err:
logging.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create security group for SSN",
str(err))
@@ -284,7 +284,7 @@ if __name__ == "__main__":
try:
logging.info('[CREATE ENDPOINT AND ROUTE-TABLE]')
params = "--vpc_id {} --region {} --infra_tag_name {}
--infra_tag_value {}".format(
- os.environ['aws_vpc_id'], ssn_conf['region'],
ssn_conf['tag_name'], ssn_conf['service_base_name'])
+ ssn_conf['aws_vpc_id'], ssn_conf['region'], ssn_conf['tag_name'],
ssn_conf['service_base_name'])
try:
subprocess.run("~/scripts/{}.py {}".format('ssn_create_endpoint',
params), shell=True, check=True)
except:
@@ -301,7 +301,7 @@ if __name__ == "__main__":
if os.environ['conf_duo_vpc_enable'] == 'true':
logging.info('[CREATE ENDPOINT AND ROUTE-TABLE FOR NOTEBOOK VPC]')
params = "--vpc_id {} --region {} --infra_tag_name {}
--infra_tag_value {}".format(
- os.environ['aws_vpc2_id'], ssn_conf['aws_region'],
ssn_conf['tag2_name'],
+ ssn_conf['aws_vpc2_id'], ssn_conf['aws_region'],
ssn_conf['tag2_name'],
ssn_conf['service_base_name'])
try:
subprocess.run("~/scripts/{}.py
{}".format('ssn_create_endpoint', params), shell=True, check=True)
@@ -321,7 +321,7 @@ if __name__ == "__main__":
"--subnet_id {5} --iam_profile {6} --infra_tag_name {7}
--infra_tag_value {8} --instance_class {9} " \
"--primary_disk_size {10}".\
format(ssn_conf['instance_name'], ssn_conf['ssn_ami_id'],
os.environ['aws_ssn_instance_size'],
- os.environ['conf_key_name'],
os.environ['aws_security_groups_ids'], os.environ['aws_subnet_id'],
+ os.environ['conf_key_name'],
ssn_conf['aws_security_groups_ids'], ssn_conf['aws_subnet_id'],
ssn_conf['role_profile_name'], ssn_conf['tag_name'],
ssn_conf['instance_name'], 'ssn', '20')
try:
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]