Jenkins dans un container docker avec ansible, terraform, azure cli, gcloud cli, aws cli embarqué

Dans cet article je vais vous expliquer comment créer une image docker jenkins adapté a votre besoin ( avec plus ou moins de binaires… ).

Jenkins c’est quoi déjà ? C’ est un outil open source d’intégration continue et plus si affinités ….

Voici les binaires essentiels que nous allons ajouter a l’image de jenkins:

  • terraform
  • docker cli
  • aws cli
  • azure cli
  • Gcloud cli

Bien sur cela va de soit , l’image ne va pas être toute light , mais vous aller avoir tous les outils nécessaires pour pouvoir faire notre intégration partout où on le souhaite dans le cloud ou en local.

L’image est basé sur une debian 10 buster avec ansible , curl , git qui fait de base 262MB

Disponible sur:

registry.mondeunix.com/base/debianbuster_mondeunix_base:latest

Voici l’image de jenkins ( 2.55GB décompréssé et 901MB compréssée )

registry.mondeunix.com/jenkins/jenkins_mondeunix_master:latest

Le fichier docker-compose est dans notre gitlab:

https://gitlab.mondeunix.com/docker/jenkins/-/blob/master/docker-compose.yml

Le Dockerfile est a l’url suivante:

https://gitlab.mondeunix.com/docker/jenkins/-/blob/master/Dockerfile

Nous allons pouvoir déployer notre stack:

docker stack deploy -c docker-compose.yml cicd
Creating network cicd_default
Creating service cicd_jenkins_app
docker service ls | grep cicd
l1lwfb9ddxay cicd_jenkins_app replicated 1/1 registry.mondeunix.com/jenkins/jenkins_mondeunix_master:latest *:83->8080/tcp, *:50000->50000/tcp
root@thinserv1:~/docker-compose/dev/jenkins# docker service logs -f cicd_jenkins_app
cicd_jenkins_app.1.lmr38u3o7i68@thinserv1 | Correct java version found
cicd_jenkins_app.1.lmr38u3o7i68@thinserv1 | Starting Jenkins Automation Server: jenkins.
….
cicd_jenkins_app.1.m55alzy1vqpf@thinserv1 | 2020-05-02 17:12:44.731+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization
cicd_jenkins_app.1.m55alzy1vqpf@thinserv1 | 2020-05-02 17:12:44.843+0000 [id=21] INFO hudson.WebAppMain$3#run: Jenkins is fully up and running

Et voilà notre jenkins:

Bientôt disponible sur https://cicd.mondeunix.com

En front nous avons un haproxy voici ma configuration :

frontend https
log global
bind *:443 ssl crt /etc/haproxy/certs npn spdy/2 ciphers ECDHE-RSA-AES256-SHA:RC4-SHA:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM
option http-server-close
option forwardfor
reqadd X-Forwarded-Proto:\ https
reqadd X-Forwarded-Port:\ 443
acl cicd hdr(host) cicd.mondeunix.com
use_backend cicd if cicd
backend cicd
mode http
option http-server-close
http-request redirect scheme https if !{ ssl_fc }
server jenkins1 192.168.1.5:83 check

Je vous ferais un autre article avec une image plus light basé sur alpine.

This site uses Akismet to reduce spam. Learn how your comment data is processed.