Skip to content

Instantly share code, notes, and snippets.

@DaffyDuke
Last active February 2, 2019 21:42
Show Gist options
  • Save DaffyDuke/548f3d5a86bfafab3d872acda2bac20a to your computer and use it in GitHub Desktop.
Save DaffyDuke/548f3d5a86bfafab3d872acda2bac20a to your computer and use it in GitHub Desktop.
Notes prises pendant le cfgmgmtcamp 2018 (draft)

5 y of #cfgmgmtcamp

Kris Buystaert nous fait un résumé de ces 5 dernières années. On part d'une track du FOSDEM archi pleine à un évènement dédié le CFGMGMTCAMP. Ca a failli s'appeler infracode :-)

A brief history of configuration / @markburgess_osl

from vmsprawl to containersprawl concern business value => adapt particulare case, tweaking like apt database photo intéressante : bidonville vs la city => mutation improvement with chef : from configuration to timeplanning mais ce qui manque le plus => les forêts ! temps d'adoption d'un soft , pour l'enlever et se remettre => VM / Cloud / Containers / ... context vs semantics from meaning to real change des humains à la magie :-) besoin de reprendre le replay pour les swardley graphs the way to manage problem is to manage fluctuations, take a plan you cant fix cpu by hand, you need technology you build an agent, you have no access to operating systems to fix it, you need tools to improve it beyond "fire and forget" : approche voiture / informatique (photo) we dont need to adapt, just through away and try again In search of certainty => oreilly

Now the hard work start

Luke Kanies @puppetmasterd Puppet est vue comme une tour d'ivoire a generic sysadmin => a puppet user => a single personn

Its gonna be the future soon

by Adam Jacob Time to pronosticate Tomm y Lee / Motley Crue : bullshit to predict future

Is than an ansible stop holding it like a puppet

Felix Frank opensource vagabond from Berlin The unblelievable machine company The pig .... machine generated : slides façon "dessins animés stabilo" credo : plus besoin de wiki de documentation, le code EST la doc

Parelell

Description

Puppet

clas varnish + cla ss apache + class jvm

  • each packages
  • depencances betwin ressources
  • perhaps with other modules

Ansible

role varnish + role apacje + role jmv

  • tasks to install packages
  • requirements to other roles

Architeclture

Puppet

code manifest puppet db on master, agent toi poll

Ansible

SSH to hosts, code from hosts and variables run playbook

Naming

puppet vs ansible resource type vs module module vs rol role vs group reosurce vs task

Code

let's see a puppet manifest Ansible writen in YAML (playbooks) to apply roles on servers forge vs galaxy

Reporting

works wih Foreman => should try AWX

Differences

Puppet

data input in the code (desired state vs current state) calcul catalgo, compute on master then update to hosts

Ansible

a play is like a projection : your code needs to know whate is going in your datacenter where puppet know your datacenter (fatcs) so ansible needs hosts variables to run tasks

Tips

your site.yml shoul not be the primary use case runnin the code for all machines will become too slow sooner or later tags arent very flexible do make dry roles (not on playbook) best practices on asnibel

  • if ansible like puppet site.yaml => group 1, 2, .... then too late
  • ansible is orchestrate deploy database, then deploy app, run indus

Sysdig / monitoring

par les createurs de wireshark strace + tcpdump + htop + iftop ..... support docker / lxc => k8s sysdig prove in kernel area, apps in user area uses tracepoint see open, close, socket, connect(), accept() on containers : on the host but do not understand namespace => as a container : dee stats, top, logs, ctop, strace sysdig's falco = home secure analogy,

  • prevent intrusion (door locks, window sensors, bar floor windows,)
  • detect intrusion :camera
  • prevent intrusion :
  • detect : sysdig,
  • activity monitor with rules
  • macros
  • lists
  • rules
  • support filtering, joins, type, evt type You uses tracers in your application code, and use sysdig filters expressions https://www.sysdig.org/falco/ it can make alerting and outputs (syslog/file/shell notif) combine ruleset falco -r besoin d'ajouter un démon pour k8s something like audit

Compatible Linkerd : https://linkerd.io/

Auditing AWS Serverlessly - Thomas Krag

using cloud custodian https://github.com/capitalone/cloud-custodian scheduled/cron ; policies => RDS can not add storageencrypted (:false) notifiers left over EBS volumes are making my aws bill explode save dollars when too many ec2 started or lost policies.yaml

  • name du compute
  • desc ecs, ressource ec2, mode : type/role/events
  • custodian validate custodian.yaml

Terraform for fun and profit - Bram Vogelaar & Julien Pivotto

Ending only :

