Voici quelques notes sur le CI ( Continuous integration), CD (Continuous Deployment), IAC (Infrastructure as a Code)

En cours

A faire :

Faire un plan avec les trucs ci-dessous :

  • https://www.padok.fr/blog/outils-devops
  • https://xebialabs.com/the-ultimate-devops-tool-chest/open-source/

1 – Fonctionnement

Source : http://igm.univ-mlv.fr/~dr/XPOSE2012/Integration%20Continue/concept.html#1

Voici un plan expliquant les étapes de l’intégration continue

cisecuritychecking2

Coté infrastructure : Devops

source : https://blog.octo.com/bd-pet-vs-cattle/

l’Infrastructure as Code (IAC) nous permet de facilement et rapidement détruire et remonter des machines. Cela a donc grandement impacté la façon de travailler des ops ! Plutôt que de travailler sur des serveurs spécifiques qu’on maintient et qu’on bichonne des mois durant, on préfère détruire et remonter les machines régulièrement. On parle de « Pet vs Cattle ».

Différence entre déploiement continu et livraison continue : le déploiement continu réclame une validation humaine pour passer en production

Intégration continue CI

Dans le cadre de micro-service : but du CI est de produire une image OCI dans une registry puis faire un push dans registry -> Système -> OK mais rate le coche de l’automatisation

Le top : git push ou merge du dépot produise un évenement + déclenchement du build de l’image

2 – Build

  • 1 – Docker : Top
  • 2 – Packer : Top – Création d’image

Permet de préparer des templates d’images LXC, afin de déployer les conteneurs plus rapidement par la suite (on imagine devoir déployer 10, 20, 100 conteneurs)

Les autres

  • NAnt : .NET build
  • Gradle : ???
  • Grunt : Javascript build
  • sbt : En scala

3 – Devops

  • 1 – Ansible : Contient modules pour controller n’importe quoi
  • 2 – Rundeck : Logiciel simple d’orchestration
  • Terraform nous permet de déployer notre infrastructure : en partant des templates fabriqués avec Packer, Terraform créé nos conteneurs
  • 3 – StackStorm : Automatisation de workflow : Infrastructure management Sensor, rule, action – Python
  • Saltstack : GRATUIT – comme ansible en plus lourd – Python
  • 4 – Overcast : Petit tools pratique – deploie de VM sur le cloud – pas de site pas beaucoup doc: https://github.com/andrewchilds/overcast
  • Cloudify : Pas mal mais p-e un peu lourd a configurer – Open source cloud orchestration en python et yaml
  • Consul : J’ai rien compris – It is a tool for discovering et configuring services in your infrastracture
  • Etcd : Rien compris non plus A highly(available key value store for shared configuration and service discovery
  • Doozerd ou Doozer : Pratique mais facultatif -> est un magasin hautement disponible et totalement cohérent pour de petites quantités de données extrêmement importantes. Lorsque les données changent, il peut avertir immédiatement les clients connectés (pas de sondage), ce qui le rend idéal pour les données peu fréquemment mises à jour pour lesquelles les clients veulent des mises à jour en temps réel. Doozer est idéal pour le service de nom, les élections de base de données et les données de configuration partagées entre plusieurs machines.

Deployment

  • 1 – Rundeck : Cool en java mais lourd
  • Kitchen-CI : Test de déploiement : https://blog.octo.com/vos-tests-dinfrastructure-de-bout-en-bout-avec-kitchen/
  • Octopus deploy : interface sympa https://www.dnsstuff.com/software-deployment-tools
  • Capistrano : pas mal car open source -> https://github.com/capistrano/capistrano
  • JUJU : GRATUIT – Orchestrateur pour manager les charms – Config YAML – Pas mal dans le futur
  • IBM UrbanCode Deploy : PAYANT – et par IBM mais via gestion interface
  • NOLIO, elasticbox : PAYANT
  • XL Deploy -> PAYANT – Trop lourd
  • Spinnaker : GRATUIT mais compliqué a comprendre
  • Mcollective : Pour python
  • Zookeeper : Gestion de configuration -> JE vois pas trop l’utilité
  • Serf : Outil pour les nodes de cluster – A test pas trop d’info sur le site :

CI

Voici ma liste avec mes commentaires des outils CI

  • 1 – Jenkins : GRATUIT – Top & open source – Interface vieillote – Beaucoup de plugin
  • 2 – Go : GRATUIT – Simple et moderne – – Opensource
  • 3 – Drone.io : GRATUIT – En docker + Pipeline en yaml ( Comme Ansible)
  • 4 – Gitlab CI : GRATUIT – Top mais un peux lourd – la version payant n’apporte rien – top pour kubernetes
  • Concourse CI : Pipeline CI en GO – https://concourse-ci.org/
  • Buildbot : GRATUIT – Pipeline en python
  • Gitlab CI : Lourd – Intégrer un gitlab – En ruby – Fichier en ymal
  • BOSH : GRATUIT – PAAS – Pas assez suivi, trop jeune https://bosh.io/docs/
  • Cruise control : GRATUIT – Trop vieux
  • Spinnaker : Dans le cloud – Open source -> NON
  • Travis CI : PAYANT – You will receive unlimited builds and 3 concurrent jobs for free
  • Codeship : PAYANT – ( 100 build) par mois
  • Circle CI : PAYANT – SELF-HOSTED – CircleCI server licenses are $35/month per user
  • Bambou : PAYANT – Jusqu’à 10 tâches
  • Teamcity : PAYANT – 100 build configurations + 3 build agents
  • Bitrise : PAYANT – nécessite un compte Bitrise
  • Shippable : PAYANT – 150 builds/month for private projects
  • Spinnaker : Comprend pas trop
  • Snap : Mort

SCM /VS : Gestion de code source

  • GIT : Top – Permet un historique
  • SVN : Old school – Permet un historique

TEST

Les outils d’injection les plus populaires sont les suivants :

  • JMeter, développé au sein de la Fondation Apache
  • Neoload, de Neotys.
  • LoadRunner, développé par la société Mercury en 1999, racheté par HP en 2006, pour finalement être acquis en 2016 par MicroFocus .

Exemple de CI,CD

https://blog.alterway.fr/construire-un-pipeline-de-deploiement-continu-avec-kubernetes-et-concourse-ci.html