This is an automated email from the ASF dual-hosted git repository. omartushevskyi pushed a commit to branch DLAB-1467 in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/DLAB-1467 by this push: new f57ea18 [DLAB-1467]: Added terraform scripts for deploying DLab endpoint f57ea18 is described below commit f57ea18f75ecff944edf030a272fe670710dadf9 Author: Oleh Martushevskyi <oleh_martushevs...@epam.com> AuthorDate: Tue Feb 4 13:46:29 2020 +0200 [DLAB-1467]: Added terraform scripts for deploying DLab endpoint --- .../terraform/azure/endpoint/main/instance.tf | 2 +- .../terraform/azure/endpoint/main/outputs.tf | 2 +- .../terraform/azure/endpoint/main/variables.tf | 2 +- .../terraform/bin/deploy/endpoint_fab.py | 12 +++- infrastructure-provisioning/terraform/bin/dlab.py | 75 +++++++++++++++++++++- 5 files changed, 88 insertions(+), 5 deletions(-) diff --git a/infrastructure-provisioning/terraform/azure/endpoint/main/instance.tf b/infrastructure-provisioning/terraform/azure/endpoint/main/instance.tf index c5bc89d..989c32c 100644 --- a/infrastructure-provisioning/terraform/azure/endpoint/main/instance.tf +++ b/infrastructure-provisioning/terraform/azure/endpoint/main/instance.tf @@ -33,7 +33,7 @@ resource "azurerm_virtual_machine" "endpoint_instance" { location = data.azurerm_resource_group.data-endpoint-resource-group.location resource_group_name = data.azurerm_resource_group.data-endpoint-resource-group.name network_interface_ids = [azurerm_network_interface.endpoint-nif.id] - vm_size = var.endpoint_instance_shape + vm_size = var.endpoint_shape delete_os_disk_on_termination = true storage_image_reference { diff --git a/infrastructure-provisioning/terraform/azure/endpoint/main/outputs.tf b/infrastructure-provisioning/terraform/azure/endpoint/main/outputs.tf index bc5e20d..793917d 100644 --- a/infrastructure-provisioning/terraform/azure/endpoint/main/outputs.tf +++ b/infrastructure-provisioning/terraform/azure/endpoint/main/outputs.tf @@ -32,5 +32,5 @@ output "vpc_id" { } output "ssn_k8s_sg_id" { - value = azurerm_network_security_group.enpoint-sg.id + value = azurerm_network_security_group.enpoint-sg.name } \ No newline at end of file diff --git a/infrastructure-provisioning/terraform/azure/endpoint/main/variables.tf b/infrastructure-provisioning/terraform/azure/endpoint/main/variables.tf index b7b855f..a00ce18 100644 --- a/infrastructure-provisioning/terraform/azure/endpoint/main/variables.tf +++ b/infrastructure-provisioning/terraform/azure/endpoint/main/variables.tf @@ -53,7 +53,7 @@ variable "subnet_id" { variable "subnet_cidr" {} -variable "endpoint_instance_shape" {} +variable "endpoint_shape" {} variable "ami" { default = "Canonical_UbuntuServer_16.04-LTS" diff --git a/infrastructure-provisioning/terraform/bin/deploy/endpoint_fab.py b/infrastructure-provisioning/terraform/bin/deploy/endpoint_fab.py index 05077c5..0b9c5b6 100644 --- a/infrastructure-provisioning/terraform/bin/deploy/endpoint_fab.py +++ b/infrastructure-provisioning/terraform/bin/deploy/endpoint_fab.py @@ -126,7 +126,16 @@ def ensure_step_certs(): 'http://metadata/computeMetadata/v1/instance/network-interfaces/0/' 'ip').stdout.replace('\n', '') except: - public_ip_address = None + public_ip_address = None + elif args.cloud_provider == 'azure': + local_ip_address = conn.sudo('curl -s ' + 'http://169.254.169.254/latest/meta-data/local-ipv4').stdout.replace('\n', + '') + try: + public_ip_address = conn.sudo('curl -s http://169.254.169.254/latest/meta-data/' + 'public-ipv4').stdout.replace('\n', '') + except: + public_ip_address = None else: local_ip_address = None public_ip_address = None @@ -755,6 +764,7 @@ def init_args(): def update_system(): conn.sudo('apt-get update') + conn.sudo('apt-get install -y jq') def init_dlab_connection(ip=None, user=None, diff --git a/infrastructure-provisioning/terraform/bin/dlab.py b/infrastructure-provisioning/terraform/bin/dlab.py index 6100930..2d37683 100644 --- a/infrastructure-provisioning/terraform/bin/dlab.py +++ b/infrastructure-provisioning/terraform/bin/dlab.py @@ -1150,6 +1150,75 @@ class GCPEndpointBuilder(AbstractDeployBuilder): .add_str('--ssn_subnet', 'ID of AWS Subnet if you already have subnet created.', group='endpoint') .add_str('--subnet_id', 'ID of subnet', group='endpoint') .add_str('--ami', 'ID of EC2 AMI.', group='endpoint') + .add_str('--key_path', 'Path to public key', required=True, group='endpoint') + .add_str('--endpoint_id', 'Endpoint id.', required=True, group='endpoint') + .add_str('--region', 'Name of region.', group='endpoint') + .add_str('--endpoint_shape', 'Instance shape of Endpoint.', default='Standard_DS2_v2', group='endpoint') + .add_str('--endpoint_volume_size', 'Endpoint disk size', default='30', group='endpoint') + .add_str('--additional_tag', 'Additional tag.', default='product:dlab', group='endpoint') + .add_str('--ldap_host', 'ldap host', required=True, group='endpoint') + .add_str('--ldap_dn', 'ldap dn', required=True, group='endpoint') + .add_str('--ldap_user', 'ldap user', required=True, group='endpoint') + .add_str('--ldap_bind_creds', 'ldap bind creds', required=True, group='endpoint') + .add_str('--ldap_users_group', 'ldap users group', required=True, group='endpoint') + ) + return params.build() + + def deploy(self): + self.fill_sys_argv_from_file() + new_dir = os.path.abspath( + os.path.join(os.getcwd(), '../../../bin/deploy')) + os.chdir(new_dir) + start_deploy() + + +class AzureEndpointBuilder(AbstractDeployBuilder): + + def update_extracted_file_data(self, obj): + if 'ssn_vpc_id' in obj: + obj['vpc_id'] = obj['ssn_vpc_id'] + + @property + def name(self): + return 'endpoint' + + @property + def use_tf_output_file(self): + return True + + @property + def terraform_location(self): + tf_dir = os.path.abspath(os.path.join(os.getcwd(), os.path.pardir)) + return os.path.join(tf_dir, 'azure/endpoint/main') + + @property + def terraform_args_group_name(self): + return 'endpoint' + + def validate_params(self): + super(AzureEndpointBuilder, self).validate_params() + params = self.parse_args()[self.terraform_args_group_name] + if len(params.get('endpoint_id')) > 12: + sys.stderr.write('endpoint_id length should be less then 12') + sys.exit(1) + + @property + def cli_args(self): + params = ParamsBuilder() + (params + .add_bool('--no_color', 'no color console_output', group='service', + default=False) + .add_str('--state', 'State file path', group='service') + .add_str('--auth_file_path', 'Path to crdes file', required=True, group='endpoint') + .add_str('--pkey', 'path to key', required=True, group='service') + .add_str('--service_base_name', 'Service base name', group='endpoint') + .add_str('--resource_group_name', 'Resource group name', group='endpoint') + .add_str('--vpc_id', 'ID of VPC if you already have VPC created.', group='endpoint') + .add_str('--subnet_cidr', 'CIDR for Subnet creation. Conflicts with vpc_id.', default='172.31.0.0/24', + group='endpoint') + .add_str('--ssn_subnet', 'ID of AWS Subnet if you already have subnet created.', group='endpoint') + .add_str('--subnet_id', 'ID of subnet', group='endpoint') + .add_str('--ami', 'ID of EC2 AMI.', group='endpoint') .add_str('--path_to_pub_key', 'Path to public key', required=True, group='endpoint') .add_str('--endpoint_id', 'Endpoint id.', required=True, group='endpoint') .add_str('--region', 'Name of region.', group='endpoint') @@ -1205,7 +1274,8 @@ def deploy(): sources_targets = { 'aws': ['k8s', 'endpoint'], - 'gcp': ['k8s', 'endpoint'] + 'gcp': ['k8s', 'endpoint'], + 'azure': ['endpoint'] } no_args_error = ('usage: ./dlab {} {} {}\n'.format( @@ -1239,6 +1309,9 @@ def deploy(): 'gcp': { 'k8s': GCPK8sSourceBuilder, 'endpoint': GCPEndpointBuilder + }, + 'azure': { + 'endpoint': AzureEndpointBuilder } } builder = builders_dict[source][target]() --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org