From 30aafc5c8cd536defa9b33f0e53b14653d06dbe1 Mon Sep 17 00:00:00 2001 From: Mira Kuntz Date: Wed, 5 Aug 2026 18:19:24 +0200 Subject: [PATCH 1/3] still working on playbook, helenas key is not accepted by dokku (miras is) --- dokku.yml | 88 +++++++++++++++++++++++++---------------------- requirements.yaml | 3 +- 2 files changed, 48 insertions(+), 43 deletions(-) diff --git a/dokku.yml b/dokku.yml index 026b1c209..64224140b 100644 --- a/dokku.yml +++ b/dokku.yml @@ -34,6 +34,8 @@ - name: oembed username: oembed ssh_key: "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLkuOlVUXxCqABoQbTEvW3A8nSSici89C10lEg1F4Cmvv/q8YRGYaoDayuqifFJERWvRA8yVcIH7/XCPzmMrLM0=" + dokku_daemon_install: false + dokku_docker_install: true pre_tasks: # make sure /data exists - name: Ensure /data exists @@ -51,89 +53,91 @@ fstype: xfs state: mounted opts: defaults + - name: Install Docker + ansible.builtin.include_role: + name: geerlingguy.docker # Create a symlink in /var/lib/docker to /data/docker - name: Create a symlink in /var/lib/docker to /data/docker file: - src: /data/docker - dest: /var/lib/docker + src: /var/lib/docker + dest: /data/docker state: link roles: - hostname - dokku_bot.ansible_dokku post_tasks: - - name: Create our apps - dokku_app: - app: "{{ item }}" + - name: Create apps + community.docker.docker_container_exec: + container: dokku + command: "dokku apps:create {{ item }}" with_items: "{{ apps }}" - name: Setup domains - dokku_domains: - app: "{{ item }}" - domains: - - "{{ item }}.apps.galaxyproject.eu" - state: set + community.docker.docker_container_exec: + container: dokku + command: "dokku domains:add {{ item }} {{ item }}.galaxyproject.eu" with_items: "{{ apps }}" - + - name: Check if DNAnalyzer postgres exists - shell: dokku postgres:exists dnanalyzer + community.docker.docker_container_exec: + container: dokku + command: dokku postgres:exists dnanalyzer register: pg_exists changed_when: false ignore_errors: true - + - name: Create DNAnalyzer postgres - shell: dokku postgres:create dnanalyzer + community.docker.docker_container_exec: + container: dokku + command: dokku postgres:create dnanalyzer changed_when: pg_exists.rc == 1 when: pg_exists.rc == 1 - + - name: Check if DNAnalyzer postgres link exists - shell: dokku postgres:exists dnanalyzer + community.docker.docker_container_exec: + container: dokku + command: dokku postgres:exists dnanalyzer register: pg_link_exists changed_when: false failed_when: pg_link_exists.rc > 1 - + - name: Create DNAnalyzer postgres link - shell: dokku postgres:link dnanalyzer dnanalyzer + community.docker.docker_container_exec: + container: dokku + command: dokku postgres:link dnanalyzer dnanalyzer changed_when: "'dnanalyzer' not in pg_link_exists.stdout" when: "'dnanalyzer' not in pg_link_exists.stdout" - + - name: Check if gtn-slack-bot postgres exists - shell: dokku postgres:exists gtn-slack-bot + community.docker.docker_container_exec: + container: dokku + command: dokku postgres:exists gtn-slack-bot register: pg_exists changed_when: false ignore_errors: true - + - name: Create gtn-slack-bot postgres - shell: dokku postgres:create gtn-slack-bot + community.docker.docker_container_exec: + container: dokku + command: dokku postgres:create gtn-slack-bot changed_when: pg_exists.rc == 1 when: pg_exists.rc == 1 - + - name: Check if gtn-slack-bot postgres link exists - shell: dokku postgres:exists gtn-slack-bot + community.docker.docker_container_exec: + container: dokku + command: dokku postgres:exists gtn-slack-bot register: pg_link_exists changed_when: false failed_when: pg_link_exists.rc > 1 - + - name: Create gtn-slack-bot postgres link - shell: dokku postgres:link gtn-slack-bot gtn-slack-bot + community.docker.docker_container_exec: + container: dokku + command: dokku postgres:link gtn-slack-bot gtn-slack-bot changed_when: "'gtn-slack-bot' not in pg_link_exists.stdout" when: "'gtn-slack-bot' not in pg_link_exists.stdout" - - name: Set LE email - command: dokku letsencrypt:set --global email helena.rasche@gmail.com - - - name: Setup Certs - dokku_letsencrypt: - app: "{{ item }}" - with_items: "{{ apps }}" - - - name: Auto Renew Certs - ansible.builtin.cron: - name: Dokku Cert Autorenew - user: ubuntu - job: /usr/bin/dokku letsencrypt:auto-renew - hour: 4 - minute: 59 - # random values # - name: Clones # dokku_clone: diff --git a/requirements.yaml b/requirements.yaml index 56f5c524d..410d77aa6 100644 --- a/requirements.yaml +++ b/requirements.yaml @@ -156,7 +156,8 @@ roles: - name: artis3n.tailscale version: v4.5.0 - name: dokku_bot.ansible_dokku - version: v2024.4.11 + src: https://github.com/usegalaxy-eu/ansible-dokku + version: master - src: https://github.com/usegalaxy-eu/ansible-traefik name: usegalaxy_eu.traefik version: 2.0.0 From 605b2c38c974d66e0c1726d87c98a3de6f02f8ce Mon Sep 17 00:00:00 2001 From: Mira Kuntz Date: Tue, 25 Aug 2026 20:06:46 +0200 Subject: [PATCH 2/3] switch apps hosts, fix apps subdomains --- dokku.yml | 43 +++++++++++++++++++++++-------------------- hosts | 2 +- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/dokku.yml b/dokku.yml index 64224140b..efd035289 100644 --- a/dokku.yml +++ b/dokku.yml @@ -6,12 +6,12 @@ hostname: apps.galaxyproject.eu apps: - ptdk - - pwdk + # - pwdk - oembed - - certificates - - gtn-slack-bot + # - certificates + # - gtn-slack-bot - dnanalyzer - - cors + # - cors dokku_plugins: - name: postgres url: https://github.com/dokku/dokku-postgres.git @@ -22,18 +22,21 @@ # - name: acl # url: https://github.com/dokku/dokku-acl.git dokku_users: - - name: hexylena - username: hexylena - ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEEurxSQW4BrpP9FLXqiz/H6Ewclln68oc/oFAVqH5xu" - - name: github - username: github - ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG0UpPcbt0ytqZSRiqC38cgT1Ey2jWqc/oEgzTpUncA8" - - name: github2 - username: github2 - ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFGzr8JWnnCQo+565kzpXKYP12kLt2oyWzFCF/cueIvO" - - name: oembed - username: oembed - ssh_key: "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLkuOlVUXxCqABoQbTEvW3A8nSSici89C10lEg1F4Cmvv/q8YRGYaoDayuqifFJERWvRA8yVcIH7/XCPzmMrLM0=" + # - name: hexylena + # username: hexylena + # ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEEurxSQW4BrpP9FLXqiz/H6Ewclln68oc/oFAVqH5xu" + - name: mira + username: mira + ssh_key: "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIEUzGzHldVS8TNywBdlFL9D5FCvgEPBdoHzRpmk/42K/AAAABHNzaDo= mk@galaxy-mira" + # - name: github + # username: github + # ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG0UpPcbt0ytqZSRiqC38cgT1Ey2jWqc/oEgzTpUncA8" + # - name: github2 + # username: github2 + # ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFGzr8JWnnCQo+565kzpXKYP12kLt2oyWzFCF/cueIvO" + # - name: oembed + # username: oembed + # ssh_key: "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLkuOlVUXxCqABoQbTEvW3A8nSSici89C10lEg1F4Cmvv/q8YRGYaoDayuqifFJERWvRA8yVcIH7/XCPzmMrLM0=" dokku_daemon_install: false dokku_docker_install: true pre_tasks: @@ -53,9 +56,9 @@ fstype: xfs state: mounted opts: defaults - - name: Install Docker - ansible.builtin.include_role: - name: geerlingguy.docker + # - name: Install Docker + # ansible.builtin.include_role: + # name: geerlingguy.docker # Create a symlink in /var/lib/docker to /data/docker - name: Create a symlink in /var/lib/docker to /data/docker file: @@ -75,7 +78,7 @@ - name: Setup domains community.docker.docker_container_exec: container: dokku - command: "dokku domains:add {{ item }} {{ item }}.galaxyproject.eu" + command: "dokku domains:add {{ item }} {{ item }}.apps.galaxyproject.eu" with_items: "{{ apps }}" - name: Check if DNAnalyzer postgres exists diff --git a/hosts b/hosts index 6b05b948e..7533cdc46 100644 --- a/hosts +++ b/hosts @@ -90,7 +90,7 @@ sn09.galaxyproject.eu ansible_group_priority=4 [dokku] -apps.galaxyproject.eu ansible_ssh_user=ubuntu ansible_port=8080 +apps.bi.privat ansible_ssh_user=centos ansible_port=22 [libvirt:children] sn12 From b6c45bb98934a27c1c43d7280f0c5348af366ea2 Mon Sep 17 00:00:00 2001 From: Mira Kuntz Date: Mon, 31 Aug 2026 15:51:08 +0200 Subject: [PATCH 3/3] move dokku vars to file and add ptdk env --- dokku.yml | 133 +++++++++++++++++++++---------------------- group_vars/dokku.yml | 36 ++++++++++++ 2 files changed, 102 insertions(+), 67 deletions(-) create mode 100644 group_vars/dokku.yml diff --git a/dokku.yml b/dokku.yml index efd035289..3f2c7f951 100644 --- a/dokku.yml +++ b/dokku.yml @@ -2,43 +2,8 @@ - name: Dokku App Server hosts: dokku become: true - vars: - hostname: apps.galaxyproject.eu - apps: - - ptdk - # - pwdk - - oembed - # - certificates - # - gtn-slack-bot - - dnanalyzer - # - cors - dokku_plugins: - - name: postgres - url: https://github.com/dokku/dokku-postgres.git - - name: letsencrypt - url: https://github.com/dokku/dokku-letsencrypt.git - - name: redis - url: https://github.com/dokku/dokku-redis.git - # - name: acl - # url: https://github.com/dokku/dokku-acl.git - dokku_users: - # - name: hexylena - # username: hexylena - # ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEEurxSQW4BrpP9FLXqiz/H6Ewclln68oc/oFAVqH5xu" - - name: mira - username: mira - ssh_key: "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIEUzGzHldVS8TNywBdlFL9D5FCvgEPBdoHzRpmk/42K/AAAABHNzaDo= mk@galaxy-mira" - # - name: github - # username: github - # ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG0UpPcbt0ytqZSRiqC38cgT1Ey2jWqc/oEgzTpUncA8" - # - name: github2 - # username: github2 - # ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFGzr8JWnnCQo+565kzpXKYP12kLt2oyWzFCF/cueIvO" - # - name: oembed - # username: oembed - # ssh_key: "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLkuOlVUXxCqABoQbTEvW3A8nSSici89C10lEg1F4Cmvv/q8YRGYaoDayuqifFJERWvRA8yVcIH7/XCPzmMrLM0=" - dokku_daemon_install: false - dokku_docker_install: true + vars_files: + - secret_group_vars/all.yml pre_tasks: # make sure /data exists - name: Ensure /data exists @@ -73,13 +38,47 @@ community.docker.docker_container_exec: container: dokku command: "dokku apps:create {{ item }}" + register: app_results with_items: "{{ apps }}" + ignore_errors: true + + - name: Check if successful + ansible.builtin.fail: + msg: "{{ item.stderr }}" + with_items: "{{ app_results.results }}" + when: item.rc != 0 and not "Name is already taken" in item.stderr + + - name: Check domains + community.docker.docker_container_exec: + container: dokku + command: "dokku domains:report {{ item }}" + with_items: "{{ apps }}" + register: domain_results - name: Setup domains community.docker.docker_container_exec: container: dokku command: "dokku domains:add {{ item }} {{ item }}.apps.galaxyproject.eu" - with_items: "{{ apps }}" + loop: "{{ apps | flatten(levels=1) }}" + loop_control: + index_var: idx + when: domain_results.results[idx].rc == 0 and not "item.apps.galaxyproject.eu" in domain_results.results[idx].stderr + + - name: Get ptdk env variable + community.docker.docker_container_exec: + container: dokku + command: "dokku config:get ptdk USEGALAXY_EU_APIKEY" + register: ptdk_env + no_log: true + ignore_errors: true + + - name: Set ptdk env variable + community.docker.docker_container_exec: + container: dokku + command: "dokku config:set ptdk USEGALAXY_EU_APIKEY={{ admin_api_key_maintenance }}" + when: not admin_api_key_maintenance in ptdk_env.stdout or ptdk_env.rc != 0 + no_log: true + - name: Check if DNAnalyzer postgres exists community.docker.docker_container_exec: @@ -111,35 +110,35 @@ changed_when: "'dnanalyzer' not in pg_link_exists.stdout" when: "'dnanalyzer' not in pg_link_exists.stdout" - - name: Check if gtn-slack-bot postgres exists - community.docker.docker_container_exec: - container: dokku - command: dokku postgres:exists gtn-slack-bot - register: pg_exists - changed_when: false - ignore_errors: true - - - name: Create gtn-slack-bot postgres - community.docker.docker_container_exec: - container: dokku - command: dokku postgres:create gtn-slack-bot - changed_when: pg_exists.rc == 1 - when: pg_exists.rc == 1 - - - name: Check if gtn-slack-bot postgres link exists - community.docker.docker_container_exec: - container: dokku - command: dokku postgres:exists gtn-slack-bot - register: pg_link_exists - changed_when: false - failed_when: pg_link_exists.rc > 1 - - - name: Create gtn-slack-bot postgres link - community.docker.docker_container_exec: - container: dokku - command: dokku postgres:link gtn-slack-bot gtn-slack-bot - changed_when: "'gtn-slack-bot' not in pg_link_exists.stdout" - when: "'gtn-slack-bot' not in pg_link_exists.stdout" + # - name: Check if gtn-slack-bot postgres exists + # community.docker.docker_container_exec: + # container: dokku + # command: dokku postgres:exists gtn-slack-bot + # register: pg_exists + # changed_when: false + # ignore_errors: true + # + # - name: Create gtn-slack-bot postgres + # community.docker.docker_container_exec: + # container: dokku + # command: dokku postgres:create gtn-slack-bot + # changed_when: pg_exists.rc == 1 + # when: pg_exists.rc == 1 + # + # - name: Check if gtn-slack-bot postgres link exists + # community.docker.docker_container_exec: + # container: dokku + # command: dokku postgres:exists gtn-slack-bot + # register: pg_link_exists + # changed_when: false + # failed_when: pg_link_exists.rc > 1 + # + # - name: Create gtn-slack-bot postgres link + # community.docker.docker_container_exec: + # container: dokku + # command: dokku postgres:link gtn-slack-bot gtn-slack-bot + # changed_when: "'gtn-slack-bot' not in pg_link_exists.stdout" + # when: "'gtn-slack-bot' not in pg_link_exists.stdout" # - name: Clones diff --git a/group_vars/dokku.yml b/group_vars/dokku.yml new file mode 100644 index 000000000..e7112cf8d --- /dev/null +++ b/group_vars/dokku.yml @@ -0,0 +1,36 @@ +hostname: apps.galaxyproject.eu +apps: + - ptdk + # - pwdk + - oembed + # - certificates + # - gtn-slack-bot + - dnanalyzer + # - cors +dokku_plugins: + - name: postgres + url: https://github.com/dokku/dokku-postgres.git + - name: letsencrypt + url: https://github.com/dokku/dokku-letsencrypt.git + - name: redis + url: https://github.com/dokku/dokku-redis.git + # - name: acl + # url: https://github.com/dokku/dokku-acl.git +dokku_users: + # - name: hexylena + # username: hexylena + # ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEEurxSQW4BrpP9FLXqiz/H6Ewclln68oc/oFAVqH5xu" + # - name: mira + # username: mira + # ssh_key: "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIEUzGzHldVS8TNywBdlFL9D5FCvgEPBdoHzRpmk/42K/AAAABHNzaDo= mk@galaxy-mira" + - name: github + username: github + ssh_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDXBVfvItcmrgHVaV7aohDLe05GF1G82OQ4qa+MOpSkkYqA7S+p5L+ag0RMy1Yn5YjqxxXvuHTOWosp9GTeDQi/khearnMpcNyHHQA1k9PYEAoQohcnKX9XBqXZI+9Mlk1JL8nZ4T99YbF2GqNbXo1jHsPvkLQHZtVyLV2pM2GAY28JjAhw3k+dVn7hT26FBcPCRuj4GakL/Fti1duW6HjEwiqqPjpqSio1K8fEI7TVE/YHDQjeAHLvbDe2hzbaVOwwzNkxs1jy/MsK7HfTouJHewC7IWg3wlllC2zfYqnvFTaHtcK3fHRzMdgZ3HqSUtvC4/tfd0zch/0YatWxbqmEntVNhnvyJW3t+hQM0zEPbCKVMfxuf8JTxXaTS5fzMWSNVDKIKJ3XY04gOGA6oDJOHoIubN28AaudjEo045s1a8Zf+RPq23oc7X/Ajvze4IRQdqAN/TMuCyNA/iqeGTYFWP6Ia4nd/3QYUlPtzAeCo0WTkamccYwMWPr+bYCYlls= dokku@github" + # - name: github2 + # username: github2 + # ssh_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFGzr8JWnnCQo+565kzpXKYP12kLt2oyWzFCF/cueIvO" + # - name: oembed + # username: oembed + # ssh_key: "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLkuOlVUXxCqABoQbTEvW3A8nSSici89C10lEg1F4Cmvv/q8YRGYaoDayuqifFJERWvRA8yVcIH7/XCPzmMrLM0=" +dokku_daemon_install: false +dokku_docker_install: true