Fix gitea admin deployment to be less brittle

Admin deployment was very timing-dependent: If the server took a while
to set it up, it would always error out while deploying. This commit
adds sufficient grace-time into the admin request call before the error
occurs which should avoid it in most deployments (unless the server is
severely underpowered or over-taxed).

Also fixes admin creation to avoid root usage in the container when it
is not called for.
This commit is contained in:
Marty Oehme 2022-12-18 12:00:33 +01:00
parent 32b1b13ef4
commit 8aaefd3f60
Signed by: Marty
GPG key ID: 73BA40D5AFAF49C9
2 changed files with 17 additions and 10 deletions

View file

@ -3,7 +3,8 @@
container: "{{ gitea_app_container_name['stdout'] }}"
command: >
gitea admin user create --admin --username {{ gitea_app_admin_username }} --password {{ gitea_app_admin_password }} --email {{ gitea_app_admin_email }}
become: yes
user: git
become: true
listen: "no admin user"
## Register reverse proxy

View file

@ -91,14 +91,21 @@
become: yes
tags:
- docker-swarm
register: gitea_deployment
notify: "update gitea upstream"
- name: Wait 30 seconds for gitea to become healthy
wait_for:
timeout: 60
delegate_to: localhost
when: gitea_deployment is changed
- name: Get app container info
ansible.builtin.command:
cmd: docker ps -q -f name={{ stack_name }}_app
become: yes
until: gitea_app_container_name['rc'] == 0 and gitea_app_container_name['stdout'] | length >= 1
retries: 5
retries: 10
delay: 10
changed_when: False
register: gitea_app_container_name
@ -109,11 +116,10 @@
user: git
command: >
gitea admin user list --admin
become: yes
until: "'connection refused' not in gitea_admin_list['stdout'] and 'Failed to run app' not in gitea_admin_list['stdout']"
retries: 10
until: gitea_admin_list is defined and gitea_admin_list['rc'] == 0
retries: 15
delay: 10
changed_when: gitea_admin_list['stdout_lines'] | length <= 1 and 'Username' in gitea_admin_list['stdout']
failed_when: (gitea_admin_list['rc'] == 1 and gitea_admin_list['attempts'] >= 5) or 'Gitea is not supposed to be run as root' in gitea_admin_list['stdout']
become: true
register: gitea_admin_list
changed_when: gitea_admin_list['stdout_lines'] | length <= 1 and 'Username' in gitea_admin_list['stdout']
notify: "no admin user"