DevOps Classroom Series – 02/Dec/2019

Chef-Client Supermarket cookbook

  • Using this cookbook from supermarket
    • Convergence can be changed
    • Scheduled jobs can be created
    • Chef-Client log locations can be changed.

Changing default convergance of a node to 2 hours.

  • search for chef-client cookbook in Chef Supermarket. Refer Here
  • Create a cookbook called as changecovnergence.
  • Add depends 'chef-client', '~> 11.4.0' to metadata.rb
  • Execute berks install
  • create a attribute file called as default using chef generate attribute . default
  • In the attributes/default.rb add the following line
default['chef_client']['interval'] = 7200
  • In recipes/default.rb add the following line
include_recipe 'chef-client::default'
  • Now upload this cookbook to chef server using berks upload and add this recipe to run_list of any node will change convergence from 30 minutes to 2 hours.

Scenario:

  • The Servers look as shown below Preview
  • How do you design this deployment using chef
  • Create 3 cookbooks
    • Mysql
    • tomcat
    • IIS Server
  • use kitchen to verify cookbooks are working
  • upload the cookbooks to chef server
  • Ensure all the 8 servers are bootstrapped.
  • Change the run_list of each server and add the necessary recipe or recipe list

Pain points

  • Bootstrapping multiple servers
  • Changing run list of every server

Change in scenario.

  • Lets assume you are asked to install git on every node.
  • For this we need to change the run list of every node.

Lets try to minimize efforts in Changing run_lists

  • Chef has a concept called as role.

  • Role is nothing but list of recipes.

  • We create 3 roles

    • mysql-role => mysql::default
    • tomcat-role => tomcat::default
    • iis-role => iis::default
  • In all the server where i need mysql to be installed in run_list i will add mysql-role

  • In all the server where i need tomcat to be installed in run_list i will add tomcat-role

  • In all the server where i need iis to be installed in run_list i will add iis-role

  • If i need to add git to every node, there is no need to change run_list just edit the roles.

    • mysql-role => mysql::default, git::default
    • tomcat-role => tomcat::default, git::default
    • iis-role => iis::default, git::default
  • Its always a best practice to have roles like

    • db-role
    • app-role
    • web-role

By continuous learner

devops & cloud enthusiastic learner

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Please turn AdBlock off
Floating Social Media Icons by Acurax Wordpress Designers

Discover more from Direct DevOps from Quality Thought

Subscribe now to keep reading and get access to the full archive.

Continue reading

Visit Us On FacebookVisit Us On LinkedinVisit Us On Youtube