Skip to content

Commit

Permalink
Merge pull request #1 from vbauchart/version-jams-livecoding
Browse files Browse the repository at this point in the history
Version jams livecoding
  • Loading branch information
vbauchart authored Jun 6, 2023
2 parents 7ae75c7 + d6df63b commit 8d71aef
Showing 1 changed file with 82 additions and 56 deletions.
138 changes: 82 additions & 56 deletions infra-as-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,11 @@ template: with-logo

## Parcours

### UPJV DESS ISRI 2005

### Consultant Devops pour BV Associates (11 ans)

### Ingenico racheté par Worldline (5 ans)
### Manager équipe CI/CT/CD pour Ingenico (5 ans)

### Arolla depuis 2023
### Consultant Devops Senior pour Arolla depuis 2023

## Compétences

Expand Down Expand Up @@ -344,9 +342,9 @@ $ git commit -am'upgrade to 10 servers' # ajoute message pertinent
$ git push # la CI/CD prend le relais
```

### Suivre le déploiement dans l'environnement de test ☕
### Suivre le déploiement de l'environnement de test dans la CI

### Tester
### Valider

### Recommencer

Expand All @@ -363,7 +361,9 @@ $ git checkout master # branche de release
$ git push # la CI/CD prend le relais
```

### Suivre le déploiement dans l'application de monitoring ☕
### Suivre le déploiement en production dans la CI ☕

### Vérification du monitoring

--
.image-flash[![Alt text](img/thats-iac.gif)]
Expand All @@ -383,8 +383,6 @@ $ git push # la CI/CD prend le relais

### Terraform

### *Ansible*

## 3. Les orchestrateurs

### Kubernetes/Docker
Expand Down Expand Up @@ -480,24 +478,29 @@ systemctl restart nginx

### Comment permettre d'avoir plusieurs instances de l'application avec des paramètres différents ?

## Passage à l'échelle

### Comment déployer à l'échelle d'un SI ?

### Comment gérer la parallélisation ?


