Showing posts with label tools for DevOps. Show all posts
Showing posts with label tools for DevOps. Show all posts

Friday, February 1, 2019

What is Terraform?

In this post you will know what is Terraform and their key features. I believe that Terraform is an amazing tool. It was launched in 2014, and is going from “good to best” as compared to other tools.Terraform is the next generation configuration orchestration system. It is loaded with new features and functionalities.

As mentioned, Terraform is a configuration orchestration tool. It works well with any cloud, private on-prem or public. Terraform helps to obtain a safe and convenient design, as well as management and improvement in infrastructure as code. It is a part of Hashicorp Stack and this includes Vagrant, Packer, Consul, Vault, and Nomad, as well. With Terraform, it is possible to provide any application written in any language to any infrastructure. Terraform sounds cool, doesn’t it?

What is Terraform?

Terraform is a tool for building, changing and versioning infrastructure safely and efficiently. It can manage existing and popular service providers as well as a part of a custom in-house solution.



Why we like Terraform?


Infrastructure as Code: 

Infrastructure is described using a high-level configuration syntax. This allows a blueprint of your datacenter to be versioned and treated as you would any other code. Additionally, infrastructure can be shared and re-used.

Execution Plans: 

Terraform has a "planning" step where it generates anexecution plan. The execution plan shows what Terraform will do when you call apply. This lets you avoid any surprises when Terraform manipulates infrastructure.

Resource Graph: 

Terraform builds a graph of all your resources, and parallelizes the creation and modification of any non-dependent resources. Because of this, Terraform builds infrastructure as efficiently as possible, and operators get insight into dependencies in their infrastructure.

Change Automation

Complex changesets can be applied to your infrastructure with minimal human interaction. With the previously mentioned execution plan and resource graph, you know exactly what Terraform will change and in what order, avoiding many possible human errors.

Thursday, November 1, 2018

What is Configuration Management?

In this post you will learn about Configuration Management and What CM tools we used for DevOps. System Administrators usually perform repetitive tasks such as installing servers, configuring those servers, etc. They can automate this task, by writing scripts, but it is a very hectic job when you are working on a large infrastructure.

To solve this problem, Configuration Management was introduced. Configuration Management is the practice of handling changes systematically so that a system maintains its integrity over time. Configuration Management (CM) ensures that the current design and build state of the system is known, good & trusted; and doesn’t rely on the tacit knowledge of the development team. It allows access to an accurate historical record of system state for project management and audit purposes.

Configuration Management overcame the following challenges:


  • Figuring out which components to change when requirements change.
  • Redoing an implementation because the requirements have changed since the last implementation.
  • Reverting to a previous version of the component if you have replaced with a new but flawed version.
  • Replacing the wrong component because you couldn’t accurately determine which component needed replacing.

Configuration Management Benefits

The primary benefit of configuration management is consistency of systems and software. With configuration management, you no longer guess or hope that a configuration is current. It is correct because the configuration management system ensures that it is correct.

When combined with automation, configuration management can improve efficiency because manual configuration processes are replaced with automated processes. This also makes it possible to manage more targets with the same or even fewer resources.



Why Configuration Management Is Important

Configuration management is important because it enables the ability to scale infrastructure and software systems without having to correspondingly scale administrative staff to manage those systems. This can make it possible to scale where it previously wasn’t feasible to do so.

 Best Configuration Management Tools:

There are basically 4 tools at the top, Chef, Ansible, Puppet and Salt. In my opinion and based on my experience Ansible is the best and easiest tool of all for the very simple fact that it doesn’t require you to set up a minion agent on the machines, you can deploy ansible playbooks wherever you want, from any machine, you just need to have the playbook and the credentials (or keys). Also, as I mentioned unlike the others, you don’t need to install anything on the target servers, you just need python and SSH (most servers come with those 2 dependencies by default).

Another important point to add is Ansible has a HUGE library of modules and an extensive community that creates ansible playbooks and share them with the community.

What is Jenkins?

In this post you will learn about Jenkins. Jenkins is a continuous integration server (continuous integration server is the practice of running tests on non-developer machine automatically every time when new code is pushed into source repository). It is written in Java. It provides many plugins that help to support building, deploying and automating any project. It can be installed through native system packages, Docker or even run standalone by any machine with the help of JRE (Java Runtime Environment). It automates multiple tasks including building, testing and delivering software.

Continuous integration server has tremendous advantage. It helps to provide information if all the tests working properly and getting fast feedback. Fast feedback helps you whenever you broke the build and introduce changes. So you get to know about the error codes and get rectified immediately. Continuous deployment and delivery are built on the top of continuous integration and Jenkins helps to speed up the deployment process.

Nowadays it has been used by many companies like Facebook, E-bay, GitHub etc. Jenkins can be easily modified and extended and is available for all the platforms and operating systems for example OS X, Windows or Linux.

Advantages of jenkins :

  • It is open source and it is user-friendly, easy to install and does not require additional installations or components.
  • It is free of cost.
  • Easily Configurable. Jenkins can be easily modified and extended. It deploys code instantly, generates test reports. Jenkins can be configured according to the requirements for continuous integrations and continuous delivery.
  • Platform Independent. Jenkins is available for all platforms and different operating systems, whether OS X, Windows or Linux.
  • Rich Plugin ecosystem. The extensive pool of plugins makes Jenkins flexible and allows building, deploying and automating across various platforms.
  • Easy support. Because it is open source and widely used, there is no shortage of support from large online communities of agile teams.
  • Developers write the tests to detect the errors of their code as soon as possible. So the developers don’t waste time on large-scale error-ridden integrations.
  • Issues are detected and resolved almost right away which keeps the software in a state where it can be released at any time safely.
  • Most of the integration work is automated. Hence fewer integration issues. This saves both time and money over the lifespan of a project.

When any developer commits any changes to the source code, Jenkins will automatically pull the code and continuously build and test that code.

Jenkins has a lot of features like easy installation, easy configuration, extensible, etc.

Jenkins uses master-slave architecture to perform its tasks. Jenkins master pull the code every time there is a commit in the remote source code repository. It uses TCP/IP protocol to interact with the slaves. Jenkins master distributes its workload to all the slaves. On request from Jenkins master, the slaves carry out builds, tests and produce test reports. Jenkins slaves can be run on any platform like Windows, Linux, Mac OS, etc. and sends the results back to Jenkins master. Above  diagram that show how the distributed architecture of Jenkins works:

Wednesday, October 24, 2018

Best Tools in DevOps

In this post you will know the most popular tools in DevOps. The DevOps tools can be categorized in five groups depending on its purpose in the particular stage of DevOps lifecycle.

The following are the DevOps tools can be categorized in five groups depending on its purpose in the particular stage of DevOps life cycel.


 1 .Continuous Integration: Jenkins, Travis, TeamCity
 2. Configuration Management: Puppet, Chef, Ansible, CFengine
 3. Continuous Inspection: Sonarqube, HP Fortify, Coverity
 4. Containerization: Vagrant, Docker
 5. Virtualization: Amazon EC2, VMWare, Microsoft Hyper-V


1.)Continuous Integration Tools

Jenkins

Jenkins is an open-source continuous integration server written in Java. It helps developers in building and testing software continuously and monitors externally-run jobs such as cron jobs and procmail jobs.

Travis

Travis CI is an open-source hosted, distributed continuous integration service used to build and test projects hosted at GitHub.

2.)Configuration Management Tools

Puppet Labs
 Puppet is arguably the most well-established of these configuration management platforms. It tends to be favored by organizations whose DevOps push was driven by ops people who like the simplicity of its declarative programming language and gentler learning curve

Chef

Chef tends to offer a greater degree of flexibility than Puppet for those who have the skills to program infrastructure via this Ruby-driven platform.



3.)Continuous Inspection Tools

Sonarqube

SonarQube is the central place to manage code quality. It offers visual reporting on and across projects and enabling to replay the past code to analyze metrics evolution.

HP Fortify

HP Fortify Static Code Analyzer (SCA) helps verify that your software is trustworthy, reduce costs, increase productivity and implement secure coding best practices.

4.)Containerization Tools

Docker

DevOps teams use this containerization tool as an open platform that makes it easier for developers and sysadmins to push code from development to production without using different, clashing environments during the entire application lifecycle.

Vagrant

Vagrant is an open source product described as Virtual Machine (VM) manager. It is a wonderful tool that allows you to script and package the VM config and the provisioning setup with multiple VMs each with their own configurations managed with puppet and/or chef.

5.)Virtualization Tools

Amazon EC2

Amazon Elastic Compute Cloud (Amazon EC2) provides virtualization using scalable computing capacity in the Amazon Web Services (AWS) cloud. Amazon EC2 decreases capital expenditure by eliminating the investment in hardware upfront cost.

VMWare

VMWare provides virtualization through a gamut of products. It’s product vSphere virtualizes your server resources and provide critical capacity and performance management capabilities.

High Paying Jobs after Learning Python

Everyone knows Python is one of the most demand Programming Language. It is a computer programming language to build web applications and sc...