In today’s fast-paced world of technology, automation has become the key to success. Automation in the IT industry ensures a smooth and efficient workflow, leading to increased productivity and reduced costs. One such tool that has emerged as a popular choice among system administrators and developers is Chef. Chef is a powerful automation platform that helps manage complex infrastructure with ease. In this tutorial, we will guide you through the process of how to install and configure Chef on Rocky Linux.
Table of Contents
- Introduction to Chef
- Install Chef Workstation
- Install Chef Infra Server
- Configure Chef Infra Server
- Setup Chef Workstation
- Create and Configure a Chef Cookbook
How to Install and Configure Chef on Rocky Linux
Introduction to Chef
Chef is an open-source configuration management and automation tool that allows you to manage your infrastructure as code. It provides a way to define your infrastructure using Ruby-based DSL (Domain Specific Language), making it easy to manage, version, and automate your servers and applications. Chef is designed to work with various platforms, including Linux, Windows, and macOS, making it a versatile choice for managing your infrastructure.
There are three main components in Chef:
- Chef Infra Server: The central hub where all the cookbooks and configurations are stored.
- Chef Workstation: The development environment where users create and test cookbooks.
- Chef Nodes: The systems that are managed by Chef.
With these components, Chef ensures an efficient and streamlined workflow for managing your infrastructure. To learn more about Chef, visit their official documentation.
Before proceeding with the installation and configuration of Chef, ensure that you have the following:
- A fresh installation of Rocky Linux
- A user account with sudo privileges
- A stable internet connection
Install Chef Workstation on Rocky Linux
To begin, we’ll first install the Chef Workstation on our Rocky Linux system. The Chef Workstation includes all the tools required for managing your infrastructure, such as the Chef Infra Client, Knife, and other utilities.
- First, download the Chef Workstation package:
curl -O https://packages.chef.io/files/stable/chef-workstation/21.10.640/el/8/chef-workstation-21.10.640-1.el8.x86_64.rpm
- Install the package using the
sudo rpm -Uvh chef-workstation-21.10.640-1.el8.x86_64.rpm
Verify the installation by checking the Chef Workstation version:
This command should display the installed version of Chef Workstation.
Setting up a Chef Server on Rocky Linux
Next, we’ll set up a Chef Server. This server acts as a central hub for managing your infrastructure, storing cookbooks, and controlling access to your nodes.
- Sign up for a free account on Chef’s website and download the starter kit. This kit contains the necessary configuration files and RSA keys to connect to your Chef Server.
- Extract the contents of the starter kit on your workstation:
tar -xzf chef-starter.zip
Change into the
Creating and Configuring a Chef Repo on Rocky Linux
A Chef Repo is a centralized repository for storing cookbooks, recipes, and other configuration data. It serves as the basis for managing your infrastructure with Chef.
- Initialize the Chef Repo using the
This will create a
.chef directory in your home folder, containing the necessary configuration files.
knife.rb file to configure your Chef Repo:
Update the following lines with your Chef Server URL and organization name:
Save and close the file.
Working with Chef Cookbooks on Rocky Linux
Chef Cookbooks are collections of recipes, templates, and other files that define how your infrastructure should be configured.
- To create a new cookbook, run the following command:
chef generate cookbook my_cookbook
This will create a new directory called
my_cookbook in your Chef Repo.
Change into the
Now that you’re inside the
my_cookbook directory, you can start creating and configuring the necessary files for your cookbook.
Create the default recipe
Every Chef cookbook should have a default recipe, which is a Ruby script containing the desired configuration for your system. Create a new file called
default.rb inside the
default.rb file with your favorite text editor and add the following content:
package 'httpd' do action :install end service 'httpd' do action [:enable, :start] end template '/var/www/html/index.html' do source 'index.html.erb' owner 'root' group 'root' mode '0644' end
This recipe installs the Apache HTTP Server (
httpd), enables it at boot time, starts the service, and creates a new index.html file in the
/var/www/html directory using a template.
Create the template file
Now, create the template directory and the corresponding
mkdir templates touch templates/index.html.erb
index.html.erb file with your favorite text editor and add the following content:
<!DOCTYPE html> <html> <head> <title>Welcome to Chef</title> </head> <body> <h1>Hello, World!</h1> <p>This page is managed by Chef.</p> </body> </html>
This template will be used to generate the index.html file on your server.
Upload the cookbook to the Chef Server
With your cookbook ready, you can now upload it to the Chef Server. Change to the root of your Chef Repo and run the following command:
knife cookbook upload my_cookbook
Add the cookbook to the run-list of your node
To apply the cookbook to your node, you must add it to the run-list. Replace
NODE_NAME with the name of your node and run the following command:
knife node run_list add NODE_NAME 'recipe[my_cookbook]'
Run Chef Client on the node
Finally, log in to your node and execute the Chef Client to apply the cookbook:
The Chef Client will download the
my_cookbook cookbook from the Chef Server and execute the
default.rb recipe. You should now have an Apache HTTP Server installed and running on your Rocky Linux system, with a simple “Hello, World!” webpage.
Congratulations! You have successfully installed and configured Chef on Rocky Linux. If you’re looking to expand your knowledge and explore other Linux automation tools, check out our guides on Puppet, Ansible
Chef is a powerful and flexible infrastructure management platform that enables you to automate and streamline your organization’s IT infrastructure. With its comprehensive set of features, tools, and resources, Chef allows you to create a highly automated, efficient, and reliable infrastructure management system that can adapt to your organization’s growing needs and complexity.