commit 19258aa74aa28f14dcd4f4cdbd75c504562a90e2 Author: Olivier Navas Date: Fri Apr 29 17:14:27 2022 +0200 premier commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..e2867b8 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# Role : docker_gitea + + +## Services fournis + +- main.yml : Installation de gitea sur un serveur docker_host +- configure_reverse_proxy.yml : Configuration d'un reverse proxy préalablement installé par le role reverse_proxy + + +## Variables + +Fournir les variables suivantes. Par exemple : + +```yaml +docker_gitea_fqdn: git.libretic.fr +docker_gitea_data_dir: /data1 +docker_gitea_service_id: gitea +docker_gitea_rp_cert: LE +docker_gitea_rp_docker_host: machine.domaine.local +docker_gitea_db_name: gitea +docker_gitea_db_user: giteadbuser +docker_gitea_db_password: mdp_de_giteadbuser +``` + +| Option | Valeur par défaut | Description | +|-----------------------------|-------------------|-------------------------------------------------------------------------------------------| +| docker_gitea_fqdn | | Le nom de domaine pour lequel le service gitea répond | +| docker_gitea_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | +| docker_gitea_service_id | | Le nom de service souhaité : conditionne le nommage des volumes et le routage par traefik | +| docker_gitea_ssh_port | 222 | Le numero de port local pour l'accès à gitea par ssh | +| docker_gitea_rp_docker_host | | pour configure_reverse_proxy.yml: fqdn de la machine contenant le conteneur docker | +| docker_gitea_rp_cert | LE | Type de certificat pour le reverse proxy (LE = letsencrypt) | +| docker_gitea_db_name | | Nom de la base de données postgres pour gitea | +| docker_gitea_db_user | | Nom du user postgres propriétaire de la base de données | +| docker_gitea_db_password | | Mot du passe du user postgres | + + + +## Poursuite de l'installation dans gitea + +Après le premier lancement : +- créer le compte administrateur + diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..ef3145f --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,2 @@ +docker_gitea_rp_cert: LE +docker_gitea_ssh_port: "222" diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..afabedd --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,10 @@ +- name: docker-compose-up + shell: | + docker-compose up -d + args: + chdir: /opt/{{ docker_gitea_service_id }}/ + +- name: reverse-proxy-reload + service: + name: apache2 + state: reloaded diff --git a/tasks/configure_reverse_proxy.yml b/tasks/configure_reverse_proxy.yml new file mode 100644 index 0000000..52ce20a --- /dev/null +++ b/tasks/configure_reverse_proxy.yml @@ -0,0 +1,11 @@ +- name: prepare reverse_proxy + template: + src: "{{ item }}" + dest: /etc/apache2/vhosts.d/{{ docker_gitea_fqdn }}/ + with_items: + - 0_vhost.conf + - 1_vhost_additional.conf + - 2_mds_exclusion.conf + notify: reverse-proxy-reload + + diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..66bc5c5 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,14 @@ +- name: docker directory + file: + path: /opt/{{ docker_gitea_service_id }}/ + state: directory + +- name: prepare docker-compose.yml + template: + src: "{{ item }}" + dest: /opt/{{ docker_gitea_service_id }}/ + with_items: + - docker-compose.yml + notify: docker-compose-up + + diff --git a/templates/0_vhost.conf b/templates/0_vhost.conf new file mode 100644 index 0000000..5be7cc7 --- /dev/null +++ b/templates/0_vhost.conf @@ -0,0 +1,2 @@ +# {{ ansible_managed }} +Use vhost_HTTPS_Generic {{ docker_gitea_fqdn }} {{ docker_gitea_rp_cert }} http {{ docker_gitea_rp_docker_host }} info OpenAccessPolicy AllowCrawlerIndexing On diff --git a/templates/1_vhost_additional.conf b/templates/1_vhost_additional.conf new file mode 100644 index 0000000..eaa988c --- /dev/null +++ b/templates/1_vhost_additional.conf @@ -0,0 +1,3 @@ +# {{ ansible_managed }} +ProxyErrorOverride off +AllowEncodedSlashes NoDecode diff --git a/templates/2_mds_exclusion.conf b/templates/2_mds_exclusion.conf new file mode 100644 index 0000000..ab0d77f --- /dev/null +++ b/templates/2_mds_exclusion.conf @@ -0,0 +1,2 @@ +# {{ ansible_managed }} + diff --git a/templates/docker-compose.yml b/templates/docker-compose.yml new file mode 100644 index 0000000..8513929 --- /dev/null +++ b/templates/docker-compose.yml @@ -0,0 +1,49 @@ +# {{ ansible_managed }} +version: '3.1' + +services: + gitea: + image: gitea/gitea:1.16.5 + environment: + - USER_UID=1000 + - USER_GID=1000 + - GITEA__database__DB_TYPE=postgres + - GITEA__database__HOST=db:5432 + - GITEA__database__NAME={{ docker_gitea_db_name }} + - GITEA__database__USER={{ docker_gitea_db_user }} + - GITEA__database__PASSWD={{ docker_gitea_db_password }} + restart: always + volumes: + - {{ docker_gitea_data_dir }}/{{ docker_gitea_service_id }}/gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik" + - "traefik.http.routers.{{ docker_gitea_service_id }}.entrypoints=web" + - "traefik.http.routers.{{ docker_gitea_service_id }}.rule=Host(`{{ docker_gitea_fqdn }}`)" + - "traefik.http.services.{{ docker_gitea_service_id }}.loadbalancer.server.port=3000" + ports: + - {{ docker_gitea_ssh_port }}:22 + networks: + - gitea + - traefik + + db: + image: postgres:13 + restart: always + environment: + - POSTGRES_DB={{ docker_gitea_db_name }} + - POSTGRES_USER={{ docker_gitea_db_user }} + - POSTGRES_PASSWORD={{ docker_gitea_db_password }} + networks: + - gitea + volumes: + - {{ docker_gitea_data_dir }}/{{ docker_gitea_service_id }}/postgres:/var/lib/postgresql/data + +networks: + traefik: + external: true + gitea: + internal: true +