Making Chef as Easy as Ansible

chef vs ansible
book cover
In his book Taste Test, Matt Jaynes compares a few popular configuration management tools such as Chef, Puppet, SaltStack and Ansible.

Cloudify – plug in ANY TOOL. Check it out.  Go

Jaynes points to some of the areas of complexity within Chef in comparison to Ansible. According to Jaynes, Chef’s areas of complexity can be summarized by the following:

  • Ease of Installation: Chef is not easy to install
  • Agent Installation: Chef doesn’t provide a remote agent installation
  • Remote Execution and Update: Chef lacks remote execution and push update
  • Ordering: Controlling the execution order of tasks is not intuitive

Making Chef as Simple as Ansible using Cloudify

One of the things that has kept me busy lately is how to make the experience of using Cloudify and Chef a smooth and simple experience. We wanted to get to the point where users can run a Chef Server or Agent, install cookbooks and wrap it with Cloudify Application Service in just a few minutes without having to download or install any software.
We’ve launched a new online service that does just that – making Chef on the cloud simple.
chef on cloudify
The way this works is that once you click on the launch button a new server is created on the cloud (HP OpenStack cloud in this specific case). Next we install the Chef-Server using Cloudify on that machine. After 2-3 minutes once the server is up a new interactive shell window is opened. The interactive shell will allow you to interact with the service by invoking a set of custom commands that are listed just below the interactive shell screen.
If you want to view the progress and process of deployment you can click on the “Manage Your App” button. You can also click on the “Use Chef” to open the Chef web admin.
While we wanted to make the experience simple it was equally important that we wouldn’t take shortcuts in that process for the sake of a demo. To that end, we kept the demo identical to the way you would run things in production. That means that all that is needed to build a similar demo yourself is download Cloudify and follow the same steps in your own environment.

Learn more about how Cloudify makes the Chef experience simple

Here’s how Cloudify maps specifically to the challenges outlined in Matt’s book.

  • Ease of Installation: Cloudify comes with built-in server provisioning support that works with a wide range of clouds out of the box, namely OpenStack, AWS, Azure, CloudStack, among others. Cloudify also comes with built-in integration with Chef. Cloudify allows you get your Chef Server installed and running on any of the supported clouds.
  • Agent Installation: Cloudify will provision your application machines, install a Chef agent and wire them up with the Chef server. Or, if you choose to run solo, it will allow you to install the agent with the appropriate cookbooks for that service.
  • Ordering: Cloudify allows you to define the dependencies between services and will launch them based on that order.
  • Remote Execution and Updates: Cloudify uses a custom-command abstraction that allows you to execute remote shell scripts on a group of instances that belong to a particular service or to a specific instance in a group. This feature is useful to run maintenance operations, such as snapshot in the case of a database or code push in a continuous deployment model.

jenkins orchestration with cloudify

Remote Execution with Cloudify

Beyond Deployment Automation

While improving your deployment experience with Chef is reason enough to use Cloudify, there are other benefits to gain as well. The real long-term benefit of using Cloudify is to manage post deployment through built-in management, logging and monitoring capabilities, as well as the built-in workflow for automating failover and auto-scaling processes.
cloudify blueprints
Cloudify 3.0 Monitoring

Technical Overview of the Cloudify and Chef integration

To learn more on how Cloudify works and how you can build your own Cloudify/Chef service see the Cloudify Chef integration documentation.

What’s next with Cloudify 3.0

The upcoming release of Cloudify (currently in Beta) includes further enhancements – specifically the support of Yaml/TOSCA-based configuration. Using Python to reduce the agent and server footprint, allows custom workflow setup to allow users to add their own set of rules to automate upgrades, fail-over and scaling processes, enhanced monitoring and many other goodies, so stay tuned for further updates shortly..

Final Notes

If you’re a Chef or Cloudify user, please share your experience  with me with this new service and, more importantly, let me know if there are areas where we can do even better. I would be most appreciative of your feedback.


    Leave a Reply

    Your email address will not be published. Required fields are marked *

    Back to top