What is chef?
Chef is a infrastructure automation provisioning tool.It is a framework that makes it easy to deploy servers and application in the cloud, on-premises (physical, virtual) or in a hybrid environment, no matter the size of the infrastructure.
You can use chef to speed up application deployment and even create a continues delivery pipeline.
Team –Version control – continuous Integration – quality gates –Approval –Production

The key to Chef’s power is that Chef’s enables you to turn infrastructure into code and serve it up quickly, Infrastructure as code means computing environment has the same attribute as application, It is version-able, testable and repeatable

**Full stack with version control & full team real-time collaboration

Chef comes in two flavors
• Opensource chef
• Enterprise chef

Opensource chef:
Is a free version of chef, and is the base for both versions of chef.

Enterprise chef:
Is payed version of chef, and it have additional feature to support enterprise requirements
• Support multi-tenency
• Role base access control of configuration resources
• Integration with AD for managing administrators identity

How Chef works?
Chef framework is a combination of a chef servers,nodes and workstations.

Chef server: the chef server manages the nodes that makeup the infrastructure.
Chef client: is a program that runs on each node, a node can be a physical server, virtual machine or laptop.
The chef server stores information’s about your nodes, current and designed configuration.It contains a set of configuration called cookbooks.
 – Cookbook Directory Structure
The chef server is the centralized store for all your infrastructure information
The chef client periodically pulls the chef server to see if there any changes to the cookbooks or to settings.
If there are, The chef server sends the latest versions to the chef clients and the chef client applies the configuration changes to the node.

Chef workstation: is where you create and modify cookbooks, cookbooks are safely stored in a source code repository.

Chef include a command-line tool called “KNIFE” that runs on workstation, “KNIFE provides an interface between a local Chef repository and the Chef Server.
KNIFE” let you manage nodes, cookbooks and recipes, Roles, ..etc

In-addition it will send updated cookbooks and settings to the chef server, and the next time chef server called it will sends the changes to the chef client.

In short chef provides you with the infrastructure automation, application automation as well, so you can deliver applications faster and safer,

To start you need a Shell then Install Chef-dk for windows and you need to know Ruby well to write Chef Cookbooks

In my next post I will start setup Chef server and will introduce Knife commands.