Transformation d’un modèle à base du standard TOSCA en des scripts Terraform pour l’approvisionnement des applications

Transformation d’un modèle à base du standard TOSCA en des scripts Terraform pour l’approvisionnement des applications

Profil Étudiant fin de master
Prérequis Connaissances des principes fondamentaux du cloud computing (PaaS, IaaS).
Des connaissances relatives aux outils de configuration et de déploiement des applications dans le Cloud (e.g. Ansible, Terraform, Docker, Vagrant, …) sont un plus, mais peuvent être substituées par une volonté de les acquérir.
Un intérêt pour la gestion de systèmes informatiques en général et ses standards comme OASIS TOSCA en particulier, est un plus.
Durée Minimum 12 semaines

Contexte et objectifs

Durant ces dernières années, le cloud computing a pris de l’ampleur en attirant l’attention de nombreuses organisations en raison de ses avantages économiques, commerciaux et techniques. Dans ce contexte, nous observons que la prolifération des offres des fournisseurs de cloud pose plusieurs défis. L’un de ces défis innovants est le déploiement d’applications dans des environnement formés par plusieurs solutions Cloud (PaaS et IaaS) hétérogènes. En effet, les développeurs ont besoin de provisionner les composants de la même application sur plusieurs solutions Cloud en fonction de leurs exigences et des capacités de ces solutions . Pour cela, ils auront non seulement à découvrir et sélectionner les services offerts par les solutions Cloud, mais ils devront également gérer l’approvisionnement des ressources, le déploiement de l’application et sa migration d’un environnement à un autre (en cas de besoin).

Dans un travail précédent, nous avons proposé une approche déclarative et automatique [1][2][3] (1) pour découvrir les services Cloud dans des environnements multi-PaaS et (2) pour sélectionner les services les plus adéquats aux exigences de l’application. La sortie de cette solution est un fichier de configuration appelé le manifeste de déploiement. Ce dernier contient des informations sur les services sélectionnés et l’application à déployer.

En utilisant le manifeste de déploiement, nous souhaitons aujourd’hui proposer une solution déclarative et automatique pour approvisionner et déployer les applications dans des environnements multi Clouds. En effet, nous trouvons aujourd’hui plusieurs outils (e.g. Ansible , Terraform, Docker, Vagrant, …) dédiés à la configuration et au déploiement des applications dans le Cloud. Toutefois, ces solutions ne permettent pas le déploiement automatisé des applications dans des environnements multi-cloud. Pour remédier à cela, nous visons à coupler l’outil d’approvisionnement Terraform [5] et l’outil de configuration et de déploiement Ansible avec le standard OASIS TOSCA [4]. Ce dernier est un langage standard permettant de décrire une topologie de services Web dans le Cloud, leurs composants, leurs relations et les processus qui les gèrent.

La Figure 1 illustre le processus de d’approvisionnement de l’infrastructure et le déploiement de l’application. En effet, le manifeste de déploiement est passé en entrée à un composant appelé « Parser » et ce dernier permet de lire le manifeste et de le transformer en un modèle TOSCA. Ensuite, ce modèle est divisé en deux type de script. D’une part, il existe les scripts de Terraform [5] permettant d’approvisionner l’environnement Cloud (c’est à dire création des machines virtuelles, la configuration du réseau, etc.) et ils sont destinés au composant « Provisionner ». D’une autre part, il existe les scripts de l’outil Ansible appelé playbook assurant le déploiement de l’application grâce au composant « Deployer ». Il est à noter que ces scripts sont construit en se basant sur des modèles prédéfinies appelés patterns.

Travail à réaliser

Cette proposition de stage consiste à contribuer dans la réalisation de la partie "Provisionning" de la figure 1. Les étapes proposé par ce travail sont les suivantes :

  • La première étape consiste à la découverte et à la familiarisation au standard OASIS TOSCA et à l’outil Terraform.
  • La deuxième étape consiste à concevoir et à développer les deux composants « Infrastructure generator » et « Provisionner ».
  • La troisième étape consiste à spécifier et définir les « Terraform patterns ».
  • La quatrième étape consiste à mettre en place un processus de test et de validation du travail réalisé dans au moins une solution Cloud (par exemple AWS, Openshift, ...).

Encadrement

L’entièreté du travail sera encadré. Le stagiaire utilisera une plateforme de développement permettant le suivi constant de ses progrès. Il devra également faire preuve d’autonomie et d’esprit innovant en participant à la réalisation des objectifs du stage

Références

[1] R. Sellami, M. Ahmed-Nacer, and S. Mouton, “Applications deployment in multiple paas environments : Requirements, challenges and solutions,” in CLOSER - Proceedings of the 7th International Conference on Cloud Computing and Services Science, Porto, Portugal, April 24-26, 2017, pp. 636–643.
[2] R. Sellami et al., “Automating resources discovery for multiple data stores cloud applications,” in CLOSER, Proceedings of the 5th International Conference on Cloud Computing and Services Science, Lisbon, Portugal, 20-22 May, 2015, pp. 397–405.
[3] R. Sellami and S. Mouton, “Toward an Automatic Approach for Multi-PaaS Environments Selection”, in IEEE World Congress on Services, July 2-7, 2018, San Francisco, CA, USA
[4] OASIS Topology and Orchestration Specification for Cloud Applications (TOSCA) : https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=tosca
[5] Terraform : https://www.terraform.io/

Contact : Rami Sellami (rami.sellami@cetic.be)