Stabiliser salt stack_avec_ansible

27
©2016 PeopleDoc. Tous droits réservés Par @bersace & @jpic 18/02/2016 Stabiliser Saltstack avec Ansible

Transcript of Stabiliser salt stack_avec_ansible

Page 1: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Par @bersace & @jpic

18/02/2016

Stabiliser Saltstack avec Ansible

Page 2: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés©2016 PeopleDoc. Tous droits réservés

Plateforme de digitalisation RH

Booste votre productivité RH

et la satisfaction de vos

collaborateurs

Page 3: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

1.2.

4.

Sommaire

Page 4: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Découvrir SaltstackThe backbone of Salt is the remote execution engine. On top of this communication system, Salt provides an extremely fast, flexible, and easy-to-use configuration management system called Salt States.

-- “What is Salt”

Page 5: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Découvrir SaltComparaison avec ansible

controller master

hosts minion

hosts group ~ grain « roles »

vars pillar

host vars grains + pillar

module state function, modules d’exécution

task state

play state sls

playbook highstate, orchestration, reactor

facts grains + mine

role formula

Page 6: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Choisir SaltstackThe reason we have so many contributors is because of our

lack of [testing] requirement. One of the great things about salt is the simplicity of writing code for it -- we've even had

non-programmers submit code to salt. A lot of that simplicity goes away with testing requirements.

-- basepi, SaltStack Inc. Core Engineer

Page 7: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

● Édition communautaire

○ 20 CVEs dont plusieures de niveau 10

○ PR mergées facilement

● Édition entreprise

○ Testée par saltstack inc.

○ À partir de $12K/an

● Fork personnel

Choisir Saltstack

Page 8: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Déployer SaltstackSalt, a new approach to infrastructure management, is easy enough to get running in minutes, scalable enough to manage tens of thousands of servers, and fast enough to communicate with those servers in seconds.

- Documentation index

Page 9: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Simple comme de l’assembleur

• Déploiement des pillars, states, modules etc … sur le master

• Installation du service salt-master sur le controlleur

# curl | bash• Configuration du salt-master

• Installation du service salt-minion sur le controlleur

# curl | bash• Configuration du salt-minion

• Accepter la clef du minion sur le master

• Installation du service salt-minion sur les machines

• Configuration du salt-minion sur les machines

• Accepter la clef des minions sur le master

Déployer SaltStack

Page 10: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

pip install ansible

Déployer Ansible

Page 11: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

SaltStack peut-il travailler ?FAST, FLEXIBLE, SCALABLE The Salt infrastructure brings together the best of the remote execution world, amplifies

its capabilities and expands its range, resulting in a system that is as versatile as it is practical, suitable for any

network.

- Documentation index

Page 12: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Checklist

• Les services salt sont-ils plantés ?

• Les services salt ont-ils fuité sur toute la mémoire ?

• Le salt-master voit-il tous les salt-minions ?

• Les salt-minions voient-ils le salt-master ?

• Les salt-minions n’ont-ils pas déjà du travail ?

Pro tip: utiliser un playbook ansible pour automatiser ces checks.

SaltStack peut-il travailler ?

Page 13: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

ansible -m ping

Ansible peut-il travailler ?

Page 14: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Super-nany va rafraîchir le cache sur tous les minions

● saltutil.sync_all

custom modules, states, beacons, grains, returners, output modules,

renderers, utils.

● pillar.refresh_pillar

● mine.update

● pillar.refresh_pillar

pour utiliser la mine dans les pillars

● Repasser la checklist précédente

Préparer salt-minion à travailler

Page 15: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

N/D

Préparer Ansible à travailler

Page 16: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Orchestration

Page 17: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Déploiement d’un serveur DNS

SaltStack

● Le “highstate” du serveur

DNS déclenche un

évenement

● Ce qui déclenche sur le salt-

master le déclenchement d’

un job sur les salt-minions

● Les salt-minion mettent à

jour resolv.conf

Ansible

● Le playbook déploie le

serveur DNS

● Le playbook met à jour

resolv.conf sur les hôtes

Page 18: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Checklist:

• Récupérer les logs des salt-minions et du salt-master

• Nettoyer, dédupliquer les lignes pour qu’ils soient lisibles

• Tous les minions ont-ils bien exécuté leur states jusqu’au bout?

• En cas d’exit code non-zero: vérifier qu’il y a bien eu une erreur

• En cas d’exit code zero, vérifier qu’il n’y a pas eu d’erreur sur aucun minion

Exploitation de logsSaltStack a travaillé

Page 19: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

J’ai le rapport de chaque action en face de moi

Le code de retour est effectif

Ansible a travaillé

Page 20: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Stabiliser Saltavec Ansible

Page 21: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Objectif :

• Retrouver une orchestration impérative

• Ne pas réécrire les states et les pillars

Prérequis :

• Transmettre à Ansible l’inventaire

• Isoler l’exécution de salt

Stabiliser Salt avec Ansible

Page 22: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Inventaire Dynamiquesudo = ('/usr/bin/sudo',) if os.geteuid() != 0 else ()output = subprocess.check_output(sudo + ( '/usr/bin/salt-run', 'mine.get', "'*'", 'private_ip'))

for line in output.split('\n'): line = line.replace(' ', '') if not line: continue

name, ip = line.split(':') inventory['minions']['hosts'].append(name)

if name == 'master': inventory['_meta']['hostvars'][name] = { 'ansible_ssh_host': '127.0.0.1', 'connection': 'local', } else: inventory['_meta']['hostvars'][name] = { 'ansible_ssh_host': ip }

print json.dumps(inventory)

Page 23: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Playbooks de states (suite)

- hosts: rh2-assets sudo: yes tasks: - salt_call: state.sls rh2.static saltenv={{ saltenv }}

- hosts: rh2* sudo: yes tasks: - shell: supervisorctl reload

...

Page 24: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Démo

Page 25: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Merci !

Page 26: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Questions

Page 27: Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

https://twitter.com/peopledoc_fr

https://www.facebook.com/PeopleDocFrance

http://www.linkedin.com/company/peopledocfrance

http://fr.viadeo.com/fr/profile/novapost.people-doc

PeopleDoc32, rue de Paradis - 75010 PARIS

[email protected]

www.people-doc.fr