terraform init -backend-config=tfvars
terraform get

terraboard fmt for space/tabs validate : think listing ++ terraform plan : can patch/delete existing stacks can import <dns_record.test> gestion des CI/CD with terraform : should use others packer, vault, etc, .... terraform is fun

Terraboard - Raphael Pinson

https://twitter.com/raphink/media a web dashboard for terraform states terraboard, lest go, infrastructure developper devoops enthousiast (deuxième fois que je vois avec un deuxième o ....) bosse pour Camptocamp, utilise teraform depuis 2016 idée : dashboard de remote states sur plusieurs backend : s3, consul, etcd, http, swift, etc .... locking s3 sur dynamodb difficile donc de savoir où est ma resource (punaise, un français qui parle bien anglais) terraboard, écrit en go+angularjs, supporte uniquement S3/dynamod pour l'instant utilise pgsql et ben ..... https://www.camptocamp.org/serac produit des dashboard "à la foreman" on peut déplier le sstate vieux pour avoir les détails installation via go get bon j'arrete les photos 🙂 il fait son install via des docker d'un wordpress/mysql/.... il fait son install via des docker d'un wordpress/mysql/.... faut mettre acceskey/secretkey/bucket pour le dashboard (logique) ok, une stack de 4 container pour terraboard, pas deconnant en soit, on attend que ça popup ok , il commence par son propre tf dans le dashboard donc, si je pige, c'est "juste" un template de wordpress .....

Event driven infrastructure

by Mike Place @cachedout SaltStack leader remerciements aux trois guests

distributed systems with a convergence problem

comment traiter des systèmes complexes 3 pillars o distributed computing

  • be aware of existence and capabilitied of its member nodes
  • coordinate between nodes
  • inter process properties of a message bus
  • data model
  • command set
  • transport for Ops
  • monitoring
  • serverless
  • cfgmgmt

siloed streadm of events

automation => packae workflows, initiate by lazy humans, pb sur desired state vs state

event driven programming

user actions (mouse, key press) ... => réaction à une action manuelle humaine (GUI = nodejs and other) critiques habituelles : procedures, ordres, ... souvent asynchrone, donc difficile à débuguer; melded approach tout le basard CI/CD dans le même bus avec des rules à appliquer

disadvantages

  • difficile de coupler producteur/consammeteurs
  • perte de message
  • difficile de bloquer un message/action

advantages

  • dist, scalable
  • like devops
  • allow complete lifcycle

How to do that

create a flow, a message bus (transport, metriques, actors, reactors) a topologu of messages, trouver un outil de jms telemetry : emettre sur le bus et kiss

Pillar of salt

http://www.yet.org/2016/09/salt/

Making Immutable Infrastructure simpler with LinuxKit- Justin Cormac

@justincormack voir netflix building with legos 2011 "in the cloud ency, rwe know exactly ...."

chad fowler "trash your servers and burn
as a system administraytor, one of the scariest things I ever encounter "

NIS application container security guide 2017

getting updates right is hard, retrovision update, oreilly, an introduction to immutable infrastructure https://www.oreilly.com/ideas/an-introduction-to-immutable-infrastructure immutable is aname split code (immutable) and application data (mutable) immutable does not mean stateless LinuxKit has an immutable root filesystem and writable datas https://github.com/linuxkit/linuxkit need to deal with scaling, consistancy, replicaation, failure, ....

why immutable infra products ?

Packer => create AMI, workflow complex, involve booting machine A priori pas de tooling sur une machine de prod

LinuxKit

cfgmgmt tool, built for automation not a distro test and ship, designed to be a pipeline packages are containers, larger chunk VM isolation will be added later startup : init, runc, onboots, containerd, services ~ like a pod in kubernetes https://containerd.io/

can run from ISO ctr -n -d container ....

why no one is using this ?

linuxkit or packer, lack of tools at scale => check Netflix update with kexec/reboot "time to do some crazy bullshit with operating systems" Adam Jacob

Immutable infrastructure isn't the answer

Le speaker Sam Bashton bosse chez Claranet, c'est un poilu archi certifié AWS (depuis 2009) mais aussi GCP ou peppeter depusi 2007.

Il nous raconte qu'il a essayé de faire de l'infrastructure immutable. Sa conférence est probablement une des plus intéressante non pas sur le fond mais sur l'humour et l'honnêteté du personnage.

