Introduction

  • Une introduction (rapide) à Salt pour Debian

  • Arthur Lutz (Logilab) @arthurlutz

Administrer plusieurs machines

.
     me@laptop:~$ ssh root@server1
     root@server1:~# cp /etc/config.conf /etc/config.conf.bak
     root@server1:~# vim /etc/config.conf
     root@server1:~# service critical-daemon restart
     me@laptop:~$ ssh root@server2
     root@server2:~# cp /etc/config.conf /etc/config.conf.bak
     root@server2:~# vim /etc/config.conf
     root@server2:~# service critical-daemon restart
     me@laptop:~$ ssh root@server3
     [...]

Avec Salt

.
     root@salt:~# vim /srv/salt/service/config.conf
     root@salt:~# salt 'server*' state.highstate test=True
     root@salt:~# salt 'server*' state.highstate
     root@salt:~# hg commit

image

Avec Salt

salt '*' cmd.run 'apt-get update; apt-get -uVf upgrade'

Pitch de Salt

Fast, scalable and flexible software for data center automation, from infrastructure and any cloud, to the entire application stack.

Logiciel rapide, adaptable, qui monte en charge et flexible pour l'automatisation des data centers, depuis l'infrastructure matérielle ou n'importe quel cloud, jusqu'à l'ensemble de la pile applicative.

Salt - c'est quoi ?

  • exécution distante asynchrone
  • gestion de configuration centralisée
  • déploiement d'infrastructure à la demande
  • gestion de machines virtuelles
  • supervision et monitoring
  • gestion de cluster HPC (High Performance Computing)
  • une boîte à outils pour la gestion d'infrastructure !

Salt - pourquoi ce choix ?

  • Gestion de configuration centralisé - mais pas seulement!
  • Framework recent (première version en mars 2011)
  • Développé en licence Apache, refus du principe OpenCore
  • Python
  • ZMQ pour la communication
  • packagé pour Debian
  • communité très active
  • très flexible et extensible

Salt pour Debian

  • Il y a des paquets debian !

  • Il y a une équipe Debian Salt !
    • Joe Healy
    • Franklin G Mendoza
    • Andriy Senkovych
  • Des paquets sont disponibles dans wheezy-backports...

    • mais ils sont un peu vieux (0.16.4)
    • 0.17.5 est dans jessie
    • 2014.1.0+ds-1 dans sid
  • Joe Healy mainten un dépot pour les versions cutting-edge http://debian.saltstack.com/

Installer salt sur une Debian

Coté agent : le minion

apt-get install salt-minion

Coté serveur : le master :

apt-get install salt-master

Que faire avec salt sur une debian

  • installer des paquets

  • ajouter des dépots (avec verification GPG etc.)

  • s'assurer que les services tournent

  • explorer les caracteristiques de son serveur

  • tout ce que peut faire salt (non spécifique à debian)

Exemple de déclaration

ntp:
       pkg:
         - installed
       service:
         - name: ntpd
         - running
         - watch:
            - file: /etc/ntp.conf
     
     /etc/ntp.conf:
       file:
         - managed
         - require:
       - pkg: ntp
         - source: salt://ntp/ntp.conf

Installer des paquets avec salt sur Debian

Le module pkg peut être utilisé (distribution agnostic)

root@master:~# salt '*' pkg.install vim
     root@master:~# salt '*' pkg.install vim refresh=True
     root@master:~# salt '*' pkg.install vim fromrepo=wheezy-backports
     root@master:~# salt '*' pkg.version vim
     root@master:~# salt '*' pkg.upgrade_available vim
     root@master:~# salt '*' pkg.upgrade # apt-get dist-upgrade
     root@master:~# salt '*' pkg.remove vim
     root@master:~# salt '*' pkg.refresh_db
     root@master:~# salt '*' pkg.list_pkgs
     root@master:~# salt '*' pkg.list_repos
     root@master:~# salt '*' pkg.latest_version vim
     root@master:~# salt '*' pkg.file_list vim

Gérer des dépots avec Salt

# logilab.sls
     include:
       - apt.pinning
     
     logilab-public-acceptance:
       pkgrepo.managed:
         - human_name: Logilab acceptance public Debian repository
         - name: deb http://download.logilab.org/acceptance {{ grains['oscodename'] }}/
         - key_url: http://download.logilab.org/logilab-dists-key.asc
         - gpgcheck: 1
         - require:
           - file: /etc/apt/preferences.d/logilab-pinning

Conclusion

  • Salt se marie super bien avec une gestion d'infrastructure Debian : essayez le !

  • Salt est vraiment libre (pas de module propriétaire, pas de version "Enterprise", pas de "gérez le chez nous", etc...)

  • Salt est prêt pour la production

  • Nous (Logilab) l'utilisons de plus en plus, et on est encore contents

  • Rapprochement de la description, documentation et supervision de son infrastructure

  • Ouverture sur le Test Driven Infrastructure

  • Des question ?