ARTICLES
bremond.io
Hello !
Vu que certaines personnes aiment parler de leur infra et surtout que moi j’adore lire ce genre de posts (parce que c’est cool), je vais faire pareil.
Bon, par contre, ça va pas autant envoyer la purée que Stack Overflow. M’enfin, c’est parti !
Le hard
J’ai plusieurs serveurs qui tournent, dans l’esprit j’essaie de ressembler à l’archi suivante :
- Un serveur “master” qui héberge mon code, mes images Docker, me sert de gateway SSH et qui va synchroniser tous mes serveurs frontaux (= ceux qui se prennent des requêtes depuis les internets)
- Des (bon, en l’occurrence, un seul pour l’instant) serveurs frontaux qui prennent en charge le traffic Web / mail / whatever
- Dans l’idéal, un ou des load-balancers : bon vu que j’ai qu’un serveur frontal, j’ai mis le load balancer directement dessus (on va pas gaspiller les sous non plus)
Mon master est un dédié “kidéchire” de chez Online (un petit serveur qui a été en vente pendant quelques jours, qui coûte moins de 3 €). Alors attention la bouse : VIA Nano 1 core 1.6 GHz, 2 Gio de RAM. Boum.
Mon frontal est un /cloud VPS-SSD-1 de chez OVH (à peine plus cher et un gros Intel Xeon 1 core à 2.4 GHz et 2 Gio de RAM). Par contre, c’est de la VM sur OpenStack (mais les perfs sont vraiment bonnes pour le prix).
Le soft
Comme tout bon devops qui se respecte (lol), j’utilise pas mal de briques open-source pour gérer mes projets.
Git
Bon tout le monde connaît. C’est comme SVN, mais en mieux (d’ailleurs je comprends pas pourquoi les gens utilisent encore cette bouse de SVN). Bref.
J’ai un gitolite qui tourne sur mon master. Ça marche bien et c’est très simple à administrer (un dépôt Git pour gérer tous les autres dépôts Git - assez déroutant au début). Je pense migrer sur du GitLab un jour parce que ça marche bien et c’est plus pratique à utiliser. Mais ça sera plus tard.
Docker
Bon celui-là tout le monde connaît aussi (et si vous connaissez pas, vous feriez mieux d’aller voir ce que c’est parce que le concept est vraiment bien !). Je fais une image Docker par projet, elle contient la conf du service ainsi que le code du soft, ce qui fait que je n’ai besoin de rien d’autre que de l’image pour déployer un service (j’ai un registry qui tourne sur mon master et qui héberge toutes les images de mes services).
Ansible
Ouais parce qu’on va pas s’emmerder à déployer tout ça en prod à la main ! Mon Ansible me permet de bootstraper les nouvelles machines (pour quand je serai riche et que j’en aurai plusieurs…) et les conserver en bon état, mais aussi de déployer mes services sur mon frontal.
Pourquoi Ansible ? Je connaissais Puppet mais je trouve que c’est bien trop le bordel à gérer pour une flotte assez légère de machines. Ansible c’est simple, ça marche bien et j’aime le concept de “le master impose sa conf régulièrement” et non pas “le slave pull sa conf quand il veut, s’il le veut”. Ça me semble plus safe (si un pirate désactive Puppet ou change des trucs, à priori, on est un peu comme un con ; alors qu’Ansible va forcer la conf et si y’a un truc qui merde, ça warn).
Nginx
J’ai toujours préféré Apache à Nginx (parce qu’il était là avant, parce qu’il permet de tout faire, parce que je le connais assez bien). Mais quand j’ai dû monter un reverse proxy, je n’ai pas hésité une seule seconde à mettre du Nginx (HAProxy c’est bien, mais c’est sacrément complexe pour ma petite installation).
Mon Nginx tourne dans un container sur mon frontal, il fait office de reverse proxy entre les internets et mes applis Web. Il gère aussi le cache ainsi que la terminaison SSL. Ce reverse proxy me permet d’avoir plein de services Web qui tournent sur une seule machine et qui sont tous disponibles sur les ports 80 et 443. Et puis c’est cool d’avoir un reverse proxy.
Let’s Encrypt
Bon c’est pas vraiment du soft, mais ces mecs ont tellement géré à proposer du SSL gratos et aussi facilement que je me dois de les citer. Ça marche bien, c’est gratuit et ça chamboule un peu ce marché bien trop installé du SSL payant. Bravo.
Postfix
Pour pouvoir relayer les mails qui arrivent sur mon nom de domaine. Pas question d’avoir une vraie gestion de la boîte mail avec les comptes et compagnie, c’est bien trop insupportable à paraméter et à gérer, je préfère forward à Gmail. Les mails, c’est vraiment de la merde (techniquement parlant).
CentOS
Parce qu’il faut bien un OS pour gérer tout ça. Debian ou CentOS, le débat infini : moi j’ai commencé avec Fedora, du coup j’ai pas hésité quand j’ai du choisir une distrib’ serveur. Oui, je préfère yum ; oui, je préfère firewalld.
La suite
Bien sûr, il me manque certaines briques essentielles comme la gestion des logs (la rotation, le stockage et la centralisation) et le monitoring. Il faudra que je rajoute tout ça, mais pour l’instant je me concentre sur la mise en place de mes services principaux (ce blog entre autres).