- Lab
- A Cloud Guru
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.
Path 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.rpm
Now install it:
sudo rpm -ivh chefdk-2.4.17-1.el7.x86_64.rpm
Once 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_profile
Now check to see if it worked with
which ruby
, and we should see/opt/chefdk/embedded/bin/ruby
get returned. -
Challenge
Install What docker-ce Requires on This Server
We need Docker on our workstation, so we will need to install the
yum-util
s, 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-ce
Now let's set Docker to start now, and on system boot:
sudo systemctl start docker sudo systemctl enable docker
We should also set your user to be able to use Docker without using the
sudo
command. Once we've done this, we have to log out and back in again:sudo usermod -aG docker $USER exit
Use SSH to get back in again, and check to make sure Docker is running:
docker ps
If 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 git
Configure 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 vim
Note: 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 permissive
We should also
/etc/selinux/config
and change things to permissive there too:sudo vim /etc/selinux/config
Change the
SELINUX
line fromSELINUX=enforcing
toSELINUX=permissive
-
Challenge
Examine the Three Cookbooks In the ~/chef/ Directory
la_troubleshooting
is the current broken cookbook that we need to fix.la_bad
is an exact copy ofla_troubleshooting
, in case we need to start over or refer back to it.la_good
a 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_troubleshooting
to get into the directory, then runkitchen converge
to 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.rb
The error was about the
elinks
package, but in this file, that section looks fine. The problem is earlier. there's a missing quote in the line:service 'httpd do
line. 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.rb
If 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 betweenvar
andwww
. Let's add that in, save the file, and try akitchen converge
again.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.html
page. 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://localhost
If we see
SUCCESS
, we've succeeded. -
Challenge
Clean up
Get out of the kitchen and destroy it:
exit kitchen destroy
What's a lab?
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.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.