- Lab
-
Libraries: If you want this lab, consider one of these libraries.
- Cloud
Chef - Troubleshooting
In this lab we will get familiar with Chef Troubleshooting. First, we are going to install the ChefDK tools on a server, make sure that Docker is working, and ensure that Git is installed and has some basic configuration. We will then go through troubleshooting a Chef cookbook, which will be provided. We need to figure out what it has for problems, and why it won't work. At the end of this hands-on lab, we will have a working cookbook, after we've performed tests with Docker and Kitchen.
Lab Info
Table of Contents
-
Challenge
On the Provided Server, Install Version 2.4.17 of the ChefDK Tools
We need to download the correct version of ChefDK, which is 2.4.17. In a command line, run:
wget https://packages.chef.io/files/stable/chefdk/2.4.17/el/7/chefdk-2.4.17-1.el7.x86_64.rpmNow install it:
sudo rpm -ivh chefdk-2.4.17-1.el7.x86_64.rpmOnce it's installed, we need to make sure Chef uses the correct system locations for things:
echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile source ~/.bash_profileNow check to see if it worked with
which ruby, and we should see/opt/chefdk/embedded/bin/rubyget returned. -
Challenge
Install What docker-ce Requires on This Server
We need Docker on our workstation, so we will need to install the
yum-utils, add the Docker repository, and install Docker.sudo yum -y install yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum -y install docker-ceNow let's set Docker to start now, and on system boot:
sudo systemctl start docker sudo systemctl enable dockerWe should also set your user to be able to use Docker without using the
sudocommand. Once we've done this, we have to log out and back in again:sudo usermod -aG docker $USER exitUse SSH to get back in again, and check to make sure Docker is running:
docker psIf we can do that without prefacing it with
sudo, we're ready to continue. -
Challenge
Install Git and Set Some Global Defaults for Our User, Email Address, and Editor
When we use Kitchen, later in the lab, we need Git to be installed and set up with some basic information. These commands will make that happen:
Install it:
sudo yum -y install gitConfigure some Git basics, like the username, email address, and a default text editor:
git config --global user.name "USERNAME" git config --global user.email "[email protected]" git config --global core.editor vimNote: We can use fake email information, since we don't actually use it for this lab. It just needs to be set or we will get errors later.
-
Challenge
Install the Gem Required for Using Docker with the Test Kitchen
Docker requires a gem for this all to work. Install it with this:
gem install kitchen-docker -
Challenge
Update SELinux to Be Permissive
To perform the tasks properly you should change SELinux so that it is permissive:
sudo setenforce permissiveWe should also
/etc/selinux/configand change things to permissive there too:sudo vim /etc/selinux/configChange the
SELINUXline fromSELINUX=enforcingtoSELINUX=permissive -
Challenge
Examine the Three Cookbooks In the ~/chef/ Directory
la_troubleshootingis the current broken cookbook that we need to fix.la_badis an exact copy ofla_troubleshooting, in case we need to start over or refer back to it.la_gooda working "fixed" copy that we can refer to if we're really stuck. -
Challenge
Work on the la_troubleshooting Cookbook
Let's get in and start looking around for problems and symptoms. Run
cd la_troubleshootingto get into the directory, then runkitchen convergeto watch what happens.It fails. If we scroll back up a bit into the logs, we can see a
SyntaxError, and the problem appears to be inrecipes/default.rb.Destroy the kitchen (with
kitchen destroy) and let's go have a look at our recipe:vim recipes/default.rbThe error was about the
elinkspackage, but in this file, that section looks fine. The problem is earlier. there's a missing quote in the line:service 'httpd doline. Fix that (adding a single quote after'httpd), save the file, and try anotherkitchen converge.It fails again, doesn't it? Now what's our error saying? Up in the resource declaration, we can see something's wrong with that section of the cookbook. Again, edit the file:
vim recipes/default.rbIf we look in that section, something should stand out. We've declared a path of
/varwww/html/index.html, but there's no such place. We're missing a forward slash betweenvarandwww. Let's add that in, save the file, and try akitchen convergeagain.It worked!
-
Challenge
Test Whether the Problems Are Fixed
Everything looks good, but is it really? It looks like this cookbook is supposed to set up a web server with some content in the
index.htmlpage. Does it? Log into the kitchen, and check the file itself, both by just reading it and in a (text-based) web browser:kitchen login cat /var/www/html/index.html elinks http://localhostIf we see
SUCCESS, we've succeeded. -
Challenge
Clean up
Get out of the kitchen and destroy it:
exit kitchen destroy
About the author
Real skill practice before real-world application
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Learn by doing
Engage hands-on with the tools and technologies you’re learning. You pick the skill, we provide the credentials and environment.
Follow your guide
All labs have detailed instructions and objectives, guiding you through the learning process and ensuring you understand every step.
Turn time into mastery
On average, you retain 75% more of your learning if you take time to practice. Hands-on labs set you up for success to make those skills stick.