Difference between revisions of "Orchestration Tools"

From air
Jump to navigation Jump to search
Line 38: Line 38:
 
* [http://saltstack.com/ Salt]
 
* [http://saltstack.com/ Salt]
 
* [http://www.ansible.com/ Ansible ]
 
* [http://www.ansible.com/ Ansible ]
  +
* [https://sdarchitect.wordpress.com/2012/12/13/infrastructure-as-code/ "Infrastructure as Code" - DevOps]

Revision as of 15:16, 5 November 2015

Présentation

Enseignants : D. Donsez, GP. Bonneau

Sujet : Orchestration Tools : Puppet vs. Chef vs. Ansible vs. Salt

Abstract

Data centers are more and more numerous, and virtualization is massively used. With the emergence of the cloud, automatics deployments of new systems to guarantee and maintain a quality of service are more and more common. So, the number of physical or virtual servers managed by a sysadmin becomes quickly exponential. A manual administration is, obviously, not a realistic option any more.

The administration, previously realized by a local and physical connection to the server, is now remote and massive (multiples servers). Orchestration tools are an answer to this need. These tools will have to be able to setup a configuration, and guarantee a good behavior of the managed services.

Résumé

Les datacenters sont de plus en plus nombreux, et la virtualisation de serveurs est massivement présente. Avec l'émergence du cloud, les solutions de déploiement automatique de nouveaux serveurs pour assurer et maintenir une qualité de service sont de plus en plus courantes. Ainsi, le nombre de serveurs physiques ou virtuels à la charge d'un administrateur système devient rapidement exponentiel. Une administration manuelle n'est plus possible, le besoin d'une automatisation des configurations est évident.

L'administration qui pouvait auparavant être réalisée en se connectant localement sur un serveur est maintenant distante et massive. C'est à ce niveau que se positionnent les outils d'orchestrations, qui vont avoir pour rôle d'assurer la mise en place d'une configuration sur un ensemble de machines, mais aussi le bon fonctionnement des services.

Synthèse écrite

Introduction

Avec la généralisation des solutions faisant intervenir le cloud et le besoin de dynamicité dans les architectures mise en œuvre, les outils d'orchestration sont rapidement devenus indispensables. Là où auparavant, un site web était hébergé sur un unique serveur facilement administrable, la plupart des hébergeurs proposent maintenant des solutions intégrant de la répartition de charge (load balancing) selon les besoins dynamiques du site. Ces sociétés ont donc un fort besoin d'automatisation: installation d'une nouvelle machine, installation des services associés, intégration avec le service en cours d’exécution, entre autres.

Tout administrateur système, quel que soit la taille du parc informatique qu’il a sous sa responsabilité va chercher à automatiser au possible les tâches pénibles ou répétitives. On pourrait bien entendu imaginer dans un premier temps une connexion distante réalisée manuellement par l’administrateur. Une connexion ssh suivi d’un script bash que l’on exécute. Cependant, cette solution est très limitée, il faut connaitre les mots de passe de chaque machine auxquels on veut se connecter, ce qui devient très rapidement une perte de temps majeure dans une infrastructure conséquente. De plus, l’aspect répétitif reste encore très présent et pour peu que les machines aient quelques différences de configuration, le script qui fonctionne sur une ne fonctionnera pas nécessairement sur l’autre. Il est très fréquent dans les parcs informatiques assez anciens d’avoir plusieurs versions de différents logiciels en cours d’utilisation suivant la date d’installation du service. Les mises à jour deviennent très rapidement un casse-tête, et ne sont très souvent jamais réalisées (bien que d’autres problématiques interviennent pour cet exemple, tel que la compatibilité de l’application courante). Sans pour autant vouloir assurer une mise à jour, la modification d’un paramètre commun à l’ensemble des machines devient ingérable. De manière générale, un parc informatique va très rapidement être très hétérogène, ce qui tend à complexifier l’administration.

En tant qu’administrateur système, on va vouloir conserver autant que possible une vue générale de notre parc informatique, en décrivant au travers d’outils de haut niveau la configuration souhaitée, sans se préoccuper de sa réalisation effective. Autrement dit, se concentrer que le « quoi » plus que sur le « comment ». Ce paradigme est dit « déclaratif », et plusieurs outils présentés par la suite vont choisir cette approche. D’autres auront une approche un peu plus mixte, se rapprochant du paradigme « impératif » et de la réalisation concrète des actions (le « comment » évoqué ci-dessus). Avec les deux paradigmes évoqués, nous touchons directement un concept qui résume parfaitement l’idée des outils d’orchestration : « infrastructure as code ». Quel que soit l’outil utilisé, nous allons chercher à décrire notre infrastructure, les configurations souhaitées sous forme de « code » plus ou moins haut-niveau. On retrouve par ailleurs les notions de push et pull, présentes dans les outils de versioning, tel que Git.

Étude comparative

Puppet

Chef

Salt

Ansible

Conclusion

Références