Posts

Intro to Terraform and how it is related to test automation infrastructure

Image
In this post, we will take a closer look at one of the most popular infrastructure-as-code software tools developed by HashiCorp, and if you follow my recent content, that name should start ringing a few bells. So, what is Terraform and why do we need it? Terraform allows you to define and describe your infrastructure in the form of code. To be more specific “HashiCorp declarative configuration language” (or HCL in short). With Terraform you can manage your resources and infrastructure modules like servers, VPCs, security groups, and much more, even if they are located on different providers such as AWS or Azure.  Generally speaking, cloud providers have their own infrastructure-as-code tools like CloudFormation or ARM. But, Terraform has very extensive support for different cloud providers and platforms allowing you to use a single tool for cross-cloud configurations. This makes it easier to manage your resources, easier to onboard and this is a scalable and in general, the “best ...

Build Your Own Custom AMI With Packer

Image
  Yup, that's me again... dealing with some new pain in the neck and then writing about it.  And this time let me tell you a few things about mutable infrastructure or even more specific, how to build your own using Packer and AWS. So, for the past 2 years or so I have been working in an amazing company where I lead the Automation Infra team. A team of awesome and super talented all around infra developers that basically maintain the entire QA Guild's infrastructure including automation, pipelines, custom AWS resources and much more. In the scope of our work, dynamic EC2 instances are heavily in use for various deployment and automation needs. The need for dynamic mutable infrastructure is a very common need and in the era of cloud providers and various open source and commercial solutions we are able to address that need effectively.  So, What is Packer? Packer is an open-source tool for creating Machine Images from source configuration developed by HashiCorp. (And ...

Docker cheat sheet - Get to know the most common docker commands

Image
  Docker is a very popular piece of technology. It is being heavily used for the past several years in Development/QA teams. In this post, we are going to list the most common docker terminal commands that will make your life easier, and serve as a glossary/cheat sheet when you need a reminder on how to perform a certain operation.  On this note, if you haven't read my previous articles about docker I would strongly advise you to start from reading those as well. $docker login <repository> This command allows you to login to docker hub or any other remote repository of your choice.  $docker ps This command will list all currently running containers on the machine it is executed on. $docker ps -a/--all This will list all containers both running and stopped. $docker run <image>:<version> /  $docker container run  <image>:<version> $docker run will do the following : Check if the image exists locally         ...

A quick intro to MongoDB

Image
  In this blogpost we are going to take a quick look at one of the most popular peaces of modern technology, MongoDB. What is MongoDB? MongoDB is an open source, NoSql, non-relational, schema-less, document-oriented data base. In Mongo, data is organised in a Binary Json document format which is called a Collection. The basic differences between Mongo and a relational data base such as PostgreSQL can be summarised as: Collections INSTEAD OF Tables Documents INSTEAD OF Rows Fields INSTEAD OF columns Installation and Interface. MongoDB can be downloaded from their official website . If you are on a Mac, you can easily use the Homebrew  package manager.  Once the installation is completed just start the MongoDB service to initiate a local DB server. Connecting to the DataBase. To start using my database, I'm going to use a client called RoboMongo (Robo 3T) which can be downloaded from this link Once the client is installed, we can begin by connecting to our DataBase. To init...