Personnellement, j'utilise SaltStack [1] et SaltCloud [2]
Le premier me permet d'industrialiser le déploiment logiciel à l'intérieur de mes instances. Ansible, Puppet, Chef, etc... remplissent la même fonction.
SaltCloud quand à lui me permet de définir des architectures complète a déployer.
Pour prendre un exemple simple, imaginons une infrastructure à 3 noeuds :
- Un load-balancer (HAProxy)
- Un server web nginx + php
- Une base de données
Dans SaltStack je commence par créer les 3 cookbooks pour installer et configurer chacun de ces rôles.
Dans SaltCloud, je vais configurer mon CloudProvider (AWS, Azure, OpenStack, etc ...)
Ensuite, je vais créer la "Map" de mon architecture à 3 noeud :
Puis lance la construction:
1) Dans la map, on remarque que le load-balancer requière un webserver, et que le webserver requière une base de données.
2) La première instance qui sera provisionnée sera donc la base de données, salt-cloud va parler à mon CloudProvider et demander l'installation de cette première instance.
3) Une fois l'instance en ligne, l'agent salt (le salt-minion) sera installé dessus et configuré pour parler à mon salt-master.
4) Le salt-master est configuré pour accepter les nouveaux minion et lancer immédiatement un highstate (mise à jour)
5) Dans la configuration de la map, j'ai spécifié le 'role: database', le highstate va donc déclancher le cookbook correspondant.
6) J'ai aussi spécifier le 'site: www.exemple.com', mon cookbook injectera alors le schéma (vierge ou la restauration d'un backup) de la base de données correspondant au site www.exemple.com
7) L'installation de l'instance 'db01' est maintenant terminée, le pré-requis pour installer le webserver est donc satisfait, l'installation du webserver peut commencer.
Instancer une nouvelle infrastructure comme celle-ci se résumera alors à copier la map et à changer quelques variables (role, site, etc ...)
Voilà en gros ce qu'il est possible de faire avec OpenStack + SaltStack.
Mais ça n'est qu'un bref aperçu ! On peut faire bien plus, comme ajouter ou détruire des webservers du pool du load-balancer en fonction du nombre de connexions et ce sans aucune intervention humaine. Quand on est facturé à la minute dans le cloud, ce genre de fonctionnalité prend tout son sens.
Donc à vous de voir si ce genre de gourmandise peut vous servir ou s'il n'est pas plus intéressant pour vous de perfectionner votre industrialisation voir de changer d'outils.
[^] # Re: Formation
Posté par MaxPower . En réponse à la dépêche Présentation d’OpenStack. Évalué à 5.
Personnellement, j'utilise SaltStack [1] et SaltCloud [2]
Le premier me permet d'industrialiser le déploiment logiciel à l'intérieur de mes instances. Ansible, Puppet, Chef, etc... remplissent la même fonction.
SaltCloud quand à lui me permet de définir des architectures complète a déployer.
Pour prendre un exemple simple, imaginons une infrastructure à 3 noeuds :
- Un load-balancer (HAProxy)
- Un server web nginx + php
- Une base de données
Dans SaltStack je commence par créer les 3 cookbooks pour installer et configurer chacun de ces rôles.
Dans SaltCloud, je vais configurer mon CloudProvider (AWS, Azure, OpenStack, etc ...)
Ensuite, je vais créer la "Map" de mon architecture à 3 noeud :
Puis lance la construction:
1) Dans la map, on remarque que le load-balancer requière un webserver, et que le webserver requière une base de données.
2) La première instance qui sera provisionnée sera donc la base de données, salt-cloud va parler à mon CloudProvider et demander l'installation de cette première instance.
3) Une fois l'instance en ligne, l'agent salt (le salt-minion) sera installé dessus et configuré pour parler à mon salt-master.
4) Le salt-master est configuré pour accepter les nouveaux minion et lancer immédiatement un highstate (mise à jour)
5) Dans la configuration de la map, j'ai spécifié le 'role: database', le highstate va donc déclancher le cookbook correspondant.
6) J'ai aussi spécifier le 'site: www.exemple.com', mon cookbook injectera alors le schéma (vierge ou la restauration d'un backup) de la base de données correspondant au site www.exemple.com
7) L'installation de l'instance 'db01' est maintenant terminée, le pré-requis pour installer le webserver est donc satisfait, l'installation du webserver peut commencer.
Instancer une nouvelle infrastructure comme celle-ci se résumera alors à copier la map et à changer quelques variables (role, site, etc ...)
Voilà en gros ce qu'il est possible de faire avec OpenStack + SaltStack.
Mais ça n'est qu'un bref aperçu ! On peut faire bien plus, comme ajouter ou détruire des webservers du pool du load-balancer en fonction du nombre de connexions et ce sans aucune intervention humaine. Quand on est facturé à la minute dans le cloud, ce genre de fonctionnalité prend tout son sens.
Donc à vous de voir si ce genre de gourmandise peut vous servir ou s'il n'est pas plus intéressant pour vous de perfectionner votre industrialisation voir de changer d'outils.
[1] https://docs.saltstack.com/en/latest/topics/index.html
[2] https://docs.saltstack.com/en/develop/topics/cloud/index.html