Automation on AWS with Ruby and Puppet

Logo UrbanDive

Urbandive is an immersive view service launched by the French YellowPages which allows you to travel in cities in France thanks to a 360° view. Urbandive focuses on providing high definition pictures and accurate professional and social content. One of the biggest jobs was to enable a fast scalable architecture, because it was really difficult to forecast the traffic load at production time. Traffic load may be influenced if the service receives attention from users as a result of advertising.

Below you will find a summary of the goals we achieve by using a Ruby scheduler built on top of Puppet on AWS to create a complete infrastructure.

Workflow & XTR-Lucid
Our scalability combo is : a home-made Ruby scheduler (XTR-Lucid) to deal with AWS APIs + the Puppet Master to install services and configure EC2 instances and keep them up-to-date during all the production time. This leads to full automation.

Here is the workflow (for the creation step, there are other workflows for stop/reboot/health-check/…) of our automation tool. The dashboard allows you to select a template (which contains the following informations : AMI id, instance type, availability zone, key, list of security groups, list of EBS – from snapshots or not -, …) and to set a name for the instance in the « create » workflow.

[...]

Puppet et Capistrano : la clé de l’automatisation

Puppet est un produit open source qui permet de gérer à moindre frais une infrastructure importante en centralisant la gestion de la configuration des machines : il permet de maintenir la configuration des différents types de machines d’une infrastructure iso entre elles et de démarrer rapidement une instance en l’associant à un type de nœud Puppet. Il capitalise également les connaissances sur les composants/paramétrages de chaque type de machines via ses descripteurs.

Capistrano est produit open source qui permet d’associer des machines à des rôles (exemple : role :web, « frontal1 », « frontal2 ») et d’exécuter une tâche donnée en parallèle sur toutes les machines d’un ou plusieurs rôles. Il permet également de capitaliser les connaissances sur les différentes tâches de l’infrastructure et les rend reproductibles et centralisées, donc fiables. il se connecte en SSH et donc assure un niveau de sécurité minimum.

[...]