To achieve faster application delivery, right tools must be used in Devops environments. There is no single tool which fits all your needs such as server provisioning, configuration management, automated builds, code deployments and monitoring. Many factors determine the use of a particular tool in your infrastructure. In this article, we will look into core tools which can be used in a typical Devops environment.
1. Terraform
Terraform is an Infra provisioning tool which is cloud-agnostic. It is created by Hashicorp and written in Go. It supports all public and private cloud infrastructure provisioning. Unlike other configuration management tools, terraform does a great job in maintaining the state of your infrastructure using a concept called state files. You can get started with Terraform in days as it is easy to understand. Terraform has its own DSL called HCL (Hashicorp configuration language). Also, you can write your own terraform plugin in go for your custom functionalities. If you a beginner, you can get started with terraform using this book
2. Ansible
Ansible is an agent-less configuration management as well as orchestration tool. In Ansible, the configuration modules are called “Playbooks”. Playbooks are written in YAML format and it is relatively easy to write when compared to other configuration management tools. Like other tools, Ansible can be used for cloud provisioning.
You can find all community playbooks from Ansible Galaxy
3. Chef
Chef is a ruby based configuration management tool. Chef has the concept of cookbooks where you code your infrastructure in DSL (domain specific language) and with a little bit of programming. Chef provisions virtual machines and configures them according to the rules mentioned in the cookbooks. An agent would be running on all the servers which have to be configured. The agent will pull the cookbooks from the chef master server and runs those configurations on the server to reach its desired state.
3. Puppet
Puppet is also a ruby based configuration management tool like chef. The configuration code is written using puppet DSL’s and wrapped in modules. While chef cookbooks are more developer-centric while puppet is developed by keeping system administrators in mind. Puppet runs a puppet agent on all server to be configured and it pulls the compiled module from the puppet server and installs required software packages specified in the module.
You can find all community Puppet Modules from Puppetforge
4. Saltstack
Saltstack is a python based opens configuration management tool. Unlike chef and puppet, Saltstack supports remote execution of commands. Normally in chef and puppet, the code for configuration will be pulled from the server while, in Saltstack, the code can be pushed to many nodes simultaneously. The compilation of code and configuration is very fast in Saltstack.
Continuous Integration/Deployment
7. Jenkins
Jenkins is a java based continuous integration tool for faster delivery of applications. Jenkins has to be associated with a version control system like GitHub or SVN. Whenever new code is pushed to a code repository, Jenkins server will build and test the new code and notifies the team for with the results and changes.
Jenkins is not just a CI tool anymore. Jenkins is been used as an orchestration tool by building pipelines for the application provisioning and deployment. Its new pipeline as code functionality lets you keep the CI/CD pipelines as a complete code.
8. Vagrant
Vagrant is a great tool for configuring virtual machines for a development environment. Vagrant runs on top of VM solutions like VirtualBox,VMware, hyper-V etc. It uses a configuration file called Vagrantfile, which contains all the configurations needed for the VM. Once a virtual machine is created, it can be shared with other developers to have the same development environment. vagrant has plugins for cloud provisioning, Configuration management tools (chef, puppet etc,) and Docker.
9. Docker
Docker works on the concept of process level virtualization. Docker creates isolated environments for applications called containers. These containers can be shipped to any other server without making changes to the application. Docker is considered to be the next step in virtualization. Docker has a huge developer community and it is gaining huge popularity among Devops practitioners and pioneers in cloud computing.
Config/Secret Management
10. Consul
Consul is an opensource highly available key value store. It is mainly used for service discovery purposes. If you have a use case to store and retrieve configurations in real time, consul is the right fit.
11. Etcd
etcd is another opensource key value store created by CoreOS team. It is one of the key components used in Kubernetes for storing the state of cluster operations and management.
12. Vault
Vault is an open source tool for storing and retrieving secret data. It provides many functionalities to store your secret key in an encrypted way. You can create ACLs, policies and roles to manage how the secrets will be accessed by end users.
Monitoring
13. Prometheus & Alert Manager
Prometheus is an open source monitoring system. It is very light weight and specifically built for modern application monitoring. It supports Linux server and container monitoring.
It has out of the box support for Kubernetes and Openshift monitoring. Alert manager manages all the alerting setup for the monitoring metrics.
14. New Relic
New relic is a cloud-based (SaaS) solution for application monitoring. It supports monitoring of various applications like Php, Ruby, Java, NodeJS etc. It gives you the real-time insights about your running application. A new relic agent should be configured in your application to get the real time data. New relic uses various metrics to provide valuable insights about the application it is monitoring.
15. Sensu
Sensu is an open source monitoring framework written in Ruby. Sensu is a monitoring tool specifically built for cloud environments. It can be easily deployed using tools like chef and puppet. It also has an enterprise edition for monitoring.
16. Datadog
Datadog is also a cloud-based (Saas) application and server monitoring solutions. You can monitor docker containers and other applications using Datadog.
Other tools worth considering,
- Riemann (Open Source Monitoring Tool)
- AppDynamics (For application monitoring)
- Logz.io (For log analysis and management)
- Splunk (Log analysis and alerting)
Fantastic tool tօ fight crime