Otto – build et déploiement

By | 23 octobre 2015

ottoCet article fait suite à Otto – développement. Dans le premier article j’ai présenté Otto, son installation et la mise en place d’un environnement de développement. Mais la vraie puissance d’Otto est sa capacité à gérer votre infrastructure depuis la dev jusqu’à la mise en production.

Attention Otto n’est pas en version stable à ce jour (version 0.1.2), et ne doit donc pas être utilisé sur un environnement de production !

Pour cet article nous allons simplement travailler sur une application sans dépendances, avec un unique fichier index.php qui affichera Hello World.

Configuration

Commençons comme précédemment par préparer la configuration de notre application via le fichier Appfile.

2 nouvelles sections ont fait leur apparitions, project et infrastructure.

Project

Cette section permet de définir à quel projet appartient votre application. Actuellement, elle n’est utilisée qu’à titre organisationnel. Cette section permet donc de nommer votre projet et de définir l’infrastructure qui sera utilisée pour héberger votre application.

Infrastructure

Une infrastructure correspond à une plateforme cloud. Pour le moment, uniquement celle d’AWS est implémentée, mais les autres devraient suivre très rapidement (Azure, OpenStack …).

Cette section contient 2 directives, la première vous permet de choisir le type d’infrastructure que vous souhaitez utiliser (type = « aws »), et la seconde sa configuration (flavor = « simple » (simple ou vpc)). Le nom de l’infrastructure, il trouvera sa place après le nom de la section (infrastructure « tutotto »).

Vous devez donc disposer d’un compte AWS pour continuer ce tutoriel.

Pour initialiser notre infrastructure, il suffit d’exécuter la commande otto infra, de renseigner les clés d’accès et de fournir une clé publique ssh vous permettant d’accéder à vos instances une fois déployées:

Pour créer vos clés d’accès, rendez vous sur la page de gestion d’authentification et créer votre accès: iam

Otto utilise Terraform pour gérer les instances, il vous sera donc demandé de l’installer lors de la première initialisation d’une infrastructure.

L’initialisation de l’infrastructure consiste à préparer un VPC qui sera utilisé par la suite par votre infrastructure: vpc

Terraform

Terraform est un outil permettant de gérer simplement notre infrastructure. Depuis cet outil vous pouvez gérer vos instances (création, suppression …), déployer des images (AMI)…

Build

Maintenant que notre infrastructure est configurée, et prête à accueillir nos instances, nous allons pouvoir passer à l’étape de build.

Le build consiste à préparer l’application pour le déploiement. Otto va donc préparer une image correspondant à l’infrastructure précédemment défini par le projet (AMI (Amazon Machine Image), container Docker …).

Avant de pouvoir préparer notre image, il est nécessaire de versionner le projet:

Pour préparer nos images, il suffit d’utiliser la commande otto build. Pour cette étape Otto utilise Packer pour la création des images, il vous sera donc demandé de l’installer lors de la première utilisation:

Une fois le build terminé, vous devriez voir apparaitre une nouvelle AMI:

ami

Packer

Packer est un outil permettant de créer plusieurs machine identique sur différents provider (vbox, vmware, docker) depuis une même source. On peut donc demander à Packer de créer une image pour virtualBox pour la dev, et une AMI pour la production par exemple.

Déploiement

La fonctionnalité de déploiement n’est pas totalement implémentée sur Otto, car elle ne prend pas encore en compte les dépendances de notre application. Mais Mitchell, a annoncé que cette fonctionnalité devrait être intégrée d’ici le début d’année 2016.

Pour déployer votre application, il suffit de jouer la commande otto deploy:

Une fois fini, vous devriez voir apparaitre une nouvelle instance sur votre compte AWS:

deploy

Voilà, nous venons de déployer notre application sur AWS, sans même avoir eu besoin de devoir utiliser la console AWS. Notre application est accessible via l’url fournit par Otto à la fin du déploiement (http://ec2-52-91-145-217.compute-1.amazonaws.com).

Pour stopper votre instance (afin de ne pas vous retrouver avec une facture à la fin du mois), il nous faut utiliser l’argument destroy de la commande otto deploy:

Vous pouvez vous assurer que votre instance est détruite via la console d’AWS:

destroy

Conclusion

A travers ces 2 articles (otto dev and this) j’ai tenté de vous présenter le fonctionnement global de Otto. Et surtout, la simplicité avec laquelle il nous sera possible de gérer les différents environnement de nos applications.

Ci-dessous un schema répresentant le workflow utilisé par Otto que nous venons de voir à travers ces 2 articles:

ottoEncore une fois, Otto est en cours de développement, et beaucoup de fonctionnalités ne sont pas encore implémentées. Au fur et à mesure d’ajout de nouvelles fonctionnalité j’essayerai de vous les partager via ce blog.