diff --git a/README.md b/README.md
index 3edfbf7..88053cc 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,40 @@
-# role_modele
+# role_gitea
-Modèle
\ No newline at end of file
+Rôle de déploiement de gitea.
+
+## Fonctionnement
+
+Ce rôle nécessite la création d'un utilisateur dédié. La création de cet utilisateur passe par un rôle défini dans `meta/main.yml`.
+La configuration de logrotate est poussée en écrasant le fichier `/etc/logrotate.d/gitea`.
+
+## Variables
+
+### gitea_version_file
+
+URL permettant de déterminer quelle est la dernière version.
+
+Valeur par défaut: `https://dl.gitea.io/gitea/version.json`
+
+### gitea_version
+
+Afin d'installer une version spécifique, définir cette variable.
+
+Valeur par défaut: aucune
+
+### gitea_architecture
+
+Architecture de la machine où est effectué le déploiement.
+
+Valeur par défaut: `arm64`
+
+### gitea_install_path
+
+Emplacement d'installation du binaire.
+
+Valeur par défaut: `/opt/gitea`
+
+### gitea_logs_path
+
+Emplacement où seront stockés les journaux.
+
+Valeur par défaut: `/var/log/gitea`
diff --git a/defaults/main.yml b/defaults/main.yml
new file mode 100755
index 0000000..3a5d2f2
--- /dev/null
+++ b/defaults/main.yml
@@ -0,0 +1,10 @@
+---
+# vars file for gitea
+
+gitea_version_file: https://dl.gitea.io/gitea/version.json
+
+gitea_version: ""
+gitea_architecture: arm64
+
+gitea_install_path: /opt/gitea
+gitea_logs_path: /var/log/gitea
diff --git a/handlers/main.yml b/handlers/main.yml
new file mode 100755
index 0000000..b93d867
--- /dev/null
+++ b/handlers/main.yml
@@ -0,0 +1,10 @@
+---
+# handlers file for gitea
+
+- name: Redémarrer gitea.service
+ ansible.builtin.systemd:
+ enabled: true
+ daemon_reload: true
+ state: restarted
+ name: gitea.service
+ become: true
diff --git a/meta/main.yml b/meta/main.yml
index c58bebf..17c295d 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -1,7 +1,7 @@
galaxy_info:
namespace: ykn
author: pulsar89.5
- description: Rôle modèle
+ description: Rôle de déploiement de gitea
license: GPL-3.0-or-later
@@ -12,4 +12,15 @@ galaxy_info:
versions:
- all
-dependencies: []
+dependencies:
+ - role: users
+ vars:
+ users_role_gitea:
+ - name: gitea
+ comment: Dedicated GiTea user
+ update_password: on_create
+ password_lock: true
+ shell: /bin/bash
+ extras:
+ authorized_keys:
+ - command="/opt/gitea/gitea.bin --config='/opt/gitea/custom/conf/app.ini' serv key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
diff --git a/tasks/main.yml b/tasks/main.yml
new file mode 100755
index 0000000..e655ca2
--- /dev/null
+++ b/tasks/main.yml
@@ -0,0 +1,57 @@
+---
+# tasks file for gitea
+
+- name: Créer les dossiers
+ ansible.builtin.file:
+ owner: gitea
+ group: gitea
+ mode: u=rwx,g=rx,o=rx
+ state: directory
+ path: "{{ item }}"
+ become: true
+ loop:
+ - "{{ gitea_install_path }}"
+ - "{{ gitea_logs_path }}"
+
+- name: Récupérer le contenu du fichier de version
+ ansible.builtin.uri:
+ url: "{{ gitea_version_file }}"
+ return_content: true
+ follow_redirects: all
+ when: not gitea_version | length > 0
+ register: version_file
+
+- name: Extraire la dernière version
+ ansible.builtin.set_fact:
+ gitea_version: "{{ (version_file.content | from_json).latest.version }}"
+ when: not gitea_version | length > 0
+
+- name: Télécharger le binaire
+ ansible.builtin.get_url:
+ owner: gitea
+ group: gitea
+ mode: u=rwx,g=,o=
+ checksum: "sha256:https://dl.gitea.io/gitea/{{ gitea_version }}/gitea-{{ gitea_version }}-linux-{{ gitea_architecture }}.sha256"
+ url: https://dl.gitea.io/gitea/{{ gitea_version }}/gitea-{{ gitea_version }}-linux-{{ gitea_architecture }}
+ dest: "{{ gitea_install_path }}/gitea.bin"
+ become: true
+ notify: Redémarrer gitea.service
+
+- name: Déployer le service
+ become: true
+ ansible.builtin.template:
+ owner: root
+ group: root
+ mode: u=rw,g=r,o=r
+ src: gitea.service.j2
+ dest: /etc/systemd/system/gitea.service
+ notify: Redémarrer gitea.service
+
+- name: Déployer la configuration logrotate
+ become: true
+ ansible.builtin.template:
+ owner: root
+ group: root
+ mode: u=rw,g=r,o=r
+ src: logrotate.conf.j2
+ dest: /etc/logrotate.d/gitea
diff --git a/templates/gitea.service.j2 b/templates/gitea.service.j2
new file mode 100755
index 0000000..bc5d9d8
--- /dev/null
+++ b/templates/gitea.service.j2
@@ -0,0 +1,24 @@
+# {{ ansible_managed }}
+
+[Unit]
+Description=Gitea (Git with a cup of tea)
+After=syslog.target
+After=network.target
+
+[Service]
+RestartSec=2s
+Type=simple
+
+User=gitea
+Group=gitea
+
+WorkingDirectory={{ gitea_install_path }}
+ExecStart={{ gitea_install_path }}/gitea.bin web
+Restart=always
+
+Environment="USER=gitea"
+Environment="HOME={{ gitea_install_path }}"
+Environment="GITEA_WORK_DIR={{ gitea_install_path }}"
+
+[Install]
+WantedBy=multi-user.target
diff --git a/templates/logrotate.conf.j2 b/templates/logrotate.conf.j2
new file mode 100755
index 0000000..88f2119
--- /dev/null
+++ b/templates/logrotate.conf.j2
@@ -0,0 +1,11 @@
+# {{ ansible_managed }}
+
+{{ gitea_logs_path }}/*.log {
+ daily
+ missingok
+ rotate 14
+ compress
+ delaycompress
+ notifempty
+ create 0640 gitea gitea
+}