We use the product for deployment purposes.
Senior Software Architect with 5,001-10,000 employees
Docker v. CFEngine v. Puppet Data Center Automation v. Chef v. Ansible
Originally posted at http://technologyconversations.com/2015/08/26/configuration-management-in-the-docker-world/
Anyone managing more than a few servers can confirm that doing such a task manually is a waste of time and risky. Configuration management (CM) exists for a long time and there is no single reason I can think of why one would not use one of the tools. The question is not whether to adopt one of them but which one to choose. Those that already embraced one or the other and invested a lot of time and money will probably argue that the best tool is the one they chose. As things usually go, the choices change over time and the reasons for one over the other might not be the same today as they were yesterday. In most cases, choices are not based on available options but by the architecture of the legacy system we are sworn to maintain. If such systems are to be ignored or someone with enough courage and deep pockets would be willing to modernize them, today’s reality would be dominated by containers and microservices. In such a situation, the choices we made yesterday are definitely different from choices we could make today.
CFEngine
CFEngine can be considered father of configuration management. It was created in 1993 and revolutionized the way we approach server setups and configurations. It started as an open source project and become commercialized in 2008 when the first enterprise version was released.
CFEngine is written in C, has only few dependencies and is lightning fast. Actually, as to my knowledge, no other tool managed to overcome CFEngine’s speed. That was, and still is its main strength. However, it had its weaknesses with requirement for coding skills being probably the main one. In many cases, an average operator was not able to utilize CFEngine. It requires a C developer to manage it. That did not prevent it from becoming widely adopted in some of the biggest enterprises. However, as youth usually wins over age, new tools were created and today rarely anyone chooses CFEngine without being “forced” to do so due to the investment the company made into it.
Puppet
Later on Puppet came into being. It also started as an open source project followed by the enterprise version. It was considered more “operations friendly” thanks to its model driven approach and small learning curve when compared to CFEngine. Finally there was a configuration management tool that operations department could leverage. Unlike C utilized by CFEngine, Ruby proved to be easier to reason with and more accepted by ops. CFEngine’s learning curve was probably the main reason Puppet got its footing into the configuration management market and slowly sent CFEngine into history. That does not mean that CFEngine is not used any more. It is and it doesn’t seem it will disappear any time soon in the same way as Cobol is still present in many banks and other finance related businesses. However, it lost its reputation for being the weapon of choice.
Chef
Then came Chef promising to solve some of the nuances of Puppet. And it did, for a while. Later, as popularity of both Puppet and Chef continued increasing, they entered the “zero sum game”. As soon as one of them came up with something new or some improvement, the other one adopted it. Both feature an ever increasing number of tools which tend to increase their learning curves and complexity. Chef is a bit more “developer friendly” while Puppet could be considered more oriented towards operations and sysadmin type of tasks. Neither has a clear enough advantage over the other and the choice is often made based on personal experience than anything else. Both Puppet and Chef are mature, widely adopted (especially in enterprise environments) and have a huge number of open source contributions. The only problem is that they are too complicated for what we are trying to accomplish. Neither of them was designed with containers in mind. Neither of them could know that the “game” would change with Docker since it didn’t exist at the time they were designed.
All of the configuration management tools we mentioned thus far are trying to solve problems that we should not have the moment we adopt containers and immutable deployments. The server mess that we had before is no more. Instead of hundreds or even thousands of packages, configuration files, users, logs, and so on, we are now trying to deal with a lot of containers and very limited amount of anything else. That does not mean that we do not need configuration management. We do! However, the scope of what the tool of choice should do is much smaller. In most cases, we need a user or two, Docker service up and running and a few more things. All the rest are containers. Deployment is becoming a subject of a different set of tools and redefining the scope of what CM should do. Docker Compose and Kubernetes are only a few of a rapidly increasing number of deployment tools we might use today. In such a setting, our configuration management choice should value simplicity and immutability over other things. Syntax should be simple and easy to read even to those who never used the tool. Immutability can be accomplished by enforcing a push model that does not require anything to be installed on the destination server.
Ansible
Ansible tries to solve the same problems as other configuration management tools but in a very different way. One important difference is that it performs all its operations over SSH. CFEngine and Puppet require clients to be installed on all servers they are supposed to manage. While Chef claims that it doesn’t, its support for agent-less running has limited features. That in itself is a huge difference when compared to Ansible that does not require servers to have anything special since SSH is (almost) always present. It leverages well defined and widely used protocol to run whatever commands need to be run in order to make sure that the destination servers comply with our specifications. The only requirement is Python that is already pre-installed on most Linux distributions. In other words, unlike competitors that are trying to force you to setup servers in a certain way, Ansible leverages existing realities and does not require anything. Due to its architecture, all you need is a single instance running on a Linux or MacOS computer. We can, for example, manage all our servers from a laptop. While that is not advisable and Ansible should probably run on a “real” server (preferably the same one where other continuous integration and deployment tools are installed), laptop example illustrates its simplicity. In my experience, push based systems like Ansible are much easier to reason with than pull based tools we discussed earlier.
Learning Ansible takes a fraction of the time when compared to all the intricacies required to master the other tools. Its syntax is based on YAML (Yet Another Markup Language) and with a single glimpse over a playbook, even a person who never used a tool would understand what’s going on. Unlike Chef, Puppet and, especially CFEngine that are written by developers for developers, Ansible is written by developers for people who have better things to do than learn yet another language and/or DSL.
Some would point out that the major downside is Ansible’s limited support for Windows. The client does not even run on Windows and the number of modules that can be used in playbooks and run on it is very limited. This downside, assuming that we are using containers is, in my opinion, an advantage. Ansible developers did not waste time trying to create an all around tool and concentrated on what works best (commands over SSH on Linux). In any case, Docker is not yet ready to run containers in Windows. It might be in the future but at this moment (or at least the moment I was writing this text), this is on the road map and with questionable results. Even if we ignore containers and their questionable future on Windows, other tools are also performing much worst on Windows than Linux. Simply put, Windows architecture is not as friendly to the CM objectives than Linux is.
I probably went to far and should not be too harsh on Windows and question your choices. If you do prefer Windows servers over some Linux distribution, all my praise of Ansible is in vain. You should choose Chef or Puppet and, unless you already use it, ignore CFEngine.
Personal choice
If someone asked me few years ago which tool should we use I would have a hard time answering. Today, if one has the option to switch to containers (be it Docker or some other type) and immutable deployments, the choice is clear (at least among tools I mentioned). Ansible (when combined with Docker and Docker deployment tools) wins any time of the day. We might even argue whether CM tools are needed at all. There are examples when people rely completely on, let’s say, CoreOS, containers, and deployment tools like Docker Swarm or Kubernetes. I do not have such a radical opinion (yet) and think that CM continues being a valuable tool in the arsenal but. Due to the scope of the tasks CM tools needs to perform, Ansible is just the tool we need. Anything more complex or harder to learn would be an overkill. I am yet to find a person who had trouble maintaining Ansible playbooks. As a result, configuration management can easily become responsibility of the whole team.I’m not trying to say that infrastructure should be taken lightly (it definitely shouldn’t). However, having contributions from the whole team working on a project is a big advantage for any type of tasks and CM should not be an exception. CFEngine, Chef and Puppet are an overkill with their complex architecture and their steep learning curve. At least when compared with Ansible.
The four tools we briefly went through are by no means the only ones we can choose from. You might easily argue that neither of those is the best and vote for something else. Fair enough. It all depends on preferences and objectives we are trying to archive. However, unlike the others, Ansible can hardly be a waste of time. It is so easy to learn that, even if you choose not to adopt it, you won’t be able to say that a lot of valuable time was wasted. Besides, everything we learn brings something new and makes us better professionals.
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Technical Lead at Cellulant Kenya
Stable product with an easy setup process
Pros and Cons
- "The product's most valuable feature is cloud simulation to predict application behavior on the cloud."
- "There could be an automation feature included in the product. It will speed up application processes and will not require scripting codes."
What is our primary use case?
What is most valuable?
The product's most valuable feature is cloud simulation to predict application behavior on the cloud. It helps us with setting images and deploying them without a need to certify applications in the Kubernetes environment. We can work in a cloud-managed environment. It allows us to focus on testing properly.
What needs improvement?
There could be an automation feature included in the product. It will speed up application processes and will not require scripting codes.
For how long have I used the solution?
We have been using Docker Enterprise for a year.
What do I think about the stability of the solution?
I rate the product's stability an eight out of ten. I have never had any stability issues.
What do I think about the scalability of the solution?
The platform's scalability depends on the availability of resources. It is highly scalable if there is enough memory or storage space. A team of four to five executives from the CACD team uses Mirantis Container Cloud in our organization. They support all the deployments conducted by the rest of our engineers.
How was the initial setup?
The initial setup is easy and takes a day to complete. The process involves downloading an executable profile, which is available online, and then executing it on the machine. It requires following guidelines from the CACD team for setting up applications.
What other advice do I have?
I highly recommend Mirantis Container Cloud and rate it an eight out of ten. It is a good starting point for organizations adopting containerization and Kubernetes.
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Buyer's Guide
Mirantis Container Cloud
November 2024
Learn what your peers think about Mirantis Container Cloud. Get advice and tips from experienced pros sharing their opinions. Updated: November 2024.
816,406 professionals have used our research since 2012.
Solution Architect at KIAN company
Reliable, scalable, and easy installation
Pros and Cons
- "The solution is scalable and we have plans to increase usage in the future."
- "This solution is open-source and they need to focus on improving the Linux Operating Systems' GUI. It does not have a GUI making it not user-friendly. Additionally, the containers need to improve security and compliance."
What is our primary use case?
In our team, we need to develop virtualization infrastructure and provide a specific environment for the developer and software engineers to migrate microservices and new applications in an environment based on containers. Therefore, we need to build and create a new platform. We established a container engine called Docker and a distributed open-source orchestrators, such as Kubernetes, to manage lots of containers in the environment.
How has it helped my organization?
The organization has a lot of microservices for websites and mobile applications that need to scale easily horizontally and vertically. I am directly responsible for building a Docker environment for the organization for their applications and microservices. Our developers have provided the organization with the benefit of the scalability and availability of the applications. By using Docker Engine and the environment, they can easily run their application in different containers and schedule different hosts. It is simple to scale the applications, check the health and availability.
The most benefits of the containers are resolving the portability of the applications from the developer environment to the production, as well as the ability to scale easily.
What needs improvement?
This solution is open-source and they need to focus on improving the Linux Operating Systems' GUI. It does not have a GUI making it not user-friendly. Additionally, the containers need to improve security and compliance.
For how long have I used the solution?
I have been using this solution for approximately two years.
What do I think about the stability of the solution?
Docker is not stable itself because it is an engine to run containers, and whenever a container is shut down, your data is lost, and you need to restart the containers. However, if you want to receive more stability, you need to use container orchestrators, such as Docker Swarm, or Kubernetes along with Docker. Docker is not perfect itself, you need to use additional software or another orchestration system to make it more stable.
What do I think about the scalability of the solution?
In my company, approximately 10 software engineers and developers are working directly on Docker Engine. In the infrastructure environment, we have two members, myself and another colleague. We build and manage the Docker environment and infrastructure. My main responsibility in my company is providing and developing container solutions, establish and supporting their Docker environment and orchestration systems.
The solution is scalable and we have plans to increase usage in the future.
How are customer service and technical support?
I learned Docker and Kubernetes myself based on online files, such as educational materials published on the websites and at the Dockers website.
Unfortunately, due to sanctions in my country, we cannot access the official support by searching Google for Kubernetes or the Mirantis company that provided and support Docker. Therefore, we need to solve many problems based on online materials available on the internet. For specific more complex and critical problems, we communicate and negotiate with one of our partners in Europe.
It would be better to provide an online lab for providing Docker environments on the Docker website. This would allow any engineers who are looking to work on a Docker environment access to the environments on the website where they can easily work and manage Docker containers freely on the internet. Additionally, Docker should publish some presentations about new features. For example, they could provide a specific channel for interaction between engineers who are working on the Docker to share their knowledge. The Docker community is not great in comparison with VMware or Microsoft community.
How was the initial setup?
Docker installation is very straightforward because you can easily install Docker Engine based on the instruction provided on the Docker website. It is an easy four or five steps process.
If you have good knowledge about the installation process, it can be installed in five minutes. However, if you do not have any information about the prerequisites of the installation, it can be difficult. You need to provide lots of prerequisites, such as install services. Without previous knowledge, it could take four or five hours.
What about the implementation team?
I did the implementation of the solution myself. My main responsibility is conducting proof of concept, as well as implementing and helping to develop new solutions for Docker and Kubernetes.
What's my experience with pricing, setup cost, and licensing?
The solution is open-source and free to try.
What other advice do I have?
I rate Mirantis Container Cloud a nine out of ten.
Which deployment model are you using for this solution?
On-premises
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Cloud sales & support for rackspace with 11-50 employees
A faster and flexible solution with excellent support systems
Pros and Cons
- "The most valuable aspect is the excellent support. In addition, the billing system is really easy to understand."
- "Sometimes the basic support is a bit difficult if you have a firewall and cloud servers behind the firewall and then try to implement the backup solution, it is a bit difficult to do by yourself."
What is our primary use case?
Our primary use case for this solution is for electronic commerce.
How has it helped my organization?
It took us 30% faster to implement the solutions that we used to have with other platforms, and the flexibility has increased by 50%.
What is most valuable?
The most valuable aspect is the excellent support. In addition, the billing system is really easy to understand.
What needs improvement?
Sometimes the basic support is a bit difficult if you have a firewall and cloud servers behind the firewall and then try to implement the backup solution, it can be a bit difficult to do by yourself. If you have a Rackspace engineer, it is easier, because they know the procedures, but that service is not cheap. It can be an extra $500 for that extra service, per month. It would be nice to see that cost decrease.
For how long have I used the solution?
One to three years.
What do I think about the stability of the solution?
The product is stable. Any problems that we have noticed have been with the customer doing something wrong. For instance, they may have two versions of the application that do not match, which will cause errors. But, we can never blame Rackspace Docker for this. It is an internal problem.
What do I think about the scalability of the solution?
The scalability is a bit difficult. Rackspace has beautiful tools to make scaling pretty easy. Usually, it is our customer that is afraid to scale too fast. At times, we have to convince our clients to move towards the cloud, because the cloud function is very different from the on premise solutions. Once they understand this, they are eager to jump to the next level.
We currently have two customers that have 8,000 users connected to the solution. They are in the automotive industry. The users are a combination of sales people, service representatives and executives. There is a tremendous ability for Docker to support a lot of users.
How is customer service and technical support?
The customer service is good.
How was the initial setup?
The setup was very easy, but if you get into something with the backup agent or the API, that is when you may begin to stumble. Sometimes this causes a slower time for implementation and ultimate deployment.
Our standard procedure is to look at the requirements, set of a pilot, do some testing, and then release the solution. It can take several weeks, and it depends on understanding our customers' needs. We have our own staff who complete the process.
What's my experience with pricing, setup cost, and licensing?
At times, my customers are upset with the cost of the product. Other solutions seems inexpensive, in comparison. But, I tell my customers that once you start putting the solution together, will you realize that it will cost more than Rackspace Docker.
Which other solutions did I evaluate?
We looked at VMware and Hyper-V, as well as Amazon. But, we stayed with Rackspace Docker becuas ewe already know that this is doing the best in terms of what it is offering.
What other advice do I have?
My advice is in regards to the security. Many of my customers do not care enough about security, they have a disbelief that once you are in a cloud, you are automatically secure. This sis not the case at all. You need to understand that nothing is guaranteed if you do not follow the right rules. You need proper monitoring tools to keep the work-site safe and secure. It may cost the customer more, but it is worth every penny.
Disclosure: I am a real user, and this review is based on my own experience and opinions.
CEO and Founder at Indicrypt Systems
Facilitates rapid deployment and has thorough, easy to read documentation
Pros and Cons
- "Docker is very helpful for taking the code from development and applying it to the end user."
- "It would be very nice to have a GUI that can be used by any administrator, and not just people who have experience with Docker."
What is our primary use case?
My experience with Docker is in helping to provide solutions for my clients. Specifically, this involves continuous integration and continuous deployment for my clients' workflow.
How has it helped my organization?
We are using Docker for a client that we currently have in India. They are building a solution for the medical industry. Docker is very helpful for taking the code from development and applying it to the end user.
What is most valuable?
The most important thing that my clients focus on is rapid deployment. In this regard, Docker wins hands-down.
What needs improvement?
It would be very nice to have a GUI that can be used by any administrator, and not just people who have experience with Docker.
For how long have I used the solution?
Two years.
What do I think about the stability of the solution?
The stability of this solution is perfect. Five stars.
What do I think about the scalability of the solution?
This solution scales very well, and it can be scaled to the entire infrastructure when required.
Three of my clients are currently using Docker, and all of them are involved in software development. One of my clients is in the process of scaling up, moving from ten to one hundred and fifty developers within the next six months.
How are customer service and technical support?
The documentation for this solution is excellent. So far, all of the problems that I have faced have been solved by looking at the documentation.
Which solution did I use previously and why did I switch?
We did not use another solution prior to this one.
How was the initial setup?
The setup was very straightforward. I just followed the documentation on the Docker website, and it went smoothly.
Implementation for the client was not very big. It was eight to ten developers, and it took between one and two days to complete. The most important thing on our end was to get our client's infrastructure up and running with Docker.
One person can handle the deployment and maintenance of this solution.
What about the implementation team?
We implement this solution for our clients using our in-house team.
What's my experience with pricing, setup cost, and licensing?
I am using the community edition, rather than the enterprise edition because I am operating on a very small scale at the moment. The community edition does not require a license and is completely free.
Which other solutions did I evaluate?
We did not evaluate options other than Docker.
What other advice do I have?
My advice to anybody who is implementing this solution is to read the documentation very carefully. That can give a lot of relief when the client needs a solution.
If Docker had a graphical user interface then it would be a perfect solution.
I would rate this solution and eight out of ten.
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Applications Lead at a comms service provider with 1,001-5,000 employees
Easily deploys on various platforms and cloud providers
Pros and Cons
- "I think this solution needs better security due to more risks from the outside world."
What is our primary use case?
I am using this as a lab costing application. It is pretty fast.
How has it helped my organization?
You can easily deploy it in different platforms and cloud providers. You are actually deploying container to container.
What is most valuable?
The commissioning is very fast.
What needs improvement?
I think this solution needs better security due to rising threats from the outside world.
For how long have I used the solution?
One to three years.
What do I think about the stability of the solution?
The product is stable.
What do I think about the scalability of the solution?
I am not scaling it very much at this time. I only have about 20 users at present. The roles of the users are information users, managers and middle managers.
How is customer service and technical support?
The tech support is pretty good.
How was the initial setup?
It was straightforward for us.
What's my experience with pricing, setup cost, and licensing?
The pricing and licensing really depends on what your needs are. You could be paying $100 a month to $100,000. It depends on the needs you have from the solution, and the agreement you make.
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Head IT Architecture at a tech vendor with 11-50 employees
Cuts down on development time and allows for multiple spin-offs
Pros and Cons
- "This solution has cut down on our development time and allows us to spin off new instances for inner development, testing, productions, and security testing."
- "Areas for improvement are the privacy of container management and the documentation. In the next release, I would like to see best practices on how to manage distributed containers and networks."
How has it helped my organization?
This solution has cut down on our development time and allows us to spin off new instances for inner development, testing, productions, and security testing.
What needs improvement?
Areas for improvement are the privacy of container management and the documentation. In the next release, I would like to see best practices on how to manage distributed containers and networks.
For how long have I used the solution?
I've been using this solution for about five years.
What do I think about the stability of the solution?
This solution is pretty much stable.
What do I think about the scalability of the solution?
This solution is extremely scalable - we are able to spin off multiple instances very rapidly.
How was the initial setup?
Initial setup was extremely simple and was done in minutes.
What about the implementation team?
I implemented through an in-house team.
What other advice do I have?
I would rate this solution as eight out of ten.
Which deployment model are you using for this solution?
Hybrid Cloud
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Designer and Developer at a tech services company
The most valuable feature is creating your own image.
What is most valuable?
The most valuable feature of Docker is by far is creating your own image. By creating your own image, you can have an environment for whatever you are working on that is exactly how you want it.
The idea that you can create a machine this quickly, use it, destroy it if you want, build upon it, take things out, and rebuild very quickly is very useful.
For example, you could add a command that installs a certain tool to your Dockerfile and build that image. Your image now has that tool. If you want to get rid of that tool, you just get rid of the line from the Dockerfile, rebuild the image, and it’s like you never installed that tool.
It gives you a feeling of complete control. By comparison, doing the same thing with something like Vagrant would take a lot of time. With Docker, building an image is so fast that it’s practically disposable.
How has it helped my organization?
Docker has allowed me to have pre-defined working environments that can be moved to the cloud and I know they will be exactly the same. Something can be deployed to the cloud, but the overhead of running a virtual machine is wasteful. This is especially the case since on most clouds, an account is already contained by a virtual machine. Running a virtual machine within a virtual machine is possible, but not ideal.
What needs improvement?
Docker is already aware of how faulty their file system volume mounting technology is on the Mac. I see that they are making improvements in that area, but there is still a long way to go.
On the Mac, Docker is far from perfect. The program has issues communicating with the file system and receiving events. As a result, Docker’s volume features are very slow on the Mac. However, there is a workaround called Docker-sync. Docker sync goes around Docker’s weak volume support on the Mac by syncing files through the network using unison and rsync. Still, I would only give Docker a 10 if their volume experience were as good on the Mac as it is on Linux. I have used this product in a Mac environment as well as Linux.
For how long have I used the solution?
I have been using Docker since November, 2016. I started using it to see what all the talk was about. The initial learning curve was somewhat steep. What Docker does is simple. However, understanding what Docker does is important and not obvious. That’s why I took Lynda’s course on Docker. This course gave me a good practical understanding of Docker. After understanding the basics, the documentation actually became useful to read.
What do I think about the stability of the solution?
In my experience, Docker has been very stable.
What do I think about the scalability of the solution?
There have been no scalability issues. As a matter of fact, Docker itself can be used to help you scale up by allowing you to create a new environment quickly when you need more power, or if you want to deliver an instance closer to a customer.
How are customer service and technical support?
In term of technical support, the Docker community is very helpful and active. There are already a lot of answers to common questions on stack overflow.
Which solution did I use previously and why did I switch?
I previously used Vagrant. I switched because of Docker’s speed, ease of creating images, and its low overhead.
How was the initial setup?
The initial setup of Docker on the Mac is simple. There is a very friendly GUI installer. If you already have Homebrew installed, you can simply run “brew cask install docker”.
Installing Docker on Linux is a different story, since the versions supported by the default package manager sources are out of date. It’s necessary to follow somewhat lengthy instructions from Docker’s website.
What's my experience with pricing, setup cost, and licensing?
The Docker community edition is free. I don’t have any experience with their paid versions. I have not felt the need to upgrade.
Which other solutions did I evaluate?
I tried Docker because there was a bit of hype around it. I had been using Vagrant. I did not know about things like LXD before starting to experiment with Docker. If anything, I have learned about alternative container technologies that I might evaluate later.
What other advice do I have?
I think that Docker is the best among its peers. Creating, downloading, uploading, and sharing images is faster than doing the same on something like Vagrant.
When using Docker on the Mac, I only used it to create a local development environment. I also have a Docker installation running in production on a production environment being used as the backend for an iOS app.
I would advise people to take the Lynda course on Docker. In my experience, the documentation only becomes useful after understanding the basics and the general idea.
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Buyer's Guide
Download our free Mirantis Container Cloud Report and get advice and tips from experienced pros
sharing their opinions.
Updated: November 2024
Popular Comparisons
Canonical LXD
Buyer's Guide
Download our free Mirantis Container Cloud Report and get advice and tips from experienced pros
sharing their opinions.
Very informative