diff --git a/README.md b/README.md index b27a4fa..541c7b6 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,13 @@ Create/Start servers for stage-dev ansible-playbook -i stage-dev setup.yml --vault-password-file ~/vault-pass -u root ansible-playbook dynamic-provisioning.yml --vault-password-file ~/vault-pass -e "stage=dev name=test node=01 service=connect" +# Setup Smardigo Service + Setup/Configure a Server, Database, Realm (keycloak) and Smardigo + ansible-playbook create-server.yml -e "stage='dev' tenant_id='sken' cluster_name='test01' cluster_size='1' cluster_service='connect' stage='dev'" + ansible-playbook create-database.yml -e "stage='dev' tenant_id='sken' cluster_name='test01' cluster_size='1' cluster_service='connect' stage='dev'" + ansible-playbook create-realm.yml -e "stage='dev' tenant_id='sken' cluster_name='test01' cluster_size='1' cluster_service='connect' stage='dev' current_realm_name='sken' current_realm_display_name='S-K-E-N'" + ansible-playbook create-service.yml -e "stage='dev' tenant_id='sken' cluster_name='test01' cluster_size='1' cluster_service='connect' stage='dev' current_realm_name='sken' current_realm_display_name='S-K-E-N'" + # TODO 212.121.131.106 - Siemansdamm - IPFire diff --git a/create-database.yml b/create-database.yml index 911a06b..ea3ffa9 100644 --- a/create-database.yml +++ b/create-database.yml @@ -1,5 +1,17 @@ --- +# Parameters: +# playbook inventory +# stage := the type of the stage (e.g. dev, int, qa, prod) +# tenant_id := (unique key for the tenant, e.g. customer) +# cluster_name := (business name for the cluster, e.g. product, department ) +# cluster_size := (WIP node count for the cluster) +# cluster_service := (service to setup, e.g. connect) +# smardigo message callback +# scope_id := (scope id of the management process) +# process_instance_id := (process instance id of the management process) +# smardigo_management_action := (smardigo management action anme of the management process) + ############################################################# # Creating inventory dynamically for given parameters ############################################################# @@ -19,7 +31,7 @@ tasks: - name: Add hosts add_host: - name: "{{ stage }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}" + name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}" groups: - "stage_{{ stage }}" - "{{ cluster_service }}" diff --git a/create-realm.yml b/create-realm.yml index 0745ccf..e3fb284 100644 --- a/create-realm.yml +++ b/create-realm.yml @@ -1,5 +1,20 @@ --- +# Parameters: +# playbook inventory +# stage := the type of the stage (e.g. dev, int, qa, prod) +# tenant_id := (unique key for the tenant, e.g. customer) +# cluster_name := (business name for the cluster, e.g. product, department ) +# cluster_size := (WIP node count for the cluster) +# cluster_service := (service to setup, e.g. connect) +# playbook roles (keycloak / oidc) +# current_realm_name := +# current_realm_display_name := +# smardigo message callback +# scope_id := (scope id of the management process) +# process_instance_id := (process instance id of the management process) +# smardigo_management_action := (smardigo management action anme of the management process) + ############################################################# # Creating inventory dynamically for given parameters ############################################################# @@ -19,7 +34,7 @@ tasks: - name: Add hosts add_host: - name: "{{ stage }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}" + name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}" groups: - "stage_{{ stage }}" - "{{ cluster_service }}" diff --git a/create-server.yml b/create-server.yml index bd9e984..4137564 100644 --- a/create-server.yml +++ b/create-server.yml @@ -1,5 +1,17 @@ --- +# Parameters: +# playbook inventory +# stage := the type of the stage (e.g. dev, int, qa, prod) +# tenant_id := (unique key for the tenant, e.g. customer) +# cluster_name := (business name for the cluster, e.g. product, department ) +# cluster_size := (WIP node count for the cluster) +# cluster_service := (service to setup, e.g. connect) +# smardigo message callback +# scope_id := (scope id of the management process) +# process_instance_id := (process instance id of the management process) +# smardigo_management_action := (smardigo management action anme of the management process) + ############################################################# # Creating inventory dynamically for given parameters ############################################################# @@ -19,7 +31,7 @@ tasks: - name: Add hosts add_host: - name: "{{ stage }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}" + name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}" groups: - "stage_{{ stage }}" - "{{ cluster_service }}" diff --git a/create-service.yml b/create-service.yml index 5d98eaa..669ed1a 100644 --- a/create-service.yml +++ b/create-service.yml @@ -19,7 +19,7 @@ tasks: - name: Add hosts add_host: - name: "{{ stage }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}" + name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}" groups: - "stage_{{ stage }}" - "{{ cluster_service }}" diff --git a/group_vars/all/plain.yml b/group_vars/all/plain.yml index 3a7be25..2f7630d 100644 --- a/group_vars/all/plain.yml +++ b/group_vars/all/plain.yml @@ -113,6 +113,7 @@ hetzner_ssh_keys: #mattermost_hook_smardigo: "< see vault >" #teams_hook_smardigo: "< see vault >" +#netgo_msteams_hook_smardigo: "< see vault >" #hetzner_authentication_token: "< see vault >" #digitalocean_authentication_token: "< see vault >" diff --git a/group_vars/connect/plain.yml b/group_vars/connect/plain.yml index e9b80ae..b101ade 100644 --- a/group_vars/connect/plain.yml +++ b/group_vars/connect/plain.yml @@ -2,6 +2,8 @@ service: "connect" +connect_version: '8.2.0-SMARCH-56-1-SNAPSHOT' + hetzner_server_type: cx21 hetzner_server_labels: "stage={{ stage }} service={{ service }}" @@ -32,6 +34,17 @@ current_realm_clients: [ } ] +connect_postgres_database: "connect-postgres" +connect_postgres_admin_username: "connect-postgres-admin" +connect_postgres_admin_password: "connect-postgres-admin" + +connect_elastic_host: "dev-elastic-stack-01-elastic" +connect_elastic_username: "{{ elastic_admin_username }}" +connect_elastic_password: "{{ elastic_admin_password }}" +connect_elastic_ca: "file:/usr/share/smardigo/ca.crt" +connect_elastic_prefix: "{{ stage }}-{{ tenant_id }}" +connect_elastic_message_index: "{{ cluster_name }}-message" + connect_iam_module: external smardigo_iam_client_enabled: 'true' smardigo_iam_client_server_url: https://dev-iam-01.smardigo.digital @@ -45,10 +58,6 @@ connect_oidc_issuer_uri: "https://{{ shared_service_keycloak_hostname }}/auth/re connect_password_change_url: "https://{{ shared_service_keycloak_hostname }}/auth/realms/{{ current_realm_name }}/account/password" connect_iam_user_management_url: "https://{{ shared_service_keycloak_hostname }}/auth/admin/{{ current_realm_name }}/console" -connect_postgres_database: "connect-postgres" -connect_postgres_admin_username: "connect-postgres-admin" -connect_postgres_admin_password: "connect-postgres-admin" - connect_jwt_enabled: true connect_jwt_secret: 908ae14462d049d3be84964ef379c7c6 diff --git a/group_vars/stage_dev/plain.yml b/group_vars/stage_dev/plain.yml index e4c6d5b..9fd57fe 100644 --- a/group_vars/stage_dev/plain.yml +++ b/group_vars/stage_dev/plain.yml @@ -105,46 +105,58 @@ kibana_extra_hosts: [ ip: "{{ shared_service_elastic_03 }}", }, ] -#prometheus_extra_hosts: [ -# { -# hostname: "{{ shared_service_mail_hostname }}", -# ip: "{{ shared_service_mail_ip }}", -# } -#] -#connect_extra_hosts: [ -# { -# hostname: "{{ shared_service_iam_hostname }}", -# ip: "{{ shared_service_iam_ip }}", -# }, -# { -# hostname: "{{ shared_service_keycloak_hostname }}", -# ip: "{{ shared_service_keycloak_ip }}", -# }, -# { -# hostname: "{{ shared_service_mail_hostname }}", -# ip: "{{ shared_service_mail_ip }}", -# } -#] -#keycloak_extra_hosts: [ -# { -# hostname: "{{ shared_service_iam_hostname }}", -# ip: "{{ shared_service_iam_ip }}", -# }, -# { -# hostname: "{{ shared_service_mail_hostname }}", -# ip: "{{ shared_service_mail_ip }}", -# } -#] -#iam_extra_hosts: [ -# { -# hostname: "{{ shared_service_keycloak_hostname }}", -# ip: "{{ shared_service_keycloak_ip }}", -# }, -# { -# hostname: "{{ shared_service_mail_hostname }}", -# ip: "{{ shared_service_mail_ip }}", -# } -#] +prometheus_extra_hosts: [ + { + hostname: "{{ shared_service_mail_hostname }}", + ip: "{{ shared_service_mail_ip }}", + } +] +connect_extra_hosts: [ + { + hostname: dev-elastic-stack-01-elastic, + ip: "{{ shared_service_elastic_01 }}", + }, + { + hostname: dev-elastic-stack-02-elastic, + ip: "{{ shared_service_elastic_02 }}", + }, + { + hostname: dev-elastic-stack-03-elastic, + ip: "{{ shared_service_elastic_03 }}", + }, + { + hostname: "{{ shared_service_iam_hostname }}", + ip: "{{ shared_service_iam_ip }}", + }, + { + hostname: "{{ shared_service_keycloak_hostname }}", + ip: "{{ shared_service_keycloak_ip }}", + }, + { + hostname: "{{ shared_service_mail_hostname }}", + ip: "{{ shared_service_mail_ip }}", + }, +] +keycloak_extra_hosts: [ + { + hostname: "{{ shared_service_iam_hostname }}", + ip: "{{ shared_service_iam_ip }}", + }, + { + hostname: "{{ shared_service_mail_hostname }}", + ip: "{{ shared_service_mail_ip }}", + } +] +iam_extra_hosts: [ + { + hostname: "{{ shared_service_keycloak_hostname }}", + ip: "{{ shared_service_keycloak_ip }}", + }, + { + hostname: "{{ shared_service_mail_hostname }}", + ip: "{{ shared_service_mail_ip }}", + } +] smardigo_management_url: "https://dev-management-smardigo-01.smardigo.digital/api/v1/scopes/{{ scope_id }}/processes/{{ process_instance_id }}/messages" smardigo_management_token: "eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..JgixZcmsSyvovabQvREAjw.Fk7aNYwOjzMhLCqF_9unl5yrWTey26z4scZBeVZjhpE.fnovrqn0MUjM_TA8zVhXdQ" diff --git a/roles/connect/tasks/main.yml b/roles/connect/tasks/main.yml index 5b820fc..64fa82d 100644 --- a/roles/connect/tasks/main.yml +++ b/roles/connect/tasks/main.yml @@ -63,6 +63,17 @@ current_owner: "{{ docker_owner }}" current_group: "{{ docker_group }}" +- name: "Deploy certificate templates for connect" + include_role: + name: _deploy + tasks_from: templates + vars: + current_config: "elastic-certs/certs" + current_base_path: "{{ service_base_path }}" + current_destination: "{{ connect_service_name }}/certs" + current_owner: "{{ docker_owner }}" + current_group: "{{ docker_group }}" + - name: "Update {{ connect_service_name }}" shell: docker-compose pull args: diff --git a/roles/connect/vars/main.yml b/roles/connect/vars/main.yml index 49c8e20..f781d5d 100644 --- a/roles/connect/vars/main.yml +++ b/roles/connect/vars/main.yml @@ -31,6 +31,8 @@ connect_labels: [ ] connect_environment: [ + "TENANT_ID: \"{{ connect_client_id }}\"", + "ADMIN_LOGIN: \"{{ connect_admin_username }}\"", "ADMIN_PASSWORD: \"{{ connect_admin_password }}\"", @@ -71,10 +73,18 @@ connect_environment: [ "SMA_CSRF_TOKEN_VALUE: \"{{ connect_csrf_token_value | default('') }}\"", "ELASTIC_HOST: \"{{ connect_elastic_host | default('') }}\"", + "ELASTIC_PREFIX: \"{{ connect_elastic_prefix }}\"", "ELASTIC_USERNAME: \"{{ connect_elastic_username | default('') }}\"", "ELASTIC_PASSWORD: \"{{ connect_elastic_password | default('') }}\"", - "SEARCH_ELASTIC_INDEX: \"{{ connect_elastic_index | default('') }}\"", - "ANALYSIS_ELASTIC_INDEX: \"{{ connect_elastic_analysis_index | default('') }}\"", + "ELASTIC_CA: \"{{ connect_elastic_ca | default('') }}\"", + "ELASTIC_SEARCH_INDEX: \"{{ connect_elastic_search_index | default('search') }}\"", + "ELASTIC_MESSAGE_INDEX: \"{{ connect_elastic_message_index | default('message') }}\"", + "ELASTIC_ANALYSIS_INDEX: \"{{ connect_elastic_analysis_index | default('analysis') }}\"", + + "LOG_LEVEL_MESSAGE_QUEUE: \"{{ connect_loglevel_message_queue | default('INFO') }}\"", + "LOG_LEVEL_DOCUMENT_INDEX: \"{{ connect_loglevel_document_index | default('INFO') }}\"", + "LOG_LEVEL_WORKFLOW_INDEX: \"{{ connect_loglevel_workflow_index | default('INFO') }}\"", + "LOG_LEVEL_WORKFLOW_ANALYSIS: \"{{ connect_loglevel_workflow_analysis | default('INFO') }}\"", ] connect_docker: { @@ -96,6 +106,9 @@ connect_docker: { labels: "{{ connect_labels + ( connect_labels_additional | default([])) }}", restart: "{{ connect_service_restart | default('always') }}", environment: "{{ connect_environment + ( connect_environment_additional | default([])) }}", + volumes: [ + '"./certs/ca/ca.crt:/usr/share/smardigo/ca.crt:ro"', + ], networks: [ '"back-tier"', '"front-tier"', diff --git a/roles/iam/vars/main.yml b/roles/iam/vars/main.yml index b8d50be..6c3bdb7 100644 --- a/roles/iam/vars/main.yml +++ b/roles/iam/vars/main.yml @@ -54,10 +54,7 @@ iam_docker: { labels: "{{ iam_labels + ( iam_labels_additional | default([])) }}", restart: "{{ iam_service_restart | default('always') }}", environment: [ - "SERVER_PORT: \"{{ service_port }}\"", - "ADMIN_PORT: \"{{ management_port }}\"", "SERVER_ERROR_INCLUDE_MESSAGE: \"always\"", - "SPRING_CACHE_CAFFEINE_SPEC: \"expireAfterAccess={{ iam_cache_timeout }}\"", "IAM_KEYCLOAK_AUTH_SERVER_URL: \"{{ iam_keycloak_auth_server_url }}\"", "IAM_KEYCLOAK_ADMIN_USER: \"{{ iam_keycloak_admin_user }}\"", "IAM_KEYCLOAK_ADMIN_PASSWORD: \"{{ iam_keycloak_admin_password }}\"" diff --git a/smardigo/provisioning/form/header.json b/smardigo/provisioning/form/header.json index e769b51..ba26d64 100644 --- a/smardigo/provisioning/form/header.json +++ b/smardigo/provisioning/form/header.json @@ -3,7 +3,7 @@ "configKey" : "header", "page" : 0, "components" : [ { - "input" : false, + "input" : false, "tableView" : false, "columns" : [ { "components" : [ { diff --git a/smardigo/provisioning/process-search/simple-connect.json b/smardigo/provisioning/process-search/simple-connect.json index 7d7429f..44b0293 100644 --- a/smardigo/provisioning/process-search/simple-connect.json +++ b/smardigo/provisioning/process-search/simple-connect.json @@ -35,7 +35,29 @@ }, { "key" : "vorgang_status_text", "name" : "Status", - "width" : 100 + "width" : 100, + "render" : { + "type" : "nominal_classification", + "dataclassdefinitions" : [ { + "value" : "Neu", + "style" : "traffic-light-blue" + }, { + "value" : "Antrag gesendet", + "style" : "traffic-light-blue" + }, { + "value" : "Antrag freigegeben", + "style" : "traffic-light-yellow" + }, { + "value" : "Service wird gestartet", + "style" : "traffic-light-yellow" + }, { + "value" : "Service gestartet", + "style" : "traffic-light-green" + }, { + "value" : "Service gelöscht", + "style" : "traffic-light-red" + } ] + } }, { "key" : "candidateGroups", "name" : "Gruppen", @@ -51,7 +73,7 @@ } }, { "name" : "State", - "key" : "process_state_text", + "key" : "vorgang_status_text", "defaultOption" : { "key" : "default", "name" : "All" diff --git a/smardigo/provisioning/process-variable-declaration/simple-connect.json b/smardigo/provisioning/process-variable-declaration/simple-connect.json index 15156c4..c4b75cf 100644 --- a/smardigo/provisioning/process-variable-declaration/simple-connect.json +++ b/smardigo/provisioning/process-variable-declaration/simple-connect.json @@ -23,6 +23,18 @@ "type" : "boolean", "classification" : "PRIVATE" }, + "id" : { + "type" : "string", + "classification" : "PRIVATE" + }, + "key" : { + "type" : "string", + "classification" : "PRIVATE" + }, + "name" : { + "type" : "string", + "classification" : "PRIVATE" + }, "progress_current" : { "type" : "long", "classification" : "PRIVATE" @@ -35,6 +47,18 @@ "type" : "string", "classification" : "PRIVATE" }, + "service_url" : { + "type" : "string", + "classification" : "PRIVATE" + }, + "size" : { + "type" : "long", + "classification" : "PRIVATE" + }, + "stage" : { + "type" : "string", + "classification" : "PRIVATE" + }, "tenant" : { "type" : "object", "classification" : "PRIVATE" diff --git a/smardigo/provisioning/process/simple-connect.bpmn b/smardigo/provisioning/process/simple-connect.bpmn index b317631..4a3b9e3 100644 --- a/smardigo/provisioning/process/simple-connect.bpmn +++ b/smardigo/provisioning/process/simple-connect.bpmn @@ -222,7 +222,7 @@ Variables.userId(authenticatedUserId) Flow_1f0iyrk Flow_11k5c1y - + @@ -233,6 +233,7 @@ Variables.userId(authenticatedUserId) Flow_15fkmn4 + Flow_090j3ro @@ -242,26 +243,8 @@ Variables.userId(authenticatedUserId) Flow_11k5c1y - Flow_1ebhrqm Flow_15fkmn4 - - - - - import de.tolina.connect.common.variable.Variables -def authenticatedUserId = users.currentUserId() -Variables.userId(authenticatedUserId) - - - - Flow_1ebhrqm - Flow_1pwn0n9 - - - Flow_1pwn0n9 - - @@ -317,8 +300,7 @@ Variables.userId(authenticatedUserId) - - + @@ -348,11 +330,128 @@ Variables.userId(authenticatedUserId) Flow_13jykf9 + + + + + Flow_0cxiaxt + + + + + + + + + + ${5} + + + + Flow_1d2gl8q + Flow_1c6reic + + + + + + + + + ${2} + + + + Flow_07sf9z8 + Flow_0dc3zbr + + + + + + + + + ${3} + + + + Flow_0dc3zbr + Flow_1leflml + + + + + + + + + ${4} + + + + Flow_1leflml + Flow_1d2gl8q + + + + + ${1} + ${5} + + + Flow_18y954i + Flow_07sf9z8 + + + + + Flow_1onhxkb + Flow_17gszoo + Flow_1lt30rz - - + + + + + ${41} + Service wird aktualisiert + + + Flow_1lt30rz + Flow_18y954i + + + + + + ${50} + Service gestartet + + + Flow_1c6reic + Flow_17gszoo + + + + + + + + + + + + ${section} + + + + + Flow_0lrfzsu + Flow_1jfvhvl + @@ -368,8 +467,56 @@ Variables.userId(authenticatedUserId) Flow_1qghkm9 Flow_0lrfzsu - - + + + + + + MessageCard + http://schema.org/extensions + 0076D7 + Neuer Antrag für ${tenant.name} + ${sections} + + + + + Flow_1jfvhvl + Flow_0cxiaxt + + + + + ${60} + Service wird gelöscht + + + Flow_090j3ro + Flow_0yckijr + + + Flow_0yckijr + Flow_0fyo5ev + Flow_0e66mfk + + + + + + + + + Service abreissen für ${tenant.name} + ${cluster.stage}-${tenant.key}-${cluster.name} for ${cluster.service} + https://img.welt.de/img/vermischtes/bilder-des-tages/mobile207066931/1242503207-ci102l-w1024/Coronavirus-USA.jpg + + + + + Flow_0e66mfk + Flow_0embcwh + + @@ -379,10 +526,10 @@ Variables.userId(authenticatedUserId) - Flow_0lrfzsu - Flow_1jfvhvl + Flow_0embcwh + Flow_0011ju8 - + @@ -396,22 +543,64 @@ Variables.userId(authenticatedUserId) - Flow_1jfvhvl - Flow_0cxiaxt + Flow_0011ju8 + Flow_1ecxnbj - - Flow_0cxiaxt + + Flow_1ecxnbj - - - Service auf Server installieren + + + + + + + + import de.tolina.connect.common.variable.Variables +def authenticatedUserId = users.currentUserId() +Variables.userId(authenticatedUserId) + + + + Flow_0fyo5ev + Flow_1pwn0n9 + + + + + ${70} + Service gelöscht + + + Flow_1pwn0n9 + Flow_13do7kt + + + Flow_13do7kt + + + + Shared Service +Server bei Hetzner erstellen +- Provisioning +- Domain (Administration) +- Networks +- Monitoring +- Logging + + + Shared Service +Keycloak Realm mit Administrator Account -- Domain (Services) -- connect -- (wordpress) +- Neuer Nutzer (connect-admin) +- Emailadresse des Erstellers +- Automatisch generiertes PW +- PW per EMail an Administrator - + + + Shared Service Server bei Hetzner erstellen @@ -421,7 +610,7 @@ Server bei Hetzner erstellen - Monitoring - Logging - + Shared Service Datenbanken erstellen @@ -429,7 +618,7 @@ Datenbanken erstellen - (wordpress) - Credentials in Vorgang ablegen - + Shared Service Keycloak Realm mit Administrator Account @@ -438,10 +627,45 @@ Keycloak Realm mit Administrator Account - Automatisch generiertes PW - PW per EMail an Administrator - - + + + - + + Shared Service +Datenbanken erstellen + +- connect +- (wordpress) +- Credentials in Vorgang ablegen + + + Service auf Server installieren + +- Domain (Services) +- connect +- (wordpress) + + + + Service auf Server installieren + +- Domain (Services) +- connect +- (wordpress) + + + + Service wieder abreissen + +- Server  +- Domain +- Keycloak (Data/Config) +- ElasticSearch Index (Data/Config) +- Monitoring/Alerting +- Database + + @@ -522,12 +746,13 @@ Keycloak Realm mit Administrator Account ${contextScopeId} ${execution.getProcessInstanceId()} ${smardigoManagementAction} - ${tenant.key}-${cluster.name} + ${cluster.name} ${cluster.service} ${cluster.size} ${cluster.stage} ${tenant.key} ${tenant.name} + ${tenant.key} @@ -566,8 +791,71 @@ Keycloak Realm mit Administrator Account - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -590,8 +878,7 @@ Keycloak Realm mit Administrator Account - - + @@ -610,12 +897,11 @@ Keycloak Realm mit Administrator Account - - - - - - + + + + + @@ -744,6 +1030,26 @@ Keycloak Realm mit Administrator Account + + + + + + + + + + + + + + + + + + + + @@ -774,6 +1080,48 @@ Keycloak Realm mit Administrator Account + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -856,12 +1204,6 @@ Keycloak Realm mit Administrator Account - - - - - - @@ -895,55 +1237,111 @@ Keycloak Realm mit Administrator Account - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -956,10 +1354,6 @@ Keycloak Realm mit Administrator Account - - - - @@ -972,14 +1366,6 @@ Keycloak Realm mit Administrator Account - - - - - - - - diff --git a/update.sh b/update.sh new file mode 100644 index 0000000..43c8faa --- /dev/null +++ b/update.sh @@ -0,0 +1,10 @@ +git archive --format zip --output ../hetzner-ansible.zip master +scp ../hetzner-ansible.zip sven.ketelsen@dev-awx-01.smardigo.digital:~/hetzner-ansible.zip + +#cd /var/lib/rancher/k3s/storage/pvc-57241168-6a49-4a8e-be84-748267fe1c5a_default_awx-projects-claim +#mv hetzner-ansible hetzner-ansible-old<...> +#mkdir hetzner-ansible +#cd hetzner-ansible +#cp ~/hetzner-ansible.zip . +#unzip hetzner-ansible.zip +#hetzner-ansible.zip \ No newline at end of file