12 Oct 2017

Ansible Tower to reach the next automation level – Installation

Ansible is an open source automation platform. It is very powerful, it is agentless and can help you with configuration management, application deployment, task automation, Provisioning, Continuous Delivery, Security and Compliance and Orchestration.


From: https://cdn.edureka.co/blog/wp-content/uploads/2016/12/Nasa-Case-Study-What-Is-Ansible-Edureka.png

From: https://cdn.edureka.co/blog/wp-content/uploads/2016/12/Nasa-Case-Study-What-Is-Ansible-Edureka.png



Ansible Tower

In other hand, Ansible Tower is a REST API, web service, and web-based console designed to make Ansible usable for IT teams. It is a hub for automation tasks. Tower is a commercial product supported by Red Hat, Inc. Ansible, Inc. (originally AnsibleWorks, Inc.) was the company set up to commercially support and sponsor Ansible and Ansible Tower, Red Hat acquired Ansible in October 2015.


From Ansible:

“Ansible Tower is the easy-to-use UI and dashboard and REST API for Ansible. Centralize your Ansible infrastructure from a modern UI, featuring role-based access control, job scheduling, and graphical inventory management. Tower’s REST API and CLI make it easy to embed Tower into existing tools and processes. Tower now includes real-time output of playbook runs, an all-new dashboard and expanded out-of-the-box cloud support.”


From: https://www.redhat.com/cms/managed-files/ansible-diagram-3.png

From: https://www.redhat.com/cms/managed-files/ansible-diagram-3.png



First, you need to download a Red Hat Ansible Tower trial to use it on your own Linux server or cloud instance,  you’ll requested to provide your mail, go to the next link and download the package:  https://www.ansible.com/tower-trial


So, after you download the package, now you can install it but you will need a license file to activate it. As you have shared your mail, Red Hat will send you an automated email to  get your license key. You will need to select a trial option based on the number of machines and features you’ll need. To compare Ansible Tower editions, see www.ansible.com/tower-editions


Basically, you’ll have to choice from:

  • FREE ANSIBLE TOWER TRIAL – ENTERPRISE FEATURES: For enterprise IT operations that require more than 10 nodes
  • FREE ANSIBLE TOWER TRIAL – LIMITED FEATURES UP TO 10 NODES: Self-support trial license that will not expire. Does not include features in Standard and Premium Ansible Tower


In this installation we selected: FREE ANSIBLE TOWER TRIAL – LIMITED FEATURES UP TO 10 NODES.


The license key is a txt file that looks like:

    "company_name": "Sentinella", 
    "contact_email": "guillermo@sentinel.la", 
    "contact_name": "Guillermo Alvarado", 
    "hostname": "xxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "instance_count": 10, 
    "license_date": xxxxxxx, 
    "license_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "license_type": "basic", 
    "subscription_name": "Red Hat Ansible Tower, Self-Support (10 Managed Nodes)"

You will upload it after the installation is complete.




You can check the requierements here, But the Supported Operating Systems:

  • Red Hat Enterprise Linux 7.2 or later 64-bit
  • CentOS 7.2 or later 64-bit
  • Ubuntu 14.04 LTS 64-bit
  • Ubuntu 16.04 LTS 64-bit
  • Windows Server 2008 R2 or later

Also the minium specs:

  • 2 CPUs minimum

  • 2 GB RAM minimum (4+ GB RAM recommended)

  • 20 GB of dedicated hard disk space for Tower service nodes

  • 20 GB of dedicated hard disk space for nodes containing a database (150 GB+ recommended)

  • 64-bit support required (kernel and runtime)

We are going to install Tower in a RHEL virtual server:

1. Update the system

# yum update

Note: Reboot the system if the kernel packages were updated


2.Download the package with the instructions already mentioned and extract it. (We downloaded it in /tmp)

# tar xvzf ansible-tower-setup-latest.tar.gz 

# mv /tmp/ ansible-tower-setup-3.2.0/ /opt/ansible-tower-setup-3.2.0/

# cd ansible-tower-setup-3.2.0/

3.Enable repos and install ansible

# yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

# sudo subscription-manager repos --enable=rhel-7-server-extras-rpms

# yum install ansible


4.Edit inventory file to put your passwords

# ls /opt/ansible-tower-setup-3.2.0
backup.yml group_vars install.retry install.yml inventory licenses README.md restore.yml roles setup.sh
# vi /opt/ansible-tower-setup-3.2.0/inventory

localhost ansible_connection=local






# Needs to be true for fqdns and ip addresses

5.Install Ansible Tower with setup.sh script



