Gitea Podman-Container unbeaufsichtigt via Ansible bereitstellen
Gitea ist ein beliebtes, schlankes Git-Frontend, welches sich - dank Docker-Image - auch schnell bereitstellen lässt. Nachdem der Container gestartet wurde, erfolgt die initialie Konfiguration (Netzwerkoptionen, Berechtigungen, Datenbank) jedoch standardmäßig per Web-Oberfläche. Das ist unschön, wenn man eine unbeaufsichtigte und automatisierte Installation wünscht - beispielsweise, weil man viele Gitea-Instanzen einrichtet.
Glücklicherweise können dem Gitea-Container verschiedene Umgebungsvariablen zugewiesen werden, um die meisten der Einstellungen zu definieren - eine vollständige Liste mit Variablen-Fragmenten findet sich in der Dokumentation.
Im Zusammenhang mit Podman ist noch zu beachten, dass das Benutzerkonto, welches den Container ausführt, nach dem Logout weiterhin Kommandos ausführen dürfen muss (linger
). Diese Einstellung muss erst noch vorgenommen werden - andernfalls wird der Container nach einigen Sekunden gestoppt. Wenn Docker zum Einsatz kommt, entfällt dieser Schritt, da Docker einen Hintergrunddienst nutzt. Auch ist es notwendig, falls noch nicht geschehen, die containers.podman
Ansible-Collection zu installieren:
1$ ansible-galaxy collection install containers.podman
Die Anlage des ersten Benutzers erfordert das Ausführen eines Kommandos als git
-Benutzer im Gitea-Container - mittels angepasster changed_when
- und failed_when
-Bedingungen lässt sich dieser Schritt auch idempotent umsetzen.
Die gesamte Installation lässt sich dann wie folgt umsetzen:
1---
2- name: Deploy Gitea
3 hosts: podman-hosts
4 become: true
5 vars:
6 gitea_user: svc-gitea
7 gitea_admin: fmulder
8 gitea_password: trustno1
9
10 tasks:
11 - name: Enable linger
12 command: loginctl enable-linger "{{ gitea_user }}"
13 changed_when: false
14
15 - name: Create Gitea data directory
16 file:
17 path: "/home/{{ gitea_user }}/gitea"
18 state: directory
19 owner: "{{ gitea_user }}"
20 group: "{{ gitea_user }}"
21 mode: '0755'
22 become: false
23
24 - name: Start Gitea
25 containers.podman.podman_container:
26 name: gitea
27 image: docker.io/gitea/gitea:1.16
28 volume:
29 - "/home/{{ gitea_user }}/gitea:/data"
30 ports:
31 - "3000:3000"
32 - "10022:22"
33 env:
34 APP_NAME: "Pinkepank Gitea"
35 GITEA__DEFAULT__RUN_MODE: prod
36 GITEA__server__DOMAIN: "{{ ansible_fqdn }}"
37 GITEA__server__SSH_DOMAIN: "{{ ansible_fqdn }}"
38 GITEA__server__ROOT_URL: "http://{{ ansible_fqdn }}:3000"
39 GITEA__server__OFFLINE_MODE: true
40 GITEA__database__PATH: /data/gitea/gitea.db
41 GITEA__database__DB_TYPE: sqlite3
42 GITEA__picture__DISABLE_GRAVATAR: true
43 GITEA__service__DISABLE_REGISTRATION: true
44 GITEA__service__REQUIRE_SIGNIN_VIEW: true
45 GITEA__security__INSTALL_LOCK: true
46 become: false
47
48 - name: Create Gitea admin user
49 command: "podman exec -u git gitea /usr/local/bin/gitea admin user create --admin --username {{ gitea_admin }} --password {{ gitea_password }} --email root@localhost"
50 register: create_user
51 changed_when:
52 - create_user.rc != 1
53 - '"already exists" not in create_user.stdout'
54 failed_when:
55 - create_user.rc != 0
56 - '"already exists" not in create_user.stdout'
57 become: false
Die Container-Version 1.16 war zum Zeitpunkt der Veröffentlichung aktuell - bitte überprüfen, ob es eine neuere Version gibt!