diff --git a/ansible/roles/showroom/defaults/main.yml b/ansible/roles/showroom/defaults/main.yml index 1a89029d027..b3bd53f1491 100644 --- a/ansible/roles/showroom/defaults/main.yml +++ b/ansible/roles/showroom/defaults/main.yml @@ -137,3 +137,6 @@ showroom_pip_packages: showroom_work_dirs: - "{{ showroom_user_home_dir }}/content" # The showroom repo itself, asciidoc source e.g. Antora - "{{ showroom_user_home_dir }}/orchestration" # compose, kube files etc + +# Add a random path to the showroom endpoint ie. https://guid.sandbox1234.showroom.com/this-should-be-random/showroom +showroom_random_path: this-should-be-random diff --git a/ansible/roles/showroom/tasks/60-showroom-verify.yml b/ansible/roles/showroom/tasks/60-showroom-verify.yml index 71d3431b626..d1f142afada 100644 --- a/ansible/roles/showroom/tasks/60-showroom-verify.yml +++ b/ansible/roles/showroom/tasks/60-showroom-verify.yml @@ -6,7 +6,7 @@ - name: Capture lab_ui_url as fact ansible.builtin.set_fact: f_lab_ui_url: - "https://{{ showroom_host }}:{{ showroom_primary_port }}/{{ showroom_primary_path }}" + "https://{{ showroom_host }}:{{ showroom_primary_port }}/{{ showroom_random_path }}/{{ showroom_primary_path }}" - name: Output showroom view(s) URLs as userinfo and userdata agnosticd_user_info: diff --git a/ansible/roles/showroom/tasks/main.yml b/ansible/roles/showroom/tasks/main.yml index 50bce9293dc..405161e60e5 100644 --- a/ansible/roles/showroom/tasks/main.yml +++ b/ansible/roles/showroom/tasks/main.yml @@ -4,6 +4,11 @@ when: showroom_deploy | default(true) | bool block: + - name: Generate random showroom path if not provided + when: showroom_random_path is not defined or showroom_random_path in ['', 'this-should-be-random'] + ansible.builtin.set_fact: + showroom_random_path: "{{ lookup('password', '/dev/null', 'length=12', 'chars=ascii_letters,digits') | lower }}" + - name: Setup OS dependencies, packages ansible.builtin.include_tasks: file: 10-showroom-dependencies.yml diff --git a/ansible/roles/showroom/templates/base_service_traefik_httpd/base_service_traefik_httpd.j2 b/ansible/roles/showroom/templates/base_service_traefik_httpd/base_service_traefik_httpd.j2 index 8f84636e355..3359d28b5f0 100644 --- a/ansible/roles/showroom/templates/base_service_traefik_httpd/base_service_traefik_httpd.j2 +++ b/ansible/roles/showroom/templates/base_service_traefik_httpd/base_service_traefik_httpd.j2 @@ -32,6 +32,6 @@ showroom: - "traefik.http.services.showroom.loadbalancer.server.port=80" - "traefik.http.routers.entrypoints=showroomsecure" - "traefik.http.routers.showroom.tls.certresolver=le" - - "traefik.http.routers.showroom.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/showroom`)" + - "traefik.http.routers.showroom.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/{{ showroom_random_path }}/showroom`)" - "traefik.http.routers.showroom.middlewares=showroom-stripprefix" - - "traefik.http.middlewares.showroom-stripprefix.stripprefix.prefixes=/showroom" + - "traefik.http.middlewares.showroom-stripprefix.stripprefix.prefixes=/{{ showroom_random_path }}/showroom" diff --git a/ansible/roles/showroom/templates/service_codeserver/service_codeserver.j2 b/ansible/roles/showroom/templates/service_codeserver/service_codeserver.j2 index 95ea6259f6c..6a42e1b0398 100644 --- a/ansible/roles/showroom/templates/service_codeserver/service_codeserver.j2 +++ b/ansible/roles/showroom/templates/service_codeserver/service_codeserver.j2 @@ -17,6 +17,6 @@ codeserver: - "traefik.enable=true" - "traefik.http.services.vscode.loadbalancer.server.port=8080" - "traefik.http.routers.vscode.tls.certresolver=le" - - "traefik.http.routers.vscode.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/codeserver`)" + - "traefik.http.routers.vscode.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/{{ showroom_random_path }}/codeserver`)" - "traefik.http.routers.vscode.middlewares=vscode-stripprefix" - - "traefik.http.middlewares.vscode-stripprefix.stripprefix.prefixes=/codeserver" + - "traefik.http.middlewares.vscode-stripprefix.stripprefix.prefixes=/{{ showroom_random_path }}/codeserver" diff --git a/ansible/roles/showroom/templates/service_codeserver/tab_codeserver.j2 b/ansible/roles/showroom/templates/service_codeserver/tab_codeserver.j2 index 7153e8bfec3..69588769e87 100644 --- a/ansible/roles/showroom/templates/service_codeserver/tab_codeserver.j2 +++ b/ansible/roles/showroom/templates/service_codeserver/tab_codeserver.j2 @@ -1,3 +1,3 @@
- +
diff --git a/ansible/roles/showroom/templates/service_codeserver/tab_tty1.j2 b/ansible/roles/showroom/templates/service_codeserver/tab_tty1.j2 index 3d0bc3308f6..489c9fc04c5 100644 --- a/ansible/roles/showroom/templates/service_codeserver/tab_tty1.j2 +++ b/ansible/roles/showroom/templates/service_codeserver/tab_tty1.j2 @@ -1,3 +1,3 @@
- +
diff --git a/ansible/roles/showroom/templates/service_double_tty/service_double_tty.j2 b/ansible/roles/showroom/templates/service_double_tty/service_double_tty.j2 index 0a06cfddbe8..56d9ab8b7f0 100644 --- a/ansible/roles/showroom/templates/service_double_tty/service_double_tty.j2 +++ b/ansible/roles/showroom/templates/service_double_tty/service_double_tty.j2 @@ -27,10 +27,10 @@ tty-top: - "traefik.http.services.tty-top.loadbalancer.server.port=3000" - "traefik.http.routers.tty-topentrypoints=terminalsecure" - "traefik.http.routers.tty-top.tls.certresolver=le" - - "traefik.http.routers.tty-top.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/tty-top`)" + - "traefik.http.routers.tty-top.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/{{ showroom_random_path }}/tty-top`)" - "traefik.http.routers.tty-top.middlewares=terminal-stripprefix" - "traefik.http.routers.tty-top.middlewares=tty-toptheader" - - "traefik.http.middlewares.tty-top-stripprefix.stripprefix.prefixes=/tty-top" + - "traefik.http.middlewares.tty-top-stripprefix.stripprefix.prefixes=/{{ showroom_random_path }}/tty-top" - "traefik.http.middlewares.tty-toptheader.headers.customrequestheaders.X-Content-Type-Options=false" tty-bottom: @@ -62,8 +62,8 @@ tty-bottom: - "traefik.http.services.tty-bottom.loadbalancer.server.port=3000" - "traefik.http.routers.tty-bottomentrypoints=terminalsecure" - "traefik.http.routers.tty-bottom.tls.certresolver=le" - - "traefik.http.routers.tty-bottom.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/tty-bottom`)" + - "traefik.http.routers.tty-bottom.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/{{ showroom_random_path }}/tty-bottom`)" - "traefik.http.routers.tty-bottom.middlewares=terminal-stripprefix" - "traefik.http.routers.tty-bottom.middlewares=tty-bottomtheader" - - "traefik.http.middlewares.tty-bottom-stripprefix.stripprefix.prefixes=/tty-bottom" + - "traefik.http.middlewares.tty-bottom-stripprefix.stripprefix.prefixes=/{{ showroom_random_path }}/tty-bottom" - "traefik.http.middlewares.tty-bottomtheader.headers.customrequestheaders.X-Content-Type-Options=false" diff --git a/ansible/roles/showroom/templates/service_double_tty/tab_double_tty.j2 b/ansible/roles/showroom/templates/service_double_tty/tab_double_tty.j2 index ba62091076f..3b7936dedb7 100644 --- a/ansible/roles/showroom/templates/service_double_tty/tab_double_tty.j2 +++ b/ansible/roles/showroom/templates/service_double_tty/tab_double_tty.j2 @@ -1,7 +1,7 @@
+
diff --git a/ansible/roles/showroom/templates/service_single_terminal/service_single_terminal.j2 b/ansible/roles/showroom/templates/service_single_terminal/service_single_terminal.j2 index 375fdf4373f..8a949975f9b 100644 --- a/ansible/roles/showroom/templates/service_single_terminal/service_single_terminal.j2 +++ b/ansible/roles/showroom/templates/service_single_terminal/service_single_terminal.j2 @@ -27,8 +27,8 @@ terminal-01: - "traefik.http.services.terminal.loadbalancer.server.port=3000" - "traefik.http.routers.terminalentrypoints=terminalsecure" - "traefik.http.routers.terminal.tls.certresolver=le" - - "traefik.http.routers.terminal.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/wetty`)" + - "traefik.http.routers.terminal.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/{{ showroom_random_path }}/wetty`)" - "traefik.http.routers.terminal.middlewares=terminal-stripprefix" - "traefik.http.routers.terminal.middlewares=testheader" - - "traefik.http.middlewares.terminal-stripprefix.stripprefix.prefixes=/wetty" + - "traefik.http.middlewares.terminal-stripprefix.stripprefix.prefixes=/{{ showroom_random_path }}/wetty" - "traefik.http.middlewares.testheader.headers.customrequestheaders.X-Content-Type-Options=false" diff --git a/ansible/roles/showroom/templates/service_single_terminal/tab_single_terminal.j2 b/ansible/roles/showroom/templates/service_single_terminal/tab_single_terminal.j2 index 5cc673fcf8a..ebadd0e24a1 100644 --- a/ansible/roles/showroom/templates/service_single_terminal/tab_single_terminal.j2 +++ b/ansible/roles/showroom/templates/service_single_terminal/tab_single_terminal.j2 @@ -1,3 +1,3 @@
- +
diff --git a/ansible/roles/showroom/templates/service_triple_tty/service_triple_tty.j2 b/ansible/roles/showroom/templates/service_triple_tty/service_triple_tty.j2 index d0b042fcf1e..4591eefff65 100644 --- a/ansible/roles/showroom/templates/service_triple_tty/service_triple_tty.j2 +++ b/ansible/roles/showroom/templates/service_triple_tty/service_triple_tty.j2 @@ -27,10 +27,10 @@ tty-triple-top: - "traefik.http.services.tty-triple-top.loadbalancer.server.port=3000" - "traefik.http.routers.tty-triple-topentrypoints=terminalsecure" - "traefik.http.routers.tty-triple-top.tls.certresolver=le" - - "traefik.http.routers.tty-triple-top.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/tty-triple-top`)" + - "traefik.http.routers.tty-triple-top.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/{{ showroom_random_path }}/tty-triple-top`)" - "traefik.http.routers.tty-triple-top.middlewares=terminal-stripprefix" - "traefik.http.routers.tty-triple-top.middlewares=tty-triple-toptheader" - - "traefik.http.middlewares.tty-triple-top-stripprefix.stripprefix.prefixes=/tty-triple-top" + - "traefik.http.middlewares.tty-triple-top-stripprefix.stripprefix.prefixes=/{{ showroom_random_path }}/tty-triple-top" - "traefik.http.middlewares.tty-triple-toptheader.headers.customrequestheaders.X-Content-Type-Options=false" @@ -63,10 +63,10 @@ tty-triple-middle: - "traefik.http.services.tty-triple-middle.loadbalancer.server.port=3000" - "traefik.http.routers.tty-triple-middleentrypoints=terminalsecure" - "traefik.http.routers.tty-triple-middle.tls.certresolver=le" - - "traefik.http.routers.tty-triple-middle.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/tty-triple-middle`)" + - "traefik.http.routers.tty-triple-middle.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/{{ showroom_random_path }}/tty-triple-middle`)" - "traefik.http.routers.tty-triple-middle.middlewares=terminal-stripprefix" - "traefik.http.routers.tty-triple-middle.middlewares=tty-triple-middletheader" - - "traefik.http.middlewares.tty-triple-middle-stripprefix.stripprefix.prefixes=/tty-triple-middle" + - "traefik.http.middlewares.tty-triple-middle-stripprefix.stripprefix.prefixes=/{{ showroom_random_path }}/tty-triple-middle" - "traefik.http.middlewares.tty-triple-middletheader.headers.customrequestheaders.X-Content-Type-Options=false" @@ -99,8 +99,8 @@ tty-triple-bottom: - "traefik.http.services.tty-triple-bottom.loadbalancer.server.port=3000" - "traefik.http.routers.tty-triple-bottomentrypoints=terminalsecure" - "traefik.http.routers.tty-triple-bottom.tls.certresolver=le" - - "traefik.http.routers.tty-triple-bottom.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/tty-triple-bottom`)" + - "traefik.http.routers.tty-triple-bottom.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/{{ showroom_random_path }}/tty-triple-bottom`)" - "traefik.http.routers.tty-triple-bottom.middlewares=terminal-stripprefix" - "traefik.http.routers.tty-triple-bottom.middlewares=tty-triple-bottomtheader" - - "traefik.http.middlewares.tty-triple-bottom-stripprefix.stripprefix.prefixes=/tty-triple-bottom" + - "traefik.http.middlewares.tty-triple-bottom-stripprefix.stripprefix.prefixes=/{{ showroom_random_path }}/tty-triple-bottom" - "traefik.http.middlewares.tty-triple-bottomtheader.headers.customrequestheaders.X-Content-Type-Options=false" diff --git a/ansible/roles/showroom/templates/service_triple_tty/tab_triple_tty.j2 b/ansible/roles/showroom/templates/service_triple_tty/tab_triple_tty.j2 index 5dd8c5e7cfd..2fb68e86ddc 100644 --- a/ansible/roles/showroom/templates/service_triple_tty/tab_triple_tty.j2 +++ b/ansible/roles/showroom/templates/service_triple_tty/tab_triple_tty.j2 @@ -2,7 +2,7 @@
@@ -10,14 +10,14 @@
diff --git a/ansible/roles/showroom/templates/service_tty1/service_tty1.j2 b/ansible/roles/showroom/templates/service_tty1/service_tty1.j2 index 476fef5d4d6..8422120416d 100644 --- a/ansible/roles/showroom/templates/service_tty1/service_tty1.j2 +++ b/ansible/roles/showroom/templates/service_tty1/service_tty1.j2 @@ -27,8 +27,8 @@ tty1: - "traefik.http.services.tty1.loadbalancer.server.port=3000" - "traefik.http.routers.tty1entrypoints=terminalsecure" - "traefik.http.routers.tty1.tls.certresolver=le" - - "traefik.http.routers.tty1.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/tty1`)" + - "traefik.http.routers.tty1.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/{{ showroom_random_path }}/tty1`)" - "traefik.http.routers.tty1.middlewares=terminal-stripprefix" - "traefik.http.routers.tty1.middlewares=tty1theader" - - "traefik.http.middlewares.tty1-stripprefix.stripprefix.prefixes=/tty1" + - "traefik.http.middlewares.tty1-stripprefix.stripprefix.prefixes=/{{ showroom_random_path }}/tty1" - "traefik.http.middlewares.tty1theader.headers.customrequestheaders.X-Content-Type-Options=false" diff --git a/ansible/roles/showroom/templates/service_tty1/tab_tty1.j2 b/ansible/roles/showroom/templates/service_tty1/tab_tty1.j2 index 3d0bc3308f6..489c9fc04c5 100644 --- a/ansible/roles/showroom/templates/service_tty1/tab_tty1.j2 +++ b/ansible/roles/showroom/templates/service_tty1/tab_tty1.j2 @@ -1,3 +1,3 @@
- +
diff --git a/ansible/roles/showroom/templates/service_tty2/service_tty2.j2 b/ansible/roles/showroom/templates/service_tty2/service_tty2.j2 index d445b8515c5..9e08ada3044 100644 --- a/ansible/roles/showroom/templates/service_tty2/service_tty2.j2 +++ b/ansible/roles/showroom/templates/service_tty2/service_tty2.j2 @@ -27,8 +27,8 @@ tty2: - "traefik.http.services.tty2.loadbalancer.server.port=3000" - "traefik.http.routers.tty2entrypoints=terminalsecure" - "traefik.http.routers.tty2.tls.certresolver=le" - - "traefik.http.routers.tty2.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/tty2`)" + - "traefik.http.routers.tty2.rule=Host(`{{ showroom_host }}`) && PathPrefix(`/{{ showroom_random_path }}/tty2`)" - "traefik.http.routers.tty2.middlewares=terminal-stripprefix" - "traefik.http.routers.tty2.middlewares=tty2theader" - - "traefik.http.middlewares.tty2-stripprefix.stripprefix.prefixes=/tty2" + - "traefik.http.middlewares.tty2-stripprefix.stripprefix.prefixes=/{{ showroom_random_path }}/tty2" - "traefik.http.middlewares.tty2theader.headers.customrequestheaders.X-Content-Type-Options=false" diff --git a/ansible/roles/showroom/templates/service_tty2/tab_tty2.j2 b/ansible/roles/showroom/templates/service_tty2/tab_tty2.j2 index c899fdf3bfa..41dbc294f10 100644 --- a/ansible/roles/showroom/templates/service_tty2/tab_tty2.j2 +++ b/ansible/roles/showroom/templates/service_tty2/tab_tty2.j2 @@ -1,3 +1,3 @@
- +