Il nous explique comment il a fait comme Netflix (mais je n'ai pas retrouvé les références d'application et encore moins d'abandon)

Entendu :

  • Kubernetes n'est pas parfait, mais tout le monde fait çà alors faut bien en faire quand t'es hébergeur
  • Terraform c'est cool mais surtout parce que cloudformation est naze

Il nous montre une de ses problématique : il popup des EC2 en autoscale. En plus de tout ça, il réalise des déploiements bleu/green voire Canary.

Bon du coup, il s'est vite retrouvé avec une colletions d'images en fonction des environements, de la taille des VM provisionnées, de la taille des JVMs démarrées, un consul pour gérer des templates : complexe. Qui plus est, générer une image avec packer.io lui prenait à chaque fois au moins un quart d'heure multiplié par le nombre de template, c'était beaucoup trop long.

Il a donc utilisé un module puppet pour customiser ses images. Mais il a dû faire face à une nouvelle difficulté : reconstruire des images / installer des packages quans les repo officiels sont indisponibles.

On a donc cette collection d'outils :

  • packer.io pour générer une AMI
  • puppet pour faire la configuration de l'image
  • des repository YUM sur S3 avec un développement maison : aws-s3-yum-repo
  • un pipeline Jenkins pour le déploiement

Ce projet est donc très proche de l'ami-maker https://github.com/plus3it/spel / https://github.com/lorengordon/AMIgen7.git que Techsys a eu l'occasion d'implémenter chez un client.

En conclusion, Sam nous dit que les grands principes, le devops tout ça c'est bien, mais en vrai, on fait au mieux pour répondre aux besoins de nos clients sans perdre trop d'argent.

Divide and conquer: Sharing and distributing infrastructure responsibilities - Carsten Thiel

Le speaker, @schildwaechter nous expose les difficultés rencontrées lors d'un projet de recherche européen sur un temps limité.

Il part d'un Legacy peu ou pas documenté, des environnements hétérogènes et des déploiements hasardeux. Le tout est sauvé par le majestueux Devops.

Là, ça tombe bien, l'adminsys devient développeur agile et hop, tout tombe en marche grace à un logiciel de gestion de configurations (ici Puppet).

Alors oui bien sûr tout cela a un coup de maintenance, il faut travailler le code en permanence, pour des déploeiements, des monées de versions de pupet tout çà.

Ils ont appris à

  • automatiser leurs actions
  • utilisé git

Ils ont encore des configurations trop verbeuses ou imparfaite et ne souhate donc pas publier son travail sur Github.

Fast and slow storage: Dynamic provisioning on Kubernetes - David Zhu

Le speaker, David Zhu est un Google ops développeur de Kubernetes.

Il nous fait une présentation théorique de l'attachement de volume sur kubernetes et comment

En gros, il nous met de joli schémas/workflow sur cette page de documentation : http://blog.kubernetes.io/2016/10/dynamic-provisioning-and-storage-in-kubernetes.html

On trouvera une bonne doc sur le blog de Vladimir Vivien ou celui de Neependra.

cfgmgmt challenges aren't technical anymore - Julien Pivotto

Le speaker, @roidelapluie, nous présente les différents outils qu'il utilise au quotidien :

  • Puppet
  • Ansible
  • Terraform

et nous rappelle toutes les difficultés qu'il a non pas à installer des stacks ou des RPMs mais plutôt qu'il faut faire comprendre à nos clients de ne pas faire n'importe quoi tête baissée.

Testing Ansible Roles with Molecule - Ton Kersten

Les slides

Le produit a vraiment l'air sympa:

Alors, molecule, c'est quoi ? C'est un outil de contrôle qualité des rôles ansible. En résumé, Ton nous explique qu'il a quelques soucis pour l'installer même si maintenant on peut l'nstaller facilement via pip ou un container docker.

molecule cré son inventaire tout seul, parse ses fichiers de contrôles en yaml et donne un statut d'exécution.

Les commandes sont similaires à kitchen pour tester du code pupept (molecule converge).

Ton nous met en garde sur les montées de version : il a dû tout réécrire ses tests YAML lors de la montée de version molecule.

Le produit a l'air vraiment cool et facile à prendre en mains, nos habitués ansible pourront peut-être nous faire un retour dans les semaines à venir.

Tips : après avoir testé, j'ai passé pas mal de temps à essayer de comprendre ce que je croyais être un bug car j'en trouvais une issue. En réalité, pour ma part, je n'avais ce message d'erreur que parce que j'avais des caractères non UTF-8 dans mon PATH (le répertoire dans lequel j'ai essayé le linter).

Aller plus loin avec testinfra : http://slides.logilab.fr/2018/testinfra_cfgmgmtcamp_2018.pdf

Links

http://opentracing.io/documentation/pages/instrumentation/common-use-cases.html

Dockerized Puppet : A puppet server stack in containers Network Policy slides from #cfgmgmtcamp

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment