diff --git a/host_vars/prodnso-mpmx-iaas-01/plain.yml b/host_vars/prodnso-mpmx-iaas-01/plain.yml new file mode 100644 index 0000000..e99d7cf --- /dev/null +++ b/host_vars/prodnso-mpmx-iaas-01/plain.yml @@ -0,0 +1,14 @@ +--- +pass_tenant_id: "mpmx" + +hetzner_server_type: cpx51 + +custom_platform_users: + - 'klaus.muellner' + +prometheus_alert_extra_config: + high_load: + duration: 24h + description: "High load for more than 24 hour." + +server_type: "master" diff --git a/host_vars/prodnso-mpmx-iaas-01/vault.yml b/host_vars/prodnso-mpmx-iaas-01/vault.yml new file mode 100644 index 0000000..2170103 --- /dev/null +++ b/host_vars/prodnso-mpmx-iaas-01/vault.yml @@ -0,0 +1,14 @@ +$ANSIBLE_VAULT;1.1;AES256 +65356439376234613339666538653732656330323831323961393162303161306432336464623064 +3436343262346261316333393136326165633865613839380a383736376432326531636239646231 +38636663663764623237343066626466303965656637376634623462376566623637636134363763 +3530323362366230640a306230636364646130306363303261336439313635633735356264363532 +38313665646537326230383163393037326534353966353933663533373638333436336535366662 +63336336383839306165343961313832353166323561336338333565363765636538356161313631 +30303737636265313436643733343938313562323739383335656330303261393433383662646135 +64313039646162323439373930313066343062333061653234616661663034363238653138336438 +33663939666632376663666437636339663765666661646531346436396365643937633465336439 +35663638343663366637643061656232333937323361623631353063353630306234326530326536 +65373966646430626634643731306266633238333362623063666531646336333836616533346566 +30653862313633666238313734393962326465393533616265613266333063636432313131373636 +3231 diff --git a/roles/mpmx/defaults/main.yml b/roles/mpmx/defaults/main.yml new file mode 100644 index 0000000..74d07af --- /dev/null +++ b/roles/mpmx/defaults/main.yml @@ -0,0 +1,2 @@ +--- +pgadmin4_image_name: "dpage/pgadmin4" diff --git a/roles/mpmx/tasks/main.yml b/roles/mpmx/tasks/main.yml new file mode 100644 index 0000000..7350903 --- /dev/null +++ b/roles/mpmx/tasks/main.yml @@ -0,0 +1,62 @@ +--- +### tags: +### update_config +### update_deployment + +- name: "Setup DNS configuration for <{{ pgadmin_id }}> to <{{ stage_server_ip }}>" + include_role: + name: hetzner-ansible-dns + vars: + record_data: "{{ stage_server_ip }}" + record_name: "{{ pgadmin_id }}" + +- name: "Check if <{{ pgadmin_id }}/docker-compose.yml> exists" + stat: + path: "{{ service_base_path }}/{{ pgadmin_id }}/docker-compose.yml" + register: check_docker_compose_file + tags: + - update_config + - update_deployment + +- name: "Stop <{{ pgadmin_id }}>" + community.docker.docker_compose: + project_src: "{{ service_base_path }}/{{ pgadmin_id }}" + state: absent + when: check_docker_compose_file.stat.exists + tags: + - update_deployment + +- name: "Deploy docker templates for <{{ pgadmin_id }}>" + include_role: + name: hetzner-ansible-sma-deploy + tasks_from: templates + vars: + current_config: "_docker" + current_base_path: "{{ service_base_path }}" + current_destination: "{{ pgadmin_id }}" + current_owner: "{{ docker_owner }}" + current_group: "{{ docker_group }}" + current_docker: "{{ pgadmin4_docker }}" + tags: + - update_config + +- name: "Deploy service templates for <{{ pgadmin_id }}>" + include_role: + name: hetzner-ansible-sma-deploy + tasks_from: templates + vars: + current_config: "mpmx" + current_base_path: "{{ service_base_path }}" + current_destination: "{{ pgadmin_id }}" + current_owner: "{{ docker_owner }}" + current_group: "{{ docker_group }}" + tags: + - update_config + +- name: "Update <{{ pgadmin_id }}>pgadmin_id" + community.docker.docker_compose: + project_src: "{{ service_base_path }}/{{ pgadmin_id }}" + state: present + pull: yes + tags: + - update_deployment diff --git a/roles/mpmx/vars/main.yml b/roles/mpmx/vars/main.yml new file mode 100644 index 0000000..01f817d --- /dev/null +++ b/roles/mpmx/vars/main.yml @@ -0,0 +1,56 @@ +--- +pgadmin_id: "{{ inventory_hostname }}-pgadmin4" +postgres_id: "{{ inventory_hostname }}-postgres" + +pgadmin4_docker: + networks: + - name: front-tier + external: true + - name: back-tier + external: true + volumes: + - name: pgadmin_data + - name: postgres_15_data + - name: postgres_16_data + services: + - name: "{{ pgadmin_id }}" + image_name: "{{ pgadmin4_image_name }}" + image_version: "{{ pgadmin4_version }}" + labels: + - '"traefik.enable=true"' + - '"traefik.http.routers.{{ pgadmin_id }}.service={{ pgadmin_id }}"' + - '"traefik.http.routers.{{ pgadmin_id }}.rule=Host(`{{ pgadmin_id }}.{{ domain }}`)"' + - '"traefik.http.routers.{{ pgadmin_id }}.entrypoints=websecure"' + - '"traefik.http.routers.{{ pgadmin_id }}.tls=true"' + - '"traefik.http.routers.{{ pgadmin_id }}.tls.certresolver=letsencrypt"' + - '"traefik.http.services.{{ pgadmin_id }}.loadbalancer.server.port={{ http_port }}"' + environment: + - 'PGADMIN_DEFAULT_EMAIL: "{{ pgadmin4_admin_username }}"' + - 'PGADMIN_DEFAULT_PASSWORD: "{{ pgadmin4_admin_password }}"' + volumes: + - "pgadmin_data:/var/lib/pgadmin" + networks: + - front-tier + - back-tier + - name: "{{ postgres_id }}-15" + image_name: "postgres" + image_version: "15" + environment: + - 'POSTGRES_DB: "{{ mpmx_postgres_database }}"' + - 'POSTGRES_USER: "{{ mpmx_postgres_username }}"' + - 'POSTGRES_PASSWORD: "{{ mpmx_postgres_password }}"' + volumes: + - "postgres_15_data:/var/lib/postgresql/data" + networks: + - "back-tier" + - name: "{{ postgres_id }}-16" + image_name: "postgres" + image_version: "16" + environment: + - 'POSTGRES_DB: "{{ mpmx_postgres_database }}"' + - 'POSTGRES_USER: "{{ mpmx_postgres_username }}"' + - 'POSTGRES_PASSWORD: "{{ mpmx_postgres_password }}"' + volumes: + - "postgres_16_data:/var/lib/postgresql/data" + networks: + - "back-tier" diff --git a/smardigo.yml b/smardigo.yml index 0712aa6..ab9774a 100644 --- a/smardigo.yml +++ b/smardigo.yml @@ -72,3 +72,6 @@ - role: connect_compact when: "'connect_compact' in group_names" + + - role: mpmx + when: "'mpmx' in group_names" diff --git a/stage-prodnso b/stage-prodnso index 07568b8..ccf551e 100644 --- a/stage-prodnso +++ b/stage-prodnso @@ -58,6 +58,7 @@ prodnso-prometheus-01 prodnso-platform-iaas-01 prodnso-hocr-iaas-01 prodnso-sizcs-iaas-01 +prodnso-mpmx-iaas-01 [vpn] prodnso-vpn-01 @@ -83,6 +84,9 @@ prodnso-kube-node-05 kube_control_plane kube_node +[mpmx] +prodnso-mpmx-iaas-01 + [stage_prodnso:children] backup connect diff --git a/users/klaus.muellner/ssh.pub b/users/klaus.muellner/ssh.pub new file mode 100644 index 0000000..42edbc7 --- /dev/null +++ b/users/klaus.muellner/ssh.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDt4ZC9W+UE5iM7dreAbOe2Zt396J4FcU5+4mtSXi4xj klaus.muellner@netgo.de \ No newline at end of file