How to install Chef Configuration Management Server Workstation and Node

February 7, 2014

​This is a how to article on setting up Chef a configuration management system and its components (Server, Workstation, and Node) on CentOS 6.3 64-bit. Chef is a systems and cloud infrastructure automation framework that makes it easy to deploy servers and applications to any physical, virtual, or cloud location, no matter the size of the infrastructure.

The chef-client relies on abstract definitions (known as cookbooks and recipes) that are written in Ruby and are managed like source code. Each definition describes how a specific part of your infrastructure should be built and managed. The chef-client then applies those definitions to servers and applications, as specified, resulting in a fully automated infrastructure. When a new node is brought online, the only thing the chef-client needs to know is which cookbooks and recipes to apply.

Setup a Chef Server
The server acts as a hub for configuration data. The server stores cookbooks, the policies that are applied to nodes, and metadata that describes each registered node that is being managed by the chef-client. Nodes use the chef-client to ask the server for configuration details, such as recipes, templates, and file distributions. The chef-client then does as much of the configuration work as possible on the nodes themselves (and not on the server). This scalable approach distributes the configuration effort throughout the organization.

Make sure you have a fully qualified domain name as your hostname

vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=your-fqdn-hostname.com

bash-shell# hostname your-fqdn-hostname.com

Install and configure chef server

wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-server-11.0.10-1.el6.x86_64.rpm

yum install -y chef-server-11.0.10-1.el6.x86_64.rpm

chef-server-ctl reconfigure

Verify your install

Go into your browser to your Chef server https://your-fqdn-hostname.com

The default userName/password is admin/p@ssw0rd1

Make sure you change the default password after login.

Setup a Chef Workstation
The Chef workstation is where you will be doing your work prior to uploading to the Chef Server which will be used by the nodes.

Install some dependencies

Install Chef

curl -L https://www.opscode.com/chef/install.sh | bash

Verify Chef install

Clone Chef repo

bash-shell# cd ~

bash-shell# git clone git://github.com/opscode/chef-repo.git

Configure Chef

cd chef-repo/

mkdir -p ~/chef-repo/.chef

echo '.chef' >> .gitignore

echo 'export PATH="/opt/chef/embedded/bin:$PATH"' >> ~/.bash_profile && source ~/.bash_profile

cd ~/chef-repo/.chef

Copy your chef-validator.pem and admin.pem Chef server /etc/chef-server to ~/chef-repo/.chef/

chmod 600 ~/chef-repo/.chef/*.pem

Create a knife.rb configuration file

knife configure --initial

WARNING: No knife configuration file found
Where should I put the config file? ~/chef-repo/.chef/knife.rb
Please enter the chef server URL: https://us-east-chef-server-01.givit.com:443
Please enter a name for the new user: knife
Please enter the existing admin name: [admin] 
Please enter the location of the existing admin's private key: ~/chef-repo/.chef/admin.pem
Please enter the validation clientname: [chef-validator] 
Please enter the location of the validation key: ~/chef-repo/.chef/chef-validator.pem
Please enter the path to a chef repository (or leave blank): 
Creating initial API user...
Please enter a password for the new user: 
Created user[knife]
Configuration file written to ~/chef-repo/.chef/knife.rb

Verify your workstation install

knife client list
      
chef-validator

chef-webui

knife user list

admin
knife

Setup a Chef Node
A node is any physical, virtual, or cloud machine that is configured to be maintained by a chef-client.

Make sure you have a fully qualified domain name as your hostname


vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=your-fqdn-hostname.com

bash-shell# hostname your-fqdn-hostname.com

Install Chef


curl -L https://www.opscode.com/chef/install.sh | bash

mkdir /etc/chef

cd /etc/chef/

Copy your chef-validator.pem from the Chef server /etc/chef-server to /etc/chef/


bash-shell# chmod 600 /etc/chef/*.pem

Register your Chef node

chef-client -S https://your-fqdn-hostname-of-chef-server.com -K /etc/chef/chef-validator.pem

Setup your Chef client.rb file

vim client.rb

log_level        :info
  log_location     STDOUT
  chef_server_url  'https://your-fqdn-hostname-of-chef-server.com'

Verify your Chef node install

Your next step is to find and implement a recipe. Please read the next article in the series “How to install and configure Chef Cookbook: users to manage users” .

Hope this helps you get your Chef components setup for infrastructure as code fun.

Comments are closed.