Linux OSBN/Ubuntuusers Planet XING / LinkedIn

Gitea Podman-Container unbeaufsichtigt via Ansible bereitstellen

Gitea Installationsassistent

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:

$ 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:

- name: Deploy Gitea
  hosts: podman-hosts
  become: true
  vars:
    gitea_user: svc-gitea
    gitea_admin: fmulder
    gitea_password: trustno1

  tasks:
    - name: Enable linger
      command: loginctl enable-linger "{{ gitea_user }}"
      changed_when: false

    - name: Create Gitea data directory
      file:
        path: "/home/{{ gitea_user }}/gitea"
        state: directory
        owner: "{{ gitea_user }}"
        group: "{{ gitea_user }}"
        mode: '0755'
      become: false

    - name: Start Gitea
      containers.podman.podman_container:
        name: gitea
        image: docker.io/gitea/gitea:1.16
        volume:
          - "/home/{{ gitea_user }}/gitea:/data"
        ports:
          - "3000:3000"
          - "10022:22"
        env:
          APP_NAME: "Pinkepank Gitea"
          GITEA__DEFAULT__RUN_MODE: prod
          GITEA__server__DOMAIN: "{{ ansible_fqdn }}"
          GITEA__server__SSH_DOMAIN: "{{ ansible_fqdn }}"
          GITEA__server__ROOT_URL: "http://{{ ansible_fqdn }}:3000"
          GITEA__server__OFFLINE_MODE: true
          GITEA__database__PATH: /data/gitea/gitea.db
          GITEA__database__DB_TYPE: sqlite3
          GITEA__picture__DISABLE_GRAVATAR: true
          GITEA__service__DISABLE_REGISTRATION: true
          GITEA__service__REQUIRE_SIGNIN_VIEW: true
          GITEA__security__INSTALL_LOCK: true
      become: false

    - name: Create Gitea admin user
      command: "podman exec -u git gitea /usr/local/bin/gitea admin user create --admin --username {{ gitea_admin }} --password {{ gitea_password }} --email root@localhost"
      register: create_user
      changed_when:
        - create_user.rc != 1
        - '"already exists" not in create_user.stdout'
      failed_when:
        - create_user.rc != 0
        - '"already exists" not in create_user.stdout'
      become: false
Die Container-Version 1.16 war zum Zeitpunkt der Veröffentlichung aktuell – bitte überprüfen, ob es eine neuere Version gibt!

Sharing is caring

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.