After the installation is complete, you need to go to your FQDN or IP in your browser and you’ll see the login page of Ansible Tower, use the password you previosly defined in the inventory file and the user “admin” to log on.




Then, you will be requested for an activation file, just upload it and you are done wtih your Ansible Tower installation.


The next post we are going to setup Ansible Tower to use it, keep tuned!  =)

Share this
28 Sep 2017

Success case: Banco Multiva

Straight from Mexico, Grupo Multiva is a financial group that has more than 30 years in the Mexican market without mergers with foreign banks.

Multiva just launched its cloud platform with Red Hat OpenStack Platform at its center. The Multiva teams like Developers, architects and operators are facing challenges, those who develop, deploy and operate cloud infrastructures must ensure their clouds meet service-level agreements (SLAs). We at Sentinel.la are working very close to ensure that SLA.


We want to share the thougths from the Multiva team :

“Sentinel.la has helped us save time and effort. With their monitoring dashboard we have reduced the MTTD (Mean Time To Detect) by 80% in our OpenStack cloud“ – Juan Alberto Muñoz Vela, Infrastructure Director at Multiva


Here at Sentinel.la, our biggest reason for being fans of Multiva are  their vision to innovate pushing an Open Cloud strategy growing the local talent around OpenStack in Mexico. They shared with us some of the core drivers behind their OpenStack strategy:

  • Hardware Requirements: OpenStack works with standard or commodity hardware, no need for specialized vendor hardware.
  • Marketplace and vendors: As OpenStack users, they have lot of choices: service providers, vendors, system integrators, distributions, trainers, consultants, and so on.


There is no doubt, The market trends and state of the Stack are clear, OpenStack is becoming the platform of choice for private cloud deployments.

Looking forward to contribute in your cloud strategy =)





Share this
04 Nov 2016

How we built Sentinel.la (II) – AngularJS and Netlify

“Apollo” is the codename of our UI. It was built with AngularJS because we wanted a single-page application (SPA). This is how it looks like:




AngularJS and Single-Page Apps.

An SPA ( Single-Page Apps) is a web application (or a website) that fits into a single page in order to give a more seamless experience to users, like a desktop application. Single Page Applications are becoming more popular for a good reason. SPAs can provide an experience that feels almost like a native app in the web, instead of sending a full page of markup, you can send a payload of data and then turn it into markup at the client side.

We decided to build an hybrid SPA. By hybrid I mean that, instead of treating the entire application as a single page application, we divide it into logical units of work or paths through the system. You end up with certain areas that result in a full page refresh, but the key interactions of a module take place in the same page without refreshing.  For example, administration might be one “mini” SPA app while configuration is another.

Another advantage of AngularJS is that it uses the MVC approach, which is familiar to developers who have used Django or another MVC web development framework. Angular implements MVC by asking you to split your app into MVC components, then Angular manages those components for you and also serves as the pipeline that connects them.

Another advantage is that it puts the DOM manipulations where they belong. Traditionally, the view modifies the DOM to present data and manipulates the DOM (or invokes jQuery) to add behavior. With Angular, DOM manipulation code should be inside directives and not in the view. Angular takes the view just as another HTML page with placeholders for data.

Every SPA needs an API to consume. We built an API with Flask, that I’ll be reviewing in further posts,





Do not handle webservers, JAM Stack and Netlify.

Once we finished the UI and the API, we launched it over an nginx web servers farm. Also we decided to use a CDN to improve user experience in terms of speed and also to help us prevent site crashes in the event of traffic usage peaks. So, in this case, the CDN would help us to distribute bandwidth across multiple servers, instead of having to use just one server handling all the traffic.

While searching the internet looking for a good and affordable CDN we discovered Netlify and the JAMStack.

“JAM stands for JavaScript, APIs and Markup. It’s the fastest growing stack for building websites and apps: no more servers, host all your front-end on a CDN and use APIs for any moving parts[…] The JAMstack uses markup languages like HTML, CSS and Markdown to format and style our content, client-side Javascript to make it interactive and engaging and APIs to add persistence, real-time sync, real-world interactions, comments, shopping carts, and so on.“ – https://jamstack.org/

“Netlify is a unified platform that automates your code to create high-performant, easily maintainable sites and web apps” . – https://www.netlify.com/




So, we decided to use Netlify. It allow us to bring an automated platform to deploy our AngularJS app, because it follows the JAMStack, and also provide us with the best practices like CDN distribution, caching and continuous deployment with a single click – or command. That means not handling webservers, therefore less effort and work. For a startup like us that’s very valuable.

