AWS: Installer et relier Gitea à une base de données RDS

AWS: Installer et relier Gitea à une base de données RDS

29 janvier 2020 0 Par Mairien Anthony

Un des derniers articles traitant de l’offre gratuite d’AWS, ici nous allons créer une base de données via RDS et la relier à un conteneur Gitea.

On ne s’arrête pas décidément ! Aujourd’hui nous allons donc procéder à l’installation d’un conteneur Gitea sur une instance EC2, puis nous allons ensuite créer une base de données MySQL sur une instance RDS et nous la connecterons à notre serveur. En route !

I) Gitea, c’est quoi ?

Le site developpez.com le décrit bien mieux que moi :

Comme décrit par son site web, Gitea est un service Git auto-hébergé très simple à installer et à utiliser. Il est similaire à GitHub, Bitbucket ou Gitlab. Le développement initial s’est basé sur l’idée de Gogs (un outil léger, écrit en Go, open source et se voulant être une solution sans prise de tête), mais le projet a été forké puis renommé Gitea. Son objectif est de fournir aux utilisateurs un moyen simple et rapide pour mettre en place un service Git auto-hébergé.

Vous l’aurez compris, c’est donc un service Git à installer soi-même. Nous l’installerons au moyen d’un fichier docker-compose, ce qui permettra de se faciliter la vie en plus de gagner du temps.

II) Et RDS, des infos ?

Encore une fois, allons consulter rapidement le site officiel d’AWS :

Amazon Relational Database Service (Amazon RDS) vous permet d’installer, de gérer et de mettre à l’échelle facilement une base de données relationnelle dans le cloud. Ce service offre une capacité économique et ajustable ainsi qu’une automatisation des tâches administratives chronophages, telles que l’allocation de matériel, le paramétrage de bases de données, l’application de correctifs et les sauvegardes. Vous pouvez ainsi vous concentrer librement sur vos applications, afin de leur donner les performances rapides, la haute disponibilité, la sécurité et la compatibilité dont elles ont besoin.

Amazon RDS est disponible sur plusieurs types d’instances de base de données, optimisées pour la mémoire, les performances ou les I/O. Amazon RDS vous donne le choix entre six moteurs de base de données communs, notamment Amazon AuroraPostgreSQLMySQLMariaDBOracle Database et SQL Server. Vous pouvez utiliser AWS Database Migration Service pour migrer ou répliquer facilement vos bases de données existantes sur Amazon RDS.

Donc vous l’aurez compris, RDS nous permet de créer une base de données (MySQL, Oracle, PostgreSQL…) sans devoir se préoccuper de son installation, sa sécurisation, et son optimisation. La scalabilité est aussi extrêmement facile et sans prise de tête.

Pour notre instance EC2 nous partirons donc sur une base de données MySQL.

III) Création du service RDS

Je ne vais pas détailler la création de notre instance EC2, vous avez l’habitude désormais. J’y reviendrai simplement après l’installation de la base de données pour vous montrer le fichier Docker-Compose que nous allons utiliser, et vous montrer aussi l’utilisation de l’Elastic IP.

Bien, une fois sur votre compte AWS, allez sur le service RDS puis démarrez la création d’une instance :

Ici nous allons choisir la méthode Standard Create, en prenant soin de sélectionner MySQL (oui je sais, sur la capture d’écran j’avais choisi MariaDB, mais ignorez ça :p).

Pour la version on se contentera de celle par défaut. Ensuite nous choisissons le modèle, ici prenez bien soin de prendre l’Offre gratuite, sinon des coûts pourront être facturés ! On nomme instance notre instance, puis on renseigne un nom d’utilisateur/mot de passe :

Vient ensuite le choix de la taille de l’instance, ici pas réellement le choix, on se contente de la version db.t2.micro qui propose 1 vCPU, 1Go de RAM, et 20Go de HDD :

Petite note ici aussi ! Prenez bien soin de désactiver la mise à échelle automatique du stockage, sinon vous risquez là aussi de rencontrer des coûts supplémentaires car votre base de données augmentera sa taille si besoin est.

