From 1ab7f5cd5a6ad8799050def09884e3823e556aa0 Mon Sep 17 00:00:00 2001 From: Thijs Kinkhorst Date: Fri, 29 May 2026 16:12:42 +0200 Subject: [PATCH] Drop the application teams. It has been replaced with invite. --- README.md | 1 - environments/template/group_vars/all.yml | 1 - environments/template/group_vars/template.yml | 30 ---- environments/template/inventory | 3 - .../template/secrets/secret_example.yml | 3 - provision.yml | 7 - roles/hosts/tasks/main.yml | 1 - roles/rsyslog/templates/sc_ruleset.conf.j2 | 2 - roles/rsyslog/templates/sc_template.conf.j2 | 2 - roles/teams/defaults/main.yml | 33 ----- roles/teams/handlers/main.yml | 9 -- roles/teams/tasks/main.yml | 101 -------------- roles/teams/templates/logback.xml.j2 | 29 ---- .../teams/templates/serverapplication.yml.j2 | 131 ------------------ roles/teams/vars/main.yml | 14 -- .../welcome/files/site/images/teams-logo.png | Bin 6761 -> 0 bytes roles/welcome/templates/site/index.html | 18 --- 17 files changed, 385 deletions(-) delete mode 100644 roles/teams/defaults/main.yml delete mode 100644 roles/teams/handlers/main.yml delete mode 100644 roles/teams/tasks/main.yml delete mode 100644 roles/teams/templates/logback.xml.j2 delete mode 100644 roles/teams/templates/serverapplication.yml.j2 delete mode 100644 roles/teams/vars/main.yml delete mode 100644 roles/welcome/files/site/images/teams-logo.png diff --git a/README.md b/README.md index a6623af49..88a3628c1 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,6 @@ Every application has a seperate role to install it. The following roles can be | myconext | eduID | | profile | Profile page | | manage | Entity registration | -| teams | Group membership app | | mujina | Mujina IdP | | voot | Voot membership API | | pdp | Policy Decicions API | diff --git a/environments/template/group_vars/all.yml b/environments/template/group_vars/all.yml index 1d8bd6f84..705f2aa22 100644 --- a/environments/template/group_vars/all.yml +++ b/environments/template/group_vars/all.yml @@ -52,7 +52,6 @@ engine_attribute_aggregation_password: "{{ aa.eb_password }}" # Some deprovision variables are shared between applications authz_server_api_lifecycle_username: authz_server_api_lifecycle_user -teams_api_lifecycle_username: teams_api_lifecycle_user attribute_aggregator_api_lifecycle_username: attribute_aggregator_api_lifecycle_user engine_api_deprovision_user: lifecycle lifecycle_api_username: lifecycle diff --git a/environments/template/group_vars/template.yml b/environments/template/group_vars/template.yml index dc2642d3b..b5a544036 100644 --- a/environments/template/group_vars/template.yml +++ b/environments/template/group_vars/template.yml @@ -38,8 +38,6 @@ mujina_version: "8.0.2" oidcng_version: "6.1.6" pdp_version: "7.3.0" profile_version: "3.1.4" -teams_gui_version: "9.1.3" -teams_server_version: "9.1.3" voot_version: "6.2.0" myconext_version: "8.1.12-1" dashboard_version: "13.0.11" @@ -53,14 +51,12 @@ statistics_version: "1.1.7" databases: names: - - teams - "{{ engine_database_name }}" - pdp-server - aaserver - shibboleth - eb_logins users: - - { name: teamsrw, db_name: teams, password: "{{ mysql_passwords.teams }}" } - { name: "{{ engine_database_user }}", db_name: "{{ engine_database_name }}", password: "{{ mysql_passwords.eb }}" } - { name: pdp-serverrw, db_name: pdp-server, password: "{{ mysql_passwords.pdp_server }}" } - { name: aa-serverrw, db_name: aaserver, password: "{{ mysql_passwords.aa_server }}" } @@ -110,22 +106,6 @@ profile_apache_symfony_environment: prod # Engine's assertion signing certificate: engine_profile_idp_certificate: /etc/openconext/engineblock.crt -teams: - db_name: "teams" - db_user: "teamsrw" - db_password: "{{ mysql_passwords.teams }}" - db_host: "{{ mariadb_host }}" - group_name_context: "urn:collab:group:{{ base_domain }}:" - voot_api_user: "voot" - spdashboard_api_user: "spdashboard" - spdashboard_person_urn: "urn:collab:person:surfnet.nl:sp-dashboard-C133A36F-CFCA-4F3D-87CE-7ECE29773FE0" - product_name: "OpenConext Teams" - default_stem_name: "demo:openconext:org" - feature_invite_migration_on: False - super_admins_team_urns: - - "nl:surfnet:diensten:teams_super_users" - - "nl:surfnet:diensten:teams_super_admin_users" - engineblock: idp_url: https://engine.{{ base_domain }}/authentication/idp/single-sign-on idp_entity_id: https://engine.{{ base_domain }}/authentication/idp/metadata @@ -402,9 +382,6 @@ loadbalancing: metadata: port: 409 - teams: - port: 601 - oidc_playground: port: 619 @@ -483,13 +460,6 @@ haproxy_applications: servers: "{{docker_servers}}" restricted: yes - - name: teams - vhost_name: teams.{{ base_domain }} - ha_method: "GET" - ha_url: "/api/teams/health" - port: "{{ loadbalancing.teams.port }}" - servers: "{{docker_servers}}" - - name: oidc_playground vhost_name: "oidc-playground.{{ base_domain }}" ha_method: "GET" diff --git a/environments/template/inventory b/environments/template/inventory index f1b3dabed..b6e736941 100644 --- a/environments/template/inventory +++ b/environments/template/inventory @@ -84,9 +84,6 @@ docker2.example.com [docker_invite:children] docker_apps1 -[docker_teams:children] -docker_apps1 - [docker_pdp:children] docker_apps1 diff --git a/environments/template/secrets/secret_example.yml b/environments/template/secrets/secret_example.yml index da8690cfa..8b8e69309 100644 --- a/environments/template/secrets/secret_example.yml +++ b/environments/template/secrets/secret_example.yml @@ -1,7 +1,6 @@ mysql_root_password: secret mysql_passwords: - teams: secret eb: secret pdp_server: secret aa_server: secret @@ -36,7 +35,6 @@ engine_parameters_secret: secretsecretsecretsecretsecretsecret # need 32 chars profile_secret: secret -teams_authz_client_secret: secret teams_migration_secret_key: secret voot_resource_checking_secret: secret @@ -45,7 +43,6 @@ voot_oidcng_checkToken_secret: secret external_group_provider_secrets: teams: secret -teams_api_lifecycle_password: secret teams_api_spdashboard_password: secret attribute_aggregator_api_lifecycle_password: secret diff --git a/provision.yml b/provision.yml index 3b26963a5..815d62ee2 100644 --- a/provision.yml +++ b/provision.yml @@ -283,13 +283,6 @@ - role: stepupwebauthn tags: ['stepupwebauthn', 'stepup'] -- name: Deploy teams app - hosts: docker_teams - become: true - roles: - - teams - tags: ['teams'] - - name: Deploy voot app hosts: docker_voot become: true diff --git a/roles/hosts/tasks/main.yml b/roles/hosts/tasks/main.yml index 14e36b308..3c8ce29c7 100644 --- a/roles/hosts/tasks/main.yml +++ b/roles/hosts/tasks/main.yml @@ -20,7 +20,6 @@ - "aa.vm.openconext.org" - "link.vm.openconext.org" - "connect.vm.openconext.org" - - "teams.vm.openconext.org" - "manage.vm.openconext.org" - name: Set logstash in hostsfile diff --git a/roles/rsyslog/templates/sc_ruleset.conf.j2 b/roles/rsyslog/templates/sc_ruleset.conf.j2 index 86a0e5457..34d5392dd 100644 --- a/roles/rsyslog/templates/sc_ruleset.conf.j2 +++ b/roles/rsyslog/templates/sc_ruleset.conf.j2 @@ -19,8 +19,6 @@ if $programname == "engineblock" and $msg contains '{"channel":"authentication"' :programname, isequal, "pdp" { action(type="omfile" DynaFile="pdp-{{ item.name }}" {{ rsyslog_dir_file_modes }} ) stop } if $programname == "profile" and $msg startswith "{" then { action(type="omfile" DynaFile="profile-{{ item.name }}" {{ rsyslog_dir_file_modes }} ) stop } :programname, isequal, "profile" { action(type="omfile" DynaFile="apache-profile-{{ item.name }}" {{ rsyslog_dir_file_modes }} ) stop } -:programname, isequal, "teamsserver" { action(type="omfile" DynaFile="teams-{{ item.name }}" {{ rsyslog_dir_file_modes }} ) stop } -:programname, isequal, "teamsgui" { action(type="omfile" DynaFile="apache-teams-{{ item.name }}" {{ rsyslog_dir_file_modes }} ) stop } :programname, isequal, "vootserver" { action(type="omfile" DynaFile="voot-{{ item.name }}" {{ rsyslog_dir_file_modes }} ) stop } :programname, isequal, "mariadbd" { action(type="omfile" DynaFile="galera-{{ item.name }}" {{ rsyslog_dir_file_modes }} ) stop } :programname, isequal, "garb-systemd" { action(type="omfile" DynaFile="haproxy-{{ item.name }}" {{ rsyslog_dir_file_modes }} ) stop } diff --git a/roles/rsyslog/templates/sc_template.conf.j2 b/roles/rsyslog/templates/sc_template.conf.j2 index d6b765f0a..3a47df0a6 100644 --- a/roles/rsyslog/templates/sc_template.conf.j2 +++ b/roles/rsyslog/templates/sc_template.conf.j2 @@ -14,8 +14,6 @@ $template pdpanalytics-{{ item.name }}, "{{ rsyslog_dir }}/apps/{{ item.name }}/ $template apache-pdp-{{ item.name }}, "{{ rsyslog_dir }}/apps/{{ item.name }}/pdp/apache.log" $template profile-{{ item.name }}, "{{ rsyslog_dir }}/apps/{{ item.name }}/profile/profile.log" $template apache-profile-{{ item.name }}, "{{ rsyslog_dir }}/apps/{{ item.name }}/profile/apache.log" -$template teams-{{ item.name }}, "{{ rsyslog_dir }}/apps/{{ item.name }}/teams/teams.log" -$template apache-teams-{{ item.name }}, "{{ rsyslog_dir }}/apps/{{ item.name }}/teams/apache.log" $template voot-{{ item.name }}, "{{ rsyslog_dir }}/apps/{{ item.name }}/voot/voot.log" $template apache-voot-{{ item.name }}, "{{ rsyslog_dir }}/apps/{{ item.name }}/voot/apache.log" $template galera-{{ item.name }}, "{{ rsyslog_dir }}/apps/{{ item.name }}/galera/galera.log" diff --git a/roles/teams/defaults/main.yml b/roles/teams/defaults/main.yml deleted file mode 100644 index c0e6deeb3..000000000 --- a/roles/teams/defaults/main.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -teams_dir: /opt/teams -teams_cronjobmaster: true -teams_help_link_en: https://example.org -teams_help_link_nl: https://example.org -teams_help_link_pt: https://example.org -teams_tos_en: https://example.org -teams_tos_nl: https://example.org -teams_tos_pt: https://example.org -teams_main_link: https://www.openconext.org -teams_organization: "{{ instance_name }}" -teams_api_lifecycle_username: teams_api_lifecycle_user -teams_oauth2_token_url: "https://connect.{{ base_domain }}/oidc/token" -teams_authz_client_id: "teams.{{ base_domain }}" -teams_manage_provision_oidcrp_name_en: "Teams client credentials client for VOOT access" -teams_manage_provision_oidcrp_description_en: "OAuth client to access VOOT for group information" -teams_manage_provision_oidcrp_grants: "client_credentials" -teams_manage_provision_oidcrp_state: "prodaccepted" -teams_manage_provision_oidcrp_scopes: "groups" -teams_manage_provision_oidcrp_allowed_resource_servers: '{"name": "{{ voot.oidcng_checkToken_clientId }}"}' -teams_manage_provision_samlsp_client_id: "https://teams.{{ base_domain }}/shibboleth" -teams_manage_provision_samlsp_name_en: "{{ instance_name }} Teams" -teams_manage_provision_samlsp_description_en: "{{ instance_name }} Teams application for group memberships" -teams_manage_provision_samlsp_acs_location: "https://teams.{{ base_domain }}/Shibboleth.sso/SAML2/POST" -teams_manage_provision_samlsp_metadata_url: "https://teams.{{ base_domain }}/Shibboleth.sso/Metadata" -teams_manage_provision_samlsp_sp_cert: "" -teams_manage_provision_samlsp_trusted_proxy: false -teams_manage_provision_samlsp_sign: false -teams_spring_flyway_enabled: true -teams_docker_networks: - - name: "loadbalancer" -teams_server_restart_policy: always -teams_server_restart_retries: 0 diff --git a/roles/teams/handlers/main.yml b/roles/teams/handlers/main.yml deleted file mode 100644 index d866b5d27..000000000 --- a/roles/teams/handlers/main.yml +++ /dev/null @@ -1,9 +0,0 @@ -- name: restart teamsserver - community.docker.docker_container: - name: teamsserver - state: started - restart: true - # avoid restarting it creates unexpected data loss according to docker_container_module notes - comparisons: - '*': ignore - when: teamsserverontainer is success and teamsserverontainer is not change diff --git a/roles/teams/tasks/main.yml b/roles/teams/tasks/main.yml deleted file mode 100644 index 498c99d4c..000000000 --- a/roles/teams/tasks/main.yml +++ /dev/null @@ -1,101 +0,0 @@ ---- -- name: Create directory to keep configfile - ansible.builtin.file: - dest: "/opt/openconext/teams" - state: directory - owner: root - group: root - mode: "0770" - -- name: Place the serverapplication configfiles - ansible.builtin.template: - src: "{{ item }}.j2" - dest: /opt/openconext/teams/{{ item }} - owner: root - group: root - mode: "0644" - with_items: - - serverapplication.yml - - logback.xml - notify: restart teamsserver - -- name: Add the MariaDB docker network to the list of networks when MariaDB runs in Docker - ansible.builtin.set_fact: - teams_docker_networks: - - name: loadbalancer - - name: openconext_mariadb - when: mariadb_in_docker | default(false) | bool - -- name: Create and start the server container - community.docker.docker_container: - name: teamsserver - env: - TZ: "{{ timezone }}" - image: ghcr.io/openconext/openconext-teams-ng/teams-server:{{ teams_server_version }} - pull: true - restart_policy: "{{ teams_server_restart_policy }}" - restart_retries: "{{ teams_server_restart_retries }}" # Only for restart policy on-failure - state: started - networks: "{{ teams_docker_networks }}" - mounts: - - source: /opt/openconext/teams/serverapplication.yml - target: /application.yml - type: bind - - source: /opt/openconext/teams/logback.xml - target: /logback.xml - type: bind - command: "-Xmx512m --spring.config.location=./" - etc_hosts: - host.docker.internal: host-gateway - healthcheck: - test: - [ - "CMD", - "wget", - "-no-verbose", - "--tries=1", - "--spider", - "http://localhost:8080/internal/health", - ] - interval: 10s - timeout: 10s - retries: 3 - start_period: 10s - register: teamsserverontainer - -- name: Create the gui container - community.docker.docker_container: - name: teamsgui - image: ghcr.io/openconext/openconext-teams-ng/teams-gui:{{ teams_gui_version }} - pull: true - restart_policy: "always" - state: started - networks: - - name: "loadbalancer" - labels: - traefik.http.routers.teamsgui.rule: "Host(`teams.{{ base_domain }}`)" - traefik.http.routers.teamsgui.tls: "true" - traefik.enable: "true" - healthcheck: - test: ["CMD", "curl", "--fail", "http://localhost/internal/health"] - interval: 10s - timeout: 10s - retries: 3 - start_period: 10s - hostname: teams - mounts: - - source: /etc/localtime - target: /etc/localtime - type: bind - - source: /opt/openconext/common/favicon.ico - target: /var/www/favicon.ico - type: bind - env: - HTTPD_CSP: "{{ httpd_csp.strict_with_static_img }}" - HTTPD_SERVERNAME: "teams.{{ base_domain }}" - OPENCONEXT_INSTANCENAME: "{{ instance_name }}" - OPENCONEXT_ENGINE_LOGOUT_URL: "https://engine.{{ base_domain }}/logout" - OPENCONEXT_HELP_EMAIL: "{{ support_email }}" - SHIB_ENTITYID: "https://teams.{{ base_domain }}/shibboleth" - SHIB_REMOTE_ENTITYID: "https://engine.{{ base_domain }}/authentication/idp/metadata" - SHIB_REMOTE_METADATA: "{{ shibboleth_metadata_sources.engine }}" diff --git a/roles/teams/templates/logback.xml.j2 b/roles/teams/templates/logback.xml.j2 deleted file mode 100644 index b9c559d4f..000000000 --- a/roles/teams/templates/logback.xml.j2 +++ /dev/null @@ -1,29 +0,0 @@ -#jinja2:lstrip_blocks: True - - - - - - %d{ISO8601} %5p [%t] %logger{40}:%L - %m%n - - - - - {{ smtp_server }} - {{ noreply_email }} - {{ error_mail_to }} - {{ error_subject_prefix }}Unexpected error teams - - - - ERROR - - - - - - - - - - diff --git a/roles/teams/templates/serverapplication.yml.j2 b/roles/teams/templates/serverapplication.yml.j2 deleted file mode 100644 index f1a4088be..000000000 --- a/roles/teams/templates/serverapplication.yml.j2 +++ /dev/null @@ -1,131 +0,0 @@ -# The logging configuration. -logging: - config: file:///logback.xml - level: - org.hibernate.SQL: INFO - -api: - lifecycle: - username: {{ teams_api_lifecycle_username }} - password: "{{ teams_api_lifecycle_password }}" - -secure_cookie: true - -server: - port: 8080 - error: - path: "/error" - servlet: - session: - timeout: 28800 - cookie: - secure: true - server-header: no - -config: - support-email: {{ support_email }} - help-link-en: {{ teams_help_link_en }} - help-link-nl: {{ teams_help_link_nl }} - help-link-pt: {{ teams_help_link_pt }} - help-tos-en: {{ teams_tos_en }} - help-tos-nl: {{ teams_tos_nl }} - help-tos-pt: {{ teams_tos_pt }} - main-link: {{ teams_main_link }} - organization: {{ teams_organization }} - sponsor: {{ sponsor_name }} - supported_language_codes: {{ supported_language_codes }} - -features: - invite-migration-on: {{ teams.feature_invite_migration_on }} - -security: - user: - name: "{{ teams.voot_api_user }}" - password: "{{ external_group_provider_secrets.teams }}" - -sp_dashboard: - user-name: "{{ teams.spdashboard_api_user }}" - password: "{{ teams_api_spdashboard_password }}" - person-urn: "{{ teams.spdashboard_person_urn }}" - name: "SP Dashboard" - email: "{{ support_email }}" - -# Is this node in a load-balanced topology responsible for cleaning up resources (See ExpiredInvitationsRemover) -cron: - node-cron-job-responsible: {{ teams_cronjobmaster }} - expression: "0 0/15 * * * ?" - -teams: - default-stem-name: "{{ teams.default_stem_name }}" - group-name-context: "{{ teams.group_name_context }}" - product-name: "{{ teams.product_name }}" - non-guest-member-of: "{{ guest_qualifier }}" - -super_admins_team: - urns: - {% for value in teams.super_admins_team_urns %} -- "{{ value }}" - {% endfor %} - -voot: - serviceUrl: https://voot.{{ base_domain }} - accessTokenUri: "{{ teams_oauth2_token_url }}" - clientId: "{{ teams_authz_client_id }}" - clientSecret: "{{ teams_authz_client_secret }}" - scopes: "{{ teams_manage_provision_oidcrp_scopes }}" - -invite: - url: "https://invite.{{ base_domain }}/api/external/v1/teams" - user: "{{ invite.teamsuser }}" - password: "{{ invite.teamssecret }}" - -spring: - session: - store-type: jdbc - jdbc: - schema: classpath:org/springframework/session/jdbc/schema-mysql.sql - initialize-schema: always - cleanup-cron: "{% if teams_cronjobmaster %}0 13 * * * *{% else %}-{% endif %}" - jpa: - open-in-view: true - properties: - hibernate: - naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy - datasource: - driver-class-name: org.mariadb.jdbc.Driver - url: jdbc:mariadb://{{ teams.db_host }}/{{ teams.db_name }}?socketTimeout=30000 - username: {{ teams.db_user }} - password: "{{ teams.db_password }}" - mail: - host: {{ smtp_server }} - port: 25 - main: - banner-mode: "off" - flyway: - enabled: {{ teams_spring_flyway_enabled }} - validate-on-migrate: false - table: schema_version - security: - user: - name: na - password: na - -management: - health: - mail: - enabled: true - endpoints: - web: - exposure: - include: "health,info" - base-path: "/internal" - endpoint: - info: - enabled: true - info: - git: - mode: full - -email: - from: {{ instance_name }} Teams <{{ noreply_email }}> - base-url: https://teams.{{ base_domain }} diff --git a/roles/teams/vars/main.yml b/roles/teams/vars/main.yml deleted file mode 100644 index 207ea9b7c..000000000 --- a/roles/teams/vars/main.yml +++ /dev/null @@ -1,14 +0,0 @@ -manage_provision_oidcrp_client_id: "{{ teams_authz_client_id }}" -manage_provision_oidcrp_secret: "{{ teams_authz_client_secret }}" -manage_provision_oidcrp_name_en: "{{ teams_manage_provision_oidcrp_name_en }}" -manage_provision_oidcrp_description_en: "{{ teams_manage_provision_oidcrp_description_en }}" -manage_provision_oidcrp_grants: "{{ teams_manage_provision_oidcrp_grants }}" -manage_provision_oidcrp_allowed_resource_servers: "{{ teams_manage_provision_oidcrp_allowed_resource_servers }}" -manage_provision_samlsp_client_id: "{{ teams_manage_provision_samlsp_client_id }}" -manage_provision_samlsp_name_en: "{{ teams_manage_provision_samlsp_name_en }}" -manage_provision_samlsp_description_en: "{{ teams_manage_provision_samlsp_description_en }}" -manage_provision_samlsp_acs_location: "{{ teams_manage_provision_samlsp_acs_location }}" -manage_provision_samlsp_metadata_url: "{{ teams_manage_provision_samlsp_metadata_url }}" -manage_provision_samlsp_sp_cert: "{{ teams_manage_provision_samlsp_sp_cert }}" -manage_provision_samlsp_trusted_proxy: "{{ teams_manage_provision_samlsp_trusted_proxy }}" -manage_provision_samlsp_sign: "{{ teams_manage_provision_samlsp_sign }}" diff --git a/roles/welcome/files/site/images/teams-logo.png b/roles/welcome/files/site/images/teams-logo.png deleted file mode 100644 index 30f06955321435c84f587e0ea49b4e9437ef8ab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6761 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 diff --git a/roles/welcome/templates/site/index.html b/roles/welcome/templates/site/index.html index 1be3199c1..0601527c7 100644 --- a/roles/welcome/templates/site/index.html +++ b/roles/welcome/templates/site/index.html @@ -30,24 +30,6 @@

- {% if ( not minimal_install ) %} -
  • -

    - - Teams - -

    - -

    - Manage team members -

    -
    - - - -
    -
  • - {% endif %}

    OpenConext Administration