This document provides step-by-step instructions for building a simple orchestrator. It begins by setting up the basic components including RabbitMQ as a messaging broker and Celery workers. Step 1 demonstrates executing a simple AWS resource by adding a task to the queue. Step 2 adds a MongoDB database to store resources outside of the queue. Step 3 builds a service level on top by allowing resources like AWS instances and Docker containers to be orchestrated together through a YAML file.
1 of 42
More Related Content
TIAD - DYI: A simple orchestrator built step by step
1. DIY: A simple orchestrator built step by step
TIAD PARIS 2015
8. What we orchestrate ?
IT Process: disaster recovery, restart process
Infrastructure: Build a VM, upgrade it
Application Deployment: Deploy an application on x nodes
Developpements: Continuous integration, Continuous Delivery
14. Finally 1/3
Terraform - https://terraform.io/
Terraform provides a flexible abstraction of resources and providers. This
model allows for representing everything from physical hardware, virtual
machines, and containers, to email and DNS providers
#Go
15. Finally 2/3
Salt Cloud - https://salt-cloud.readthedocs.org
Salt cloud is a public cloud provisioning tool. Salt cloud is made to integrate
Salt into cloud providers in a clean way so that minions on public cloud
systems can be quickly and easily modeled and provisioned.
#Python
16. Finally 3/3
OpenScore - http://openscore.github.io/
Flow-based orchestration engine to manage deployed applications
Allows you to rapidly automate your DevOps use cases using ready-made
workflows. Based on Java and HP OO engine.
#Java
17. OpenStack Heat based:
Resource based, CRUD, Graph dependency, describe in Yaml
Terraform:
Execution Plan, Diff on infra and all heat features, describe in “json like” format
Salt Cloud:
Easy modules integration but no plan, no graph
OpenScore:
Service in Yaml, no plan but runbook featured
Features
18. API access ?
How to scale ? If I had more than 100 requests in same time ?
Where can I store all my services ?
How can I track ?
Is modules integration easy ?
What about lifecycle ?
Versioning the service ?
Multi-user ?
Organization > 100 peoples ?
High Availability ?
But
Try to solve or ...
25. If you think to something, you will find your answer in Python
Both of Devs and Ops can use Python and use it quickly
No compilation and not "magic"
Write less and do more
Limits the number of times your brain has to do a "context switch."
Helps productivity
The language
26. YAML is simple to read and write
Many projects use it: Heat, Fig etc...
Service Description: YAML
27. Many tasks management
Easy to scale
Dedicate queue to some tasks (DMZ, Windows...)
Asynchronous task queue/job
Real-time operation, but supports scheduling
Tasks are executed concurrently
Used in production systems to process millions of tasks a day
Tasks elery
28. Messaging broker
Common platform to send and receive messages
Safe place to live until received
Can hits one million messages per second
Message Delivery
29. rapid and agile web development
No migrations
Not a relational database
Schemaless
Database
41. Commit API
Commit Admin GUI
Commit Referential Management
Commit all modules and wrappers
Build a service catalog
Role based access to the app
http://teerex.io (soon)
https://github.com/ahmet2mir/teerex (soon)
Next steps