From f23f45791b9370fba9b03ccb2a01723d2dc848cb Mon Sep 17 00:00:00 2001 From: Eesaan Atluri <atlurie@uab.edu> Date: Wed, 27 Nov 2024 07:04:57 -0500 Subject: [PATCH 1/8] feat: Add runtime config for ssh proxy This will override the defaults defined during the build --- ansible/proxy.yml | 6 ++++++ ansible/roles/ssh_proxy_config/tasks/main.yml | 13 +++++++++++++ .../templates/sshpiperd.yaml.j2 | 17 +++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 ansible/proxy.yml create mode 100644 ansible/roles/ssh_proxy_config/tasks/main.yml create mode 100644 ansible/roles/ssh_proxy_config/templates/sshpiperd.yaml.j2 diff --git a/ansible/proxy.yml b/ansible/proxy.yml new file mode 100644 index 0000000..c0173d1 --- /dev/null +++ b/ansible/proxy.yml @@ -0,0 +1,6 @@ +--- +- name: Define proxy config for deploys + hosts: all + become: true + roles: + - { name: 'ssh_proxy_config', tags: 'ssh_proxy_config' } diff --git a/ansible/roles/ssh_proxy_config/tasks/main.yml b/ansible/roles/ssh_proxy_config/tasks/main.yml new file mode 100644 index 0000000..b64f6e3 --- /dev/null +++ b/ansible/roles/ssh_proxy_config/tasks/main.yml @@ -0,0 +1,13 @@ +--- +- name: Configure sshpiper yaml plugin + ansible.builtin.template: + src: sshpiperd.yaml.j2 + dest: "{{ sshpiper_dest_dir }}/sshpiperd.yaml" + backup: true + +- name: Enable and start sshpiper service + ansible.builtin.service: + name: sshpiperd + enabled: true + state: started + diff --git a/ansible/roles/ssh_proxy_config/templates/sshpiperd.yaml.j2 b/ansible/roles/ssh_proxy_config/templates/sshpiperd.yaml.j2 new file mode 100644 index 0000000..0060a97 --- /dev/null +++ b/ansible/roles/ssh_proxy_config/templates/sshpiperd.yaml.j2 @@ -0,0 +1,17 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/tg123/sshpiper/master/plugin/yaml/schema.json +version: "1.0" +pipes: +{% for group in target_groups %} +- from: + - groupname: "{{group.name}}" + authorized_keys: {{ group.authorized_keys }} + to: + host: {{ group.host }} + ignore_hostkey: true + private_key: {{ group.private_key }} +- from: + - groupname: "{{group.name}}" + to: + host: {{ group.host }} + ignore_hostkey: true +{% endfor %} -- GitLab From 5a1edcdd2fd9f80f82b98dc099664323b5adc48d Mon Sep 17 00:00:00 2001 From: Eesaan Atluri <atlurie@uab.edu> Date: Wed, 27 Nov 2024 11:52:58 -0500 Subject: [PATCH 2/8] feat: Add default case in sshpiper template --- .../templates/sshpiperd.yaml.j2 | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/ansible/roles/ssh_proxy_config/templates/sshpiperd.yaml.j2 b/ansible/roles/ssh_proxy_config/templates/sshpiperd.yaml.j2 index 0060a97..4597108 100644 --- a/ansible/roles/ssh_proxy_config/templates/sshpiperd.yaml.j2 +++ b/ansible/roles/ssh_proxy_config/templates/sshpiperd.yaml.j2 @@ -2,16 +2,27 @@ version: "1.0" pipes: {% for group in target_groups %} +{% if not group.default %} - from: - - groupname: "{{group.name}}" - authorized_keys: {{ group.authorized_keys }} + - groupname: "{{ group.name }}" + authorized_keys: "{{ group.authorized_keys }}" to: - host: {{ group.host }} + host: "{{ group.host }}" ignore_hostkey: true - private_key: {{ group.private_key }} + private_key: "{{ group.private_key }}" - from: - - groupname: "{{group.name}}" + - groupname: "{{ group.name }}" to: - host: {{ group.host }} + host: "{{ group.host }}" ignore_hostkey: true +{% else %} +- from: + - username: ".*" # catch all + username_regex_match: true + authorized_keys: "{{ group.authorized_keys }}" + to: + host: "{{ group.host }}" + ignore_hostkey: true + private_key: "{{ group.private_key }}" +{% endif %} {% endfor %} -- GitLab From 9af20f969e3680adb5a1bfd935222bdf43b37f9e Mon Sep 17 00:00:00 2001 From: Eesaan Atluri <atlurie@uab.edu> Date: Wed, 27 Nov 2024 11:56:07 -0500 Subject: [PATCH 3/8] feat: Change the order of the vars for the template --- ansible/group_vars/prod | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/group_vars/prod b/ansible/group_vars/prod index 7c7964e..5c694d2 100644 --- a/ansible/group_vars/prod +++ b/ansible/group_vars/prod @@ -17,3 +17,8 @@ bright_openldap_path: "/cm/local/apps/openldap" ldap_cert_path: "{{bright_openldap_path}}/etc/certs" ldap_uri: "ldaps://ldapserver" + + # proxy_config + target_groups: + - {"name": "gpfs5", "host": "login002", "default": False, "authorized_keys":"/gpfs5/data/user/home/$DOWNSTREAM_USER/.ssh/authorized_keys", "private_key":"/gpfs5/data/user/home/$DOWNSTREAM_USER/.ssh/id_ecdsa"} + - {"name": "gpfs4", "host": "login001", "default": True, "authorized_keys":"/gpfs4/data/user/home/$DOWNSTREAM_USER/.ssh/authorized_keys", "private_key":"/gpfs4/data/user/home/$DOWNSTREAM_USER/.ssh/id_ecdsa"} -- GitLab From ab146f844d7cab36a3ccb0501dbf0c9c0deb7adf Mon Sep 17 00:00:00 2001 From: Eesaan Atluri <atlurie@uab.edu> Date: Wed, 27 Nov 2024 11:57:57 -0500 Subject: [PATCH 4/8] feat: Restart the sshpiperd after config change --- ansible/roles/ssh_proxy_config/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/ssh_proxy_config/tasks/main.yml b/ansible/roles/ssh_proxy_config/tasks/main.yml index b64f6e3..d3ec3bd 100644 --- a/ansible/roles/ssh_proxy_config/tasks/main.yml +++ b/ansible/roles/ssh_proxy_config/tasks/main.yml @@ -9,5 +9,5 @@ ansible.builtin.service: name: sshpiperd enabled: true - state: started + state: restarted -- GitLab From 2abd3c9dbcac51f53e5bb06830cf4332a412f439 Mon Sep 17 00:00:00 2001 From: Eesaan Atluri <atlurie@uab.edu> Date: Wed, 27 Nov 2024 12:45:37 -0500 Subject: [PATCH 5/8] feat: Add role to override sshpiper config from build --- ansible/cluster.yml | 1 + ansible/group_vars/prod | 1 + ansible/proxy.yml | 6 ------ 3 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 ansible/proxy.yml diff --git a/ansible/cluster.yml b/ansible/cluster.yml index 609d2fa..a84fec6 100644 --- a/ansible/cluster.yml +++ b/ansible/cluster.yml @@ -8,3 +8,4 @@ - { name: 'ldap_config', tags: 'ldap_config' } - { name: 'slurm_client', tags: 'slurm_client', when: enable_slurm_client } - { name: 'ssh_host_keys', tags: 'ssh_host_keys' } + - { name: 'ssh_proxy_config', tags: 'ssh_proxy_config', when: enable_ssh_proxy_config } diff --git a/ansible/group_vars/prod b/ansible/group_vars/prod index 5c694d2..b08e50f 100644 --- a/ansible/group_vars/prod +++ b/ansible/group_vars/prod @@ -19,6 +19,7 @@ ldap_uri: "ldaps://ldapserver" # proxy_config + enable_ssh_proxy_config: true target_groups: - {"name": "gpfs5", "host": "login002", "default": False, "authorized_keys":"/gpfs5/data/user/home/$DOWNSTREAM_USER/.ssh/authorized_keys", "private_key":"/gpfs5/data/user/home/$DOWNSTREAM_USER/.ssh/id_ecdsa"} - {"name": "gpfs4", "host": "login001", "default": True, "authorized_keys":"/gpfs4/data/user/home/$DOWNSTREAM_USER/.ssh/authorized_keys", "private_key":"/gpfs4/data/user/home/$DOWNSTREAM_USER/.ssh/id_ecdsa"} diff --git a/ansible/proxy.yml b/ansible/proxy.yml deleted file mode 100644 index c0173d1..0000000 --- a/ansible/proxy.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -- name: Define proxy config for deploys - hosts: all - become: true - roles: - - { name: 'ssh_proxy_config', tags: 'ssh_proxy_config' } -- GitLab From 9b65897545ee74643cf9b7f0711080ddf3c7480f Mon Sep 17 00:00:00 2001 From: Eesaan Atluri <atlurie@uab.edu> Date: Wed, 27 Nov 2024 12:47:57 -0500 Subject: [PATCH 6/8] feat: Change the flag to default to false --- ansible/group_vars/prod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/group_vars/prod b/ansible/group_vars/prod index b08e50f..05bc829 100644 --- a/ansible/group_vars/prod +++ b/ansible/group_vars/prod @@ -19,7 +19,7 @@ ldap_uri: "ldaps://ldapserver" # proxy_config - enable_ssh_proxy_config: true + enable_ssh_proxy_config: false target_groups: - {"name": "gpfs5", "host": "login002", "default": False, "authorized_keys":"/gpfs5/data/user/home/$DOWNSTREAM_USER/.ssh/authorized_keys", "private_key":"/gpfs5/data/user/home/$DOWNSTREAM_USER/.ssh/id_ecdsa"} - {"name": "gpfs4", "host": "login001", "default": True, "authorized_keys":"/gpfs4/data/user/home/$DOWNSTREAM_USER/.ssh/authorized_keys", "private_key":"/gpfs4/data/user/home/$DOWNSTREAM_USER/.ssh/id_ecdsa"} -- GitLab From 8ab053e73140b22913df7e0b045f8961c0201880 Mon Sep 17 00:00:00 2001 From: Eesaan Atluri <atlurie@uab.edu> Date: Wed, 27 Nov 2024 12:55:47 -0500 Subject: [PATCH 7/8] feat: Move the flag to group_vars/all --- ansible/group_vars/all | 3 +++ ansible/group_vars/prod | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/group_vars/all b/ansible/group_vars/all index 78a9c64..5d41844 100644 --- a/ansible/group_vars/all +++ b/ansible/group_vars/all @@ -42,3 +42,6 @@ # AWS credentials LTS_ACCESS_KEY: "" LTS_SECRET_KEY: "" + +# ssh proxy + enable_ssh_proxy_config: false diff --git a/ansible/group_vars/prod b/ansible/group_vars/prod index 05bc829..5c694d2 100644 --- a/ansible/group_vars/prod +++ b/ansible/group_vars/prod @@ -19,7 +19,6 @@ ldap_uri: "ldaps://ldapserver" # proxy_config - enable_ssh_proxy_config: false target_groups: - {"name": "gpfs5", "host": "login002", "default": False, "authorized_keys":"/gpfs5/data/user/home/$DOWNSTREAM_USER/.ssh/authorized_keys", "private_key":"/gpfs5/data/user/home/$DOWNSTREAM_USER/.ssh/id_ecdsa"} - {"name": "gpfs4", "host": "login001", "default": True, "authorized_keys":"/gpfs4/data/user/home/$DOWNSTREAM_USER/.ssh/authorized_keys", "private_key":"/gpfs4/data/user/home/$DOWNSTREAM_USER/.ssh/id_ecdsa"} -- GitLab From b7bc7f322013d855ce08e1decb08cf9eb16dd2ea Mon Sep 17 00:00:00 2001 From: Eesaan Atluri <atlurie@uab.edu> Date: Wed, 27 Nov 2024 13:18:25 -0500 Subject: [PATCH 8/8] feat: Add missing var --- ansible/group_vars/all | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/group_vars/all b/ansible/group_vars/all index 5d41844..2e8fa6c 100644 --- a/ansible/group_vars/all +++ b/ansible/group_vars/all @@ -45,3 +45,4 @@ # ssh proxy enable_ssh_proxy_config: false + sshpiper_dest_dir: "/opt/sshpiper" -- GitLab