Stabiliser salt stack_avec_ansible

Post on 13-Apr-2017

586 views 0 download

Transcript of Stabiliser salt stack_avec_ansible

©2016 PeopleDoc. Tous droits réservés

Par @bersace & @jpic

18/02/2016

Stabiliser Saltstack 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

©2016 PeopleDoc. Tous droits réservés

1.2.

4.

Sommaire

©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”

©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

©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

©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

©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

©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

©2016 PeopleDoc. Tous droits réservés

pip install ansible

Déployer 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

©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 ?

©2016 PeopleDoc. Tous droits réservés

ansible -m ping

Ansible peut-il travailler ?

©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

©2016 PeopleDoc. Tous droits réservés

N/D

Préparer Ansible à travailler

©2016 PeopleDoc. Tous droits réservés

Orchestration

©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

©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é

©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é

©2016 PeopleDoc. Tous droits réservés

Stabiliser Saltavec 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

©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)

©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

...

©2016 PeopleDoc. Tous droits réservés

Démo

©2016 PeopleDoc. Tous droits réservés

Merci !

©2016 PeopleDoc. Tous droits réservés

Questions

©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

contact@people-doc.fr

www.people-doc.fr