- Posted by Veselin Mijuskovic
- On February 10, 2020
- 0 Comments
- Ansible, Chef, devops, devops tools, Puppet, SaltStack
DevOps, or the collaboration between development and operations teams, is an important component of IT companies today. Developing and implementing a DevOps culture helps to focus on IT results. With decentralized and cloud-based infrastructure, working in production today often means continuous deployments and an environment distributed all over the world. There is clear evidence to suggest that a DevOps approach to tech development can have a significant impact on the velocity of an IT organization and to save time and money as the gap between developers and IT operations teams closes. 85% of organizations have adopted, or plan to adopt, a product-centric application delivery model, which “goes hand-in-hand with the adoption of agile development methodologies and DevOps”.
There is an incredible array of services, tools and technologies available to organizations as they strive to meet their goals for faster delivery of higher quality software. But with hundreds of IT management and DevOps tools on the marketplace today, both open source and commercial, it’s hard to know where to start.
To help your DevOps process, we have searched for the best tools for DevOps engineers. To make the cut, these tools must include relevant and useful features, support several languages and operating systems, and be known for their reliability and security.
Here is a list of well-known tools that play an important role in DevOps strategies:
Ansible is an open-source tool used to deploy applications to remote nodes and provision servers in a repeatable way. It does this by providing a common framework for publishing multi-trier applications and applications by using a push model setup. We listed some of the pros and cons of using Ansible below:
- Agentless – does not require any tools except SSH and Python on the target machine (may use other connection protocols for managing network devices)
- Relatively easy to learn
- Python-based and can be extended easily
- Push based and imperative – the user can control the order of execution of different tasks which relates more to the usual way of doing things then description-based approach.
- Since it is push-based it is more difficult to manage large sets of machines.
- The web console is a community add-on – there’s a commercial version made by RedHat but it’s not free.
- Missing modules for compliance/security.
- Windows support is not on par with Linux/Unix support.
Next on our list is another open-source tool – Chef. It is focused on developer side for its user base and is a tool for configuration management. Chef operates as a master-client model with a separate workstation needed to control the master. Being based on Ruby means that knowledge of Ruby and pure Ruby for writing elements is a must. Here are some pros and cons:
- The most flexible solution
- Ruby-based DSL
- Has an excellent ecosystem with tools for automation, cloud monitoring, compliance and security management.
- Good for managing large-scale environments.
- The full ecosystem is insanely expensive
- Ruby-based DSL requires a steeper learning curve for people not fluent in Ruby.
- Pull-based/descriptive, so no control of the order of execution of tasks
Puppet has been around long enough that it was tried and deployed in some of the biggest and most demanding environments. Also an open-source tool, it is based in Ruby with a customized DSL. That is closer to JSON for working within it. Similar to Chef, it runs a master-client setup and a model-driven approach. In short, some of the pros and cons of Puppet are:
- Most mature
- Has support for almost all OSes
- Has a large community support
- Has web UI built-in in the free/open-source version
- Good for large-scale environments.
- A steep learning curve, DSL based on Ruby
- Pull-based/descriptive so no control of the order of execution of tasks.
Last on our list is a CLI-based tool that can be set up as a master-client or a non-centralized model. Saltstack is based in Python and it offers a push method as well as the SSH method of communication with clients. Options for grouping of clients and configuration templates allow for simple control of the environment. Some of the pros and cons of Saltstack are:
- Can be both agent-based and agentless (SSH)
- Has a good event-driven model
- Relatively easy to learn
- Easy to extend
- Not as popular as other tools
- Pull-based/descriptive so no control of the order of execution of tasks
- The event-driven model has a steep learning curve
For SuperAdmins it is imperative that our team is educated on the culture of continuous integration and delivery which is built into the process to achieve the expected efficiency from DevOps implementation.