(630) 936-9086

I’ve been asked that question several times, I’ve read a lot of completely different answers during the last time as well. I will try to give my version.

DevOps is a new culture (not that new actually), based on communication and visibility. The idea (defined as the “three ways”), is to have a clear understanding of the business impact of every change (flow), then to have short cycles allowing very fast feedback and finally to be able to practice experimentation without restrictions.

Who is going to implement all of that?, probably a lot of people will answer: should be a DevOps Engineer. Well, theoretically it should be the case, but in the practice, the people that is called “DevOps Engineer” is nowadays an “Agile” System administrator.

They will set the tools that allows automation of the building, testing and deployment of the applications. They will probably help the QA and the Developers, providing self service tools, for making their life easier, improving their performance and quality.

In the other hand, since that “Agility” is something implicit in the Cloud, they will also be required to have knowledge of Cloud Providers, what are the services they offer, how to architect and maintain them. However, theoretically the DevOps culture could be applied in an on premises environment as well.

Taking the question back of who should be implementing DevOps. It is a responsibility of all the team, not only of the guys called DE. It should be a culture that is implemented from the Management, Team leaders, Developers QA Analysts, Architects. Just everybody should be aware of that and set their goals accordingly.

202-454-0394

In this post I will show a practical example, of how we can use Terraform and Ansible working together. Is not my intention to do a tutorial of each one, just a “bit” of each.

I really like Terraform, mainly because it is very easy to read/learn/understand, and it allows to interact with different providers. Something that interested me as well, was the usage of the “modules”, which makes the environment replication extremely painless.

Ansible is a great tool for app deployment, configuration management and orchestration (among other features), as Terraform is very easy to read, is scalable and you don’t need to install agents (again, among other benefits).

As an example, I will show how can we have a full up and running Blog in WordPress (running with Nginx). The idea is to have a functional blog just running one command. Exactly that is what I’ve used to create this blog Infrastructure.

First of all, the easy part, we need to create the Terraform template for the EC2  instance were we are installing wordpress later, please take a look at the “security_group” line, that is how we link the instance with the SG to be created.

And it security group is:

Well, that was the Terraform bit, now let’s focus in the Ansible part. This is more complex, since we need to install all the dependencies, start some services, copy a couple of templates, and so on. Reading it should be straight forward, anyway I will try to cover some details for making it easier to understand:

The directory structure, I’ve used for the Ansible playbooks is the following:

First, we need to install php, mysql and wordpress. In this play the site is created as well

After that is all set, we need to install and configure Nginx

 

Now, we have two separated parts. The question is how to make them work together?. Probably we just want to run them independently, running the Terraform layer, and then the Ansible one. Or probably we want make the Terraform part call the playbooks, or it could even be other way around, making Ansible to call Terraform. All those approaches should work just fine, it will depend on the type of how the deployments and changes are applied in your Infrastructure. Personally, I would prefer to call the Ansible layer from Terraform as a bootstrap, then keep the infrastructure in a separated process.

215-452-2856

This is my first post. I’ve been interested in writing for a while, but for one or another reason I’ve been postponing until today.

I will be adding some small tutorials, articles, comments and a few recommendation from previous projects I’ve worked for. Of course, in general they will be related to DevOps culture, automation, cloud, some linux stuff, etc. That doesn’t mean I will not be adding some post about travels I do or did, something else that is quite important for me.