When I mention, yum cookbook, recipes, and how to use knife, what comes to mind? When first using Chef you begin to wonder what they were thinking naming their product such a common thing. Chef is a configuration management(CI) tool. CI is a methodology for programmatically managing software and hardware. There are many popular open source options including Puppet, Ansible, SaltStack, and NixOS to name a few. They differ in their language of implementation, design goals, and range of popularity.
As an overview lets say you have a database server and web app. You are looking to deploy a development instance of your web app but create it in such a way that anyone can spin up a new instance and test against your various git branches of the code base. One way to do this is with Vagrant. You could then write a bash script to provision the machine and just run the commands verbatim from the script. This is nice if you know exactly what you want to do and an expert in bash.