Vient ensuite la partie Connectivité, ici nous cochons simplement la case Accessible publiquement, histoire de nous faciliter la liaison avec notre instance EC2, et nous rattachons aussi notre groupe de sécurité VPC « EC2 Test Instance » qui ne fait qu’autoriser l’entièreté du trafic entrant/sortant vers notre instance. Bien entendu en production on ne fera jamais ça… on ne rendra pas accessible publiquement la base de données, et on autorisera seulement notre instance EC2 à s’y connecter et seulement sur le port MySQL (3306).

Bien, on touche à la fin ! Ici nous créons simplement notre base de données avec comme nom gitea, et nous activons aussi les sauvegarde automatiques avec une rétention de 7 jours, tant qu’à faire…

On valide le tout et il ne nous reste plus qu’à patienter. D’ailleurs, je ne sais pas si cela est dû à l’offre micro ou si c’est dû à MySQL, mais la création de l’instance aura prise 5 bonnes minutes…

Une fois terminée, on clique sur cette dernière pour relever le point de terminaison et port :

On le note bien précieusement car nous allons en avoir besoin dans quelques instants.

IV) Création du Docker-Compose de Gitea

Ici rien de très sorcier, on installer Docker/Docker-Compose sur notre instance EC2 et on créer un fichier docker-compose avec ceci :

version: "2"
networks:
  gitea:
    external: false
services:
  server:
    image: gitea/gitea:latest
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - DB_TYPE=mysql
      - DB_HOST=bdd-01.cakbwc9ecp6n.eu-west-3.rds.amazonaws.com:3306
      - DB_NAME=gitea
      - DB_USER=admin
      - DB_PASSWD=Sup3rP@$$W0rd
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
       - "3000:3000"
       - "222:22"

On crée donc un service « server » relié à un network gitea, et on renseigne les paramètres de la base de données. On ouvre ensuite les ports nécessaires et on alloue les volumes demandées par Gitea. Si vous vous rendez sur la doc’ de Gitea, vous verrez que ce n’est ni plus ni moins qu’un quasi copier/coller du docker-compos par défaut !

Une fois terminé, on le démarre :

docker-compose up -d

Et si l’on se rend sur l’URL de notre instance EC2, sur le port 3000 :

Bingo ! On peut procéder à l’installation ! Veillez bien à remplacez les éventuels champs localhost par le domaine de votre instance pour éviter quelques bricoles, et le tour est joué !

Comme vous pouvez le voir, on peut désormais créer des dépôts, des organisations… bref, tout fonctionne niquel !

V) Bonus: configurer l’Elastic IP pour l’instance EC2

Par défaut lorsque vous redémarrez une instance EC2, son adresse IP changera, ce qui peut être un chouilla embêtant. Pour cela il vous suffit d’attribuer une Elastic IP à votre instance, qui malgré son nom veut simplement dire une adresse IP statique, qui ne changera pas peu importe l’état de votre instance. Pour ce faire, rendez-vous dans Réseau et sécurité, puis Adresse IP Elastic :

Ici il vous suffira de cliquer en haut à droite pour en demander une, puis ensuite de se rendre à nouveau sur votre liste d’instances, clic droit sur celle voulue et vous pourrez lui attribuer l’adresse IP en question :

A noter que l’on peut aussi directement l’attribuer depuis le panel Adresse IP Elastic, car comme dirait l’autre, tout les chemins mènent à Rome :

Ne pas oublier lors de la résiliation de votre instance gratuite de libérer votre adresse IP Elasctic, pour ne pas avoir de surprise encore ici au niveau du coût 😉

Et bien c’est à peu près tout, rien de très exceptionnel mais nous aurons pu découvrir Gitea (si vous ne le connaissiez pas?), RDS, et comment mettre nos deux services Cloud en relation. Pour les prochains articles traitant du Cloud, j’essayerai d’aller voir du côté d’Azure / Google Cloud Platform.