With Netlify we just push our site to their CDN because it pairs naturally with Git. That’s why you only need to pull, change and push the code to manage your site. After a git push, the newest version is immediately available everywhere and with their integrations you can set up any number of outbound webhooks so you can receive an e-mail or Slack notifications to notify for deploy information or build failures.

Netlify has a lot of features like DDoS protection, Snapshots, Versioning & Rollbacks, Instant Cache Invalidation, DNS Hosting, Domain Registration, etc. You can check more Netlify features here: https://www.netlify.com/features/

In the next post I’ll review the API and the AMQP topics about how we built our Software. Stay tuned.

Share this
13 Oct 2016

How build a SaaS around OpenStack (I)

How does Sentinelle Labs build apps?  What pieces interact in our platform in order to successfully capture and process agent’s data to monitor, backtrace and send notifications if something goes wrong in an OpenStack deployment?

We’ve decided that it’s time to share more details around this topic. In this series, we’ll describe our architecture and technologies used to go from source code to a deployed service to show you how your OpenStack deployment is working. You can expect this to be the first of many posts detailing the architecture and the challenges of building and deploying a SaaS to enhance OpenStack skills,  reduce OpenStack learning curve  and Backtrace it much faster. Sentinel.la is a fastest way to OpenStack.


High level design

The High-level design (HLD) explains the architecture used for developing a software product. The architecture diagram provides an overview of the entire system, identifying the main components that will be developed for the product along with their interfaces.



Decoupled architecture

As you can see, we’ve used a decoupled architecture approach. This is a type of architecture that enables components/ layers to execute independently so they can interact with each other using well-defined interfaces rather than depending tightly on each other.



The first step in order to address a decoupled architecture is to build an API. There’s nothing more important than the application program interface to link components with each other. Our API is called “Medusa” and is built with Flask. An API is a great way to expose an application’s functionality to external applications in a safe and secure way. In our case that external app is “Apollo”, our UI, which will be reviewed later.



Sentinel.la uses a Message queuing system (in this case RabbitMQ). The MQ acts as middleware that allows the software to communicate the different layers/pieces that are being used. The systems can remain completely autonomous and unaware of each other. Instead of building one large application, it’s a better practice to decouple different parts of your application and only communicate between them asynchronously with messages.

We use Celery, a task queue with batteries included written in Python to manage our queue, as I mentioned above, our broker is RabbitMQ and also it does manage the workers that consume all the tasks/messages.



Our UI is called “Apollo”. It’s built in AngularJS, and is an ”API-Centric” Web Application. Basically, it executes all its functionalities through API calls. For example, to log in a user, we send its credentials to the API, and then the API will return a result indicating if the user provided the correct user-password combination. Also we are following the JAM stack conventions. JAM stack is an ideal way of building static websites, in later posts we’ll explain it but the basic idea is that JAM, that stands for JavaScript, APIs and Markup, is to avoid managing servers, but to host all your front-end over a CDN and use APIs for any moving parts.



Behind scenes, all data is stored in 4 different databases. We use InfluxDB, a scalable datastore for metrics, events, and real-time analytics. Also we use Rethinkdb the open-source database for the realtime web. One of the components that we use also need MongoDB, an open source database that uses a document-oriented data model. Our relational database is PostgreSQL, an open source relational database management system (DBMS).



