©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
www.people-doc.fr
Top Related