This is an automated email from the ASF dual-hosted git repository.

lfrolov pushed a commit to branch DATALAB-2567
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit 60e3b3f2fa78c894d83ecbb9cb9f0ddc52df9cb1
Author: leonidfrolov <[email protected]>
AuthorDate: Mon Nov 1 14:54:26 2021 +0200

    [DATALAB-2567]: added openssh version update
---
 .../src/base/scripts/install_prerequisites.py          |  3 +++
 .../src/general/conf/datalab.ini                       |  3 +++
 .../src/general/lib/os/debian/common_lib.py            | 18 ++++++++++++++++++
 3 files changed, 24 insertions(+)

diff --git 
a/infrastructure-provisioning/src/base/scripts/install_prerequisites.py 
b/infrastructure-provisioning/src/base/scripts/install_prerequisites.py
index 354ad28..5e9ac24 100644
--- a/infrastructure-provisioning/src/base/scripts/install_prerequisites.py
+++ b/infrastructure-provisioning/src/base/scripts/install_prerequisites.py
@@ -60,6 +60,9 @@ if __name__ == "__main__":
         traceback.print_exc()
         sys.exit(1)
 
+    logging.info("Updating openssh to version")
+    ensure_openssh_version(args.user)
+
     logging.info("Installing python packages: {}".format(args.pip_packages))
     ensure_pip(args.pip_packages)
 
diff --git a/infrastructure-provisioning/src/general/conf/datalab.ini 
b/infrastructure-provisioning/src/general/conf/datalab.ini
index 017769c..c6b1ac4 100644
--- a/infrastructure-provisioning/src/general/conf/datalab.ini
+++ b/infrastructure-provisioning/src/general/conf/datalab.ini
@@ -60,7 +60,10 @@ allowed_ip_cidr = '0.0.0.0/0'
 network_type = public
 ### Additional tags in format 'Key1:Value1;Key2:Value2'
 # additional_tags =
+### pip version
 pip_version = 21.0.1
+### openssh version
+openssh_version = 8.8p1
 ### Billing tag key
 billing_tag_key = product
 ### Billing tag value
diff --git 
a/infrastructure-provisioning/src/general/lib/os/debian/common_lib.py 
b/infrastructure-provisioning/src/general/lib/os/debian/common_lib.py
index 71a1f32..79efb68 100644
--- a/infrastructure-provisioning/src/general/lib/os/debian/common_lib.py
+++ b/infrastructure-provisioning/src/general/lib/os/debian/common_lib.py
@@ -284,6 +284,24 @@ def find_java_path_local():
         traceback.print_exc()
         sys.exit(1)
 
+def ensure_openssh_version(os_user):
+    try:
+        if not 
exists(datalab.fab.conn,'/home/{}/.ensure_dir/openssh_version_ensured'.format(os_user)):
+            if os.environ['conf_openssh_version'] not in 
datalab.fab.conn.sudo('ssh -V').stdout:
+                datalab.fab.conn.sudo('mkdir /var/lib/sshd')
+                datalab.fab.conn.sudo('chmod -R 700 /var/lib/sshd/')
+                datalab.fab.conn.sudo('chown -R root:sys /var/lib/sshd/')
+                datalab.fab.conn.sudo('useradd -r -U -d /var/lib/sshd/ -c 
"sshd privsep" -s /bin/false sshd')
+                datalab.fab.conn.sudo('wget -c 
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-{0}.tar.gz '
+                                      '-O 
/tmp/openssh-{0}.tar.gz'.format(os.environ['conf_openssh_version']))
+                datalab.fab.conn.sudo('tar -xzf /tmp/openssh-{0}.tar.gz; cd 
/tmp/openssh-{0}; ./configure'.format(os.environ['conf_openssh_version']))
+                datalab.fab.conn.sudo('cd /tmp/openssh-{0}; 
make'.format(os.environ['conf_openssh_version']))
+                datalab.fab.conn.sudo('cd /tmp/openssh-{0}; make 
install'.format(os.environ['conf_openssh_version']))
+            datalab.fab.conn.sudo('touch 
/home/{}/.ensure_dir/openssh_version_ensured'.format(os_user))
+    except Exception as err:
+        logging.error('Updating openssh to version:', str(err))
+        traceback.print_exc()
+        sys.exit(1)
 
 def ensure_ntpd(os_user, edge_private_ip=''):
     try:

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to