Our platform uses all the information generated on the differents OpenStack. To address that we’ve built an agent 100% written in python (available at https://github.com/Sentinel-la/sentinella-agent/). In order to install it, there are .deb for Ubuntu/Debian and .rpm for RedHat/CentOS packages. Also we have a pip package to install it in SuSE https://pypi.org/project/sentinella/


Data processing engines

To evaluate all the thresholds we developed 2 different daemons, one for InfluxDB (called “Chronos”) and another one for RethinkDB (called “Aeolus”). These pieces have all the rules and logic to rise an alert when something wrong is detected.



Obviously we need a component that manages all the alerts risen by Chronos and Aeolus. We are proudly using Alerta.io to consolidate all the alerts an also perform de-duplication, simple correlation and trigger the notifications.


Notifications delivery

We send 3 different types of notifications for an alert. First, we send an email (we use Mandrill, the transactional email as a service from Mailchimp). We’ve decided not to maintain an SMTP server. Second, we send slack alerts using their webhooks integrations. Third, of course, we notificate users on Sentinel.la Dashboard pushing alerts to Apollo. In order to accomplish that we use Thunderpush, a Tornado and SockJS based push service. It provides a Beaconpush inspired HTTP API and client.

So far, these are the main components that work together in order to deliver Sentinel.la service. In further posts we’ll do a deeper review of all of them. Next post will be about Apollo, our UI, and the JAM stack.

Thanks for reading, your comments are very welcome.

Share this
31 Aug 2016

Job Opportunity! We are looking for a Software engineer: tools and infrastructure

Sentinelle Labs is a Latin American Startup with an innovative culture, for us the most  important thing is to put us on the shirt of our customers while creating great things, taking  care of the team and to be profitable. We’re a small and exponential team, therefore you won’t be just one more employee, you’re going to have the opportunity to leave your mark here. We love Linux and Open source and we also love home office. Our main efforts are focused at working with OpenStack and Ceph. We build SaaS, our stack is composed mainly of Python and Javascript and we deploy them on cloud technologies and containers platforms like Docker and Kubernetes.

In this position one of your main responsibilities will be to design and develop new features for https://www.sentinel.la our flagship product. You’ll also be responsible for deploying and supporting the platform with its components.

What are we looking for?

The first thing we want is a connection. We want to know about your dreams and to know if you are aligned with our values. If this happens, these are the requirements:

  • Being a person with self-learning ability.
  • Fluent English, ability to engage in conversation.
  • Experience as developer with a medium / high level both frontend and backend.
  • Experience with Python and JavaScript.
  • Medium / high knowledge level on Linux: Ubuntu / RedHat / CentOS
  • Experience in creation and consumption of RESTful APIs, knowledge on Git and MySQL / NoSQL administration.

What we offer?

The first thing is a job position that you’ll be passionate about using cutting-edge technologies while having the opportunity to make decisions to set the course of the platform, and for that as a compensation we offer:

  • Salary according to skills
  • Medical Insurance
  • Home Office
  • Phone Internet plan
  • Home Internet plan

If you are interested in working with us send your resume to guillermo@sentinel.la

Share this
09 Aug 2016

Sentinel.la now available at PyPI

We are glad to announce that the sentinel.la agent is now available at Python Package Index (PyPI)  the official third-party software repository for Python. https://pypi.python.org/pypi/sentinella

PyPI primarily hosts Python packages in the form of archives known as Python Eggs. Similarly to JAR archives in Java – Eggs are fundamentally ZIP files, but with the .egg extension, that contains the Python code for the package itself, and a setup.py file that holds the package’s metadata.

You can access to PyPI with several package managers, includings EasyInstall, PyPM and pip that use Pypi as the default source for packages and their dependencies.

So you will be able to install the sentinel.la agent with pip as following:

guillermo@xps13:~/$ pip install sentinella

With this, Sentinel.la is available for:


Also, remember to vote for our presentation to OpenStack Summit at Barcelona:



Captura de pantalla de 2016-08-09 17-22-56

Vote here:  Double Win! Helping to consolidate OpenStack implementations (and build a Startup in the meantime)

Keep in touch with us while we’re building the next big thing,

Email: hello@sentinel.la


Share this
23 Apr 2016

Keep Austin Nerd! We’re in, are you? #OpenStackSummit

IMAG0141 (1)


The Openstack Summit is attended by thousands of people from the whole world. This time the thirteenth release of OpenStack, codenamed Mitaka is ready.  This version has improved user experience, manageability, and scalability.  To see the whole agenda: https://www.openstack.org/summit/austin-2016/summit-schedule#day=2016-04-25

In the OpenStack Summit you will plan your cloud strategy and hear about market opportunities, latest products, tools and services like Sentinel.la, from the OpenStack ecosystem. We are ready to learn about operational experience directly from users.

So, our team will be attending the OpensStack Summit with this  t-shirts, do you like it?  what about getting one?

IMAG0139 (1)


Please just send us a tweet to @The_sentinella to obtain a t-shiirt and a sticker and meet us at the event, we’ll be attending sessions and being around the Marketplace. See you at the Openstack Summit!

Share this
17 Feb 2016

Openstack Survey: The price of not knowing is unpredictable

The price of not knowing is unpredictable. The difference between data and information is that information is useful data. Knowing the air temperature in New York is a fact, knowing what your customers expect from you is information. Your  participation as community  in the survey is not only a way for the OpenStack Foundation to gain information about the community and the OpenStack environment , but also a way for us, members of the community to send information about our organizations, services and priorities, so we (as community) are able to define our path, roadmap and strategy.

In short, the OpenStack Foundation is open and listening to know what the community want. We all will gain with the results while the OpenStack foundation will get helpful information too, to do their job and to figure out how to satisfy the priorities of the community.

Do you want to have the opportunity to influence the Openstack roadmap? It should only take about  only 10 minutes to complete the survey at https://www.openstack.org/user-survey/survey-2016-q1/landing

All of the information you provide is confidential to the Foundation (unless you specify otherwise).

Share this
09 Feb 2016

JSON Web Tokens for dummies

Authentication is one of the most important decisions when we are bulding a web application. Modern web apps are One-page apps, built on top of technologies like AngularJS . In that case, we don’t want to waste time building markup and representation layers, instead of that we are building APIs that our front-end consume. So these changes have led to new ways of implementing authentication into this modern applications.

There are basically two different ways of implementing server side authentication for apps that consist of a frontend and an API. The most adopted one is the traditional Session Based Authentication. In traditional authentication, the user logs in with its credentials, then the server validates the information and stores it in session objects, either in memory or on disk.

Common Session based Authentication problems

This Session based Authentication has the following problems:


When a user is authenticated, the server needs to remind somehow, usually keeping the information in memory. When many people are online, server overhead increases.


From the moment we keep user information stored on session, there are scalability issues. Imagine that our application needs autoscale to meet peak demands and load balancing across multiple servers. While we are keeping the user on the server session if there’s a new request sent to another node then user needs to log in again. This can be solved using the technique known as Sticky Session but even with that solution it doesn’t feel optimal. With token-based authentication, this is solved naturally, as we’ll review.


Most often we want our data to be consumed from multiple mobile devices (tablets, smartphones, etc …). In this scenario it’s important to worry about what is called CORS: cross-origin resource sharing or sharing of resources from different sources. When we use AJAX to retrieve data from our application, we can find us getting unauthorized requests because modern browsers don’t allow this type of behaviour for security concerns.

JSON Web Tokens

One of the best known solutions to authentication problems for APIs are JSON Web Tokens or JWT. The token-based authentication is stateless. This means that you do not save any user information on the server or the session. This kind of authentication sends a token for each request through the HTTP headers instead of keeping authentication information sessions or cookies. Thus, no state is saved between different requests of our application and our data can be consumed from different types of clients.

As tokens are stored on the client side, we don have to care about status information or session so our app application becomes completely scalable. We can use the same API for different apps likeWeb, Mobile, Android, iOS so we just worry about sending the data in JSON format and generate and decrypt authentication tokens through a middleware.

From user’s perspective, there’s no different between login in into an application that uses JWT and an application that uses traditional authentication. The user enters their credentials checked against the server’s storage or service, but rather to create a session and return a cookie, it will return a JSON object containing JWT.  The JWT  needs to be stored in client side, which is usually done in the local storage The JWT must be sent to the server to access protected routes. The token is generally sent via an HTTP Authorization Header.

You can think of this token as your hotel’s room card. When yo visit a hotel, you go to the hotel’s desk and you give your credentials so they give you a card. In this case, the card is your token and you’ll be able to access to your room with it. We can go into our room but we can’t use our card to go into other room. Who has the card? Does the hotel have it? No, we do have it, as we have the JWT and the server doesn’t store a session for us. When we leave, if we don’t return the card, we will have a useless piece of plastic. That means the tokens has an expiration.

In the next post, we will review the structure of a JSON web token and how can we implement it in AngularJS.

Share this
21 Jan 2016

OpenStack international growth

The OpenStack Foundation has been following the correct way during all these years, but what follows is an international leap. Some international companies adopting OpenStack are helping with that. For example, eBay website runs on an OpenStack private cloud platform. Four years ago, eBay’s website was operated fully on its on-premises datacenter infrastructure. “Today, 95% of eBay marketplace traffic is powered by our OpenStack cloud” said Suneet Nandwani, Sr. Director, Cloud Engineering at eBay Inc.

But this international leap won’t happen without some challenges. One of OpenStack main problems is its steep learning curve, you must first achieve a successfully installation and once done, when you think you have done it, things could get ugly. There’s no definite strategy to operate an OpenStack deployment, but with the right tools and the right information on a timely manner, this could be done without pain.

That’s our commitment at Sentinel.la: “Reduce the operational pain of Cloud Administrator/SysOp Teams providing quick, concise and relevant information to solve the problems related to a real OpenStack deployment”.

The other point of inflection to achieve a succesfully international leap are containers and projects such as Murano and Magnum “People are really excited to see how frameworks like Docker and Kubernetes enable companies to bring containers in and make use of them with the networking and security frameworks that they already have,” said Jonathan Bryce, OpenStack Foundation Executive Director.

Take a look to the interview from theCUBE to Jonathan Bryce and Lauren Sell at the Openstack Day Seattle 2015 – theCUBE

Read the complete history: “OpenStack Foundation ready for international growth | #OpenStackSeattle” from Silicon Angle

Share this

All rights reserved© 2017 Sentinelle Labs.  Terms and conditions | Privacy Policy

Click Me