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

Reply via email to