[//]: ################################
---

## *Petite pause vocabulaire !*
# *Petite pause vocabulaire !*

## Idempotence en mathématique

### une fonction a le résultat qu'on l'applique une ou plusieurs fois

### Par exemple, la fonction `abs()` est idempotente :

```
```js
abs(abs(x)) = abs(x)
```

```
```js
abs(-5) = 5
asb(abs(abs(-5))) = 5
```
Expand Down Expand Up @@ -570,7 +573,7 @@ sed 's/^listen 80 /^listen 8080 /' /etc/nginx/conf.d/default.conf

## Principales fonctionnalités attendues :

### .red[Classifier] les serveurs : leur donner un ou plusieurs rôles
### .red[Classifier] les serveurs : leur donner un ou plusieurs rôles, avec des paramètres

### Créer des .red[ressources systèmes] de manière .red[idempotente] (fichiers, repertoires, user, groups, configuration réseau, etc...)

Expand Down Expand Up @@ -938,7 +941,7 @@ template: with-logo


.center[<div class="mermaid">
flowchart TD
flowchart TD

subgraph Ansible
Playbook([Playbook]) --ssh--> Node1
Expand All @@ -949,13 +952,13 @@ template: with-logo
</div>]

.center[<div class="mermaid">
flowchart BT
flowchart TD

subgraph Puppet
Agent1 --request--> Master([Master])
Agent2 --request--> Master([Master])
Agent3 --request--> Master([Master])
Agent4 --request--> Master([Master])
Node1 --request--> Master([Master])
Node2 --request--> Master([Master])
Node3 --request--> Master([Master])
Node4 --request--> Master([Master])
end

</div>]
Expand Down Expand Up @@ -1008,13 +1011,28 @@ Je simplifie à mort

### Un mini-langage qui décrit la construction de l'image : `Dockerfile`

### Le langage `Dockerfile` permet de faire simplement tout ce que fais un gestionnaire de configuration

## Cadeau bonus

### Un système d'héritage d'images pour en créer des nouvelles

### Un système en "couches" (`layers`) qui permet une grande optimisation du stockage et du transfert des images

### Un protocole de `registry` qui permet de stocker des images sur un serveur central


[//]: ################################
---

## Pourquoi ce système concurence les gestionnaires de configuration ?

### Permet d'effectuer un "pré-déploiement" sans la machine cible

### Pas besoin d'indempotence pour gérer la mise à jour, on recrée l'image from scrach à chaque fois

### Sépare proprement les ressources nécéssaires à l'OS (kernel, réseau, etc...) et les ressources nécéssaires à l'application

[//]: ################################
---

Expand All @@ -1028,6 +1046,8 @@ Je simplifie à mort

### Docker peut rediriger un "vrai" port vers un `container`

### On peut dupliquer l'instance à l'infini !! 🚀

[//]: ################################
---
layout: false
Expand All @@ -1038,25 +1058,6 @@ template: with-logo
https://github.com/vbauchart/presentation-infra-as-code-k8s-demo


[//]: ################################
---
layout: true
template: with-logo

# Docker est-il un gestionnaire de configuration ?

## Plus besoin d'installer des serveurs, il suffit de récupérer l'`image`

## Chaque serveur n'a besoin que d'un démon Docker et rien d'autre

## On peut lancer plusieurs `containers` sans crainte de conflit

[//]: ################################
---

## Plus besoin de gestionnaire de configuration


[//]: ################################
[//]: ################################
---
Expand Down Expand Up @@ -1090,6 +1091,23 @@ template: with-logo
[//]: ################################
---

## Famille des orchetstrateurs

### Kubernetes (**k8s** pour les intimes)

### Docker Swarm

### Amazon ECS

### _Redhat Openshift_ (interface à k8s)

### _Rancher_ (interface à k8S)

### .grey[_Mesos_ (discontinued)]

[//]: ################################
---


## Décrire des groupes d'images Docker (`Pod`)

Expand Down Expand Up @@ -1125,7 +1143,7 @@ https://github.com/vbauchart/presentation-infra-as-code-k8s-demo

## Inconvénients 💩

### Déplacement de la complexité sur l'administration de Kubernetes (Sécurité, mise à jour, ...)
### Déplacement de la complexité sur l'administration de Kubernetes (Sécurité, mise à jour, debug, ...)

### Devenu standard de-facto, au détriment des autres solutions

Expand Down Expand Up @@ -1156,7 +1174,16 @@ template: with-logo

## Famille des provisionners

## Créé pour gérer la création des ressources Cloud
### Terraform

### Pulumi

### Cloudformation

### *Ansible*

## Créé pour gérer la création des ressources mises à disposition par API HTTP

### Amazon Web Services

### Google Cloud Platform
Expand All @@ -1167,10 +1194,6 @@ template: with-logo

### OpenStack

### ...

## Plus globablement, c'est un outil spécialisé pour gérer des ressources externes créé par API HTTP CRUD :

### Active Directory

### Jira/Confluence
Expand All @@ -1182,7 +1205,7 @@ template: with-logo

[//]: ################################
---
## A chaque lancement, Terraform va lire le contenu des fichiers de description (format .red[HCL])
## A chaque lancement, Terraform va lire le contenu des fichiers de description (langage .red[HCL])

## Si la ressource distante n'existe pas:

Expand Down Expand Up @@ -1219,21 +1242,24 @@ template: with-logo

## 1. Les gestionnaires de configuration

### Puppet, Ansible
### Automatise ce qu'on savait faire manuellement

### *Docker* : .grey[Usage permetant d'arriver au même résultat qu'un gestionnaire de configuration]
### Nécéssite une coopération forte entre Devs et Ops

## 2. Les provisionneurs
### Gèrent aussi bien l'installation système que l'installation applivative

### Terraform
## 2. Les orchestrateurs de containers

### *Ansible* : .grey[possède des modules indempotents pour interagir avec des API HTTP CRUD, et non-HTTP comme des switch, des routeurs...]
### Sépare plus proprement les responsabilité entre les Devs et les Ops

## 3. Les orchestrateurs
### Plus complexe pour les Ops, plus simple pour les Devs

### Kubernetes
## 3. Les provisionneurs

### Utile pour les ressources fournies par un tiers (Cloud, Platform Teams, SAAS, ...)

### Indispensable pour la création des ressources systèmes (VM, réseau, DB, etc...)

### *Ansible* : .grey[Le module `shell` permet de lancer des tâches parallèle sur une ferme de calcul]

[//]: ################################
---
Expand All @@ -1244,7 +1270,7 @@ template: with-logo

### Ansible + Kubernetes

### Puppet + Docker
### Puppet + Kubernetes

### Terraform + Ansible

Expand Down Expand Up @@ -1416,9 +1442,9 @@ Cette présentation est faite en Markdown

## Team Topology (Platform Teams)

### Les équipes de developpements sont résponsable de toute la chaine
### L'équipe de developpement (_Stream-aligned Team_) gouverne toute la chaine de production de leur logiciel

### Les Platform Teams fourni une "interface" pour interagir avec l'infrastructure
### Les Ops (_Platform Team_) fournissent des automatisations pour interagir avec l'infrastructure

???

Expand Down

0 comments on commit 8d71aef

Please sign in to comment.