Giter Club home page Giter Club logo

monk's Introduction

Monk

Easy To Use Chef Recipes To Automate Boring Stuff.

Setup

Install the Chef Server Ubuntu 16.04 x64

  1. Ensure that the Server is Accessible by Hostname The first task you need to perform is to ensure that the hostname of the server is a resolvable fully qualified domain name (FQDN) or IP address. You can check this by typing:
hostname -f

It should be something like the following:

sudo nano /etc/hosts
127.0.1.1 fqdn_or_IP_address host_alias
127.0.0.1 localhost
IP_address fqdn_or_IP_address host_alias
  1. Ensure that Server are up-to-date:
sudo apt-get update
  1. Download the latest Chef server core (12.17.15 at the time of writing):
wget https://packages.chef.io/files/stable/chef-server/12.17.15/ubuntu/16.04/chef-server-core_12.17.15-1_amd64.deb
  1. Install the server:
sudo dpkg -i chef-server-core_*.deb
  1. Remove the download file:
rm chef-server-core_*.deb
  1. Run the chef-server-ctl command to start the Chef server services:
sudo chef-server-ctl reconfigure

Create an Admin User and Organization

  1. We can use the user-create sub-command of the chef-server-ctl command. The command requires a number of fields to be passed and The general syntax is:
chef-server-ctl user-create USERNAME FIRST_NAME LAST_NAME EMAIL PASSWORD

For example, Let's go with the following:

sudo chef-server-ctl user-create monk john doe [email protected] password -f monk.pem
  1. You can create an organization with the org-create sub-command.
chef-server-ctl org-create SHORTNAME LONGNAME --association_user USERNAME

For example, let's go with the following:

sudo chef-server-ctl org-create clivern "Clivern.com" --association_user monk -f clivern-validator.pem

Install Management Server

In order to install the management server, Just run the following:

chef-server-ctl install chef-manage
chef-server-ctl reconfigure
chef-manage-ctl reconfigure

Configure a Chef Workstation

  1. Clone this repository.
git clone https://github.com/Clivern/Monk.git Monk
  1. Download and Install the Chef Development Kit.

  2. Create .chef directory inside Monk repository.

cd Monk
mkdir .chef
  1. Then transfer the previously created private keys on chef server to .chef directory.
cd Monk
scp root@chef_server_domain_or_ip:/root/monk.pem ./.chef
scp root@chef_server_domain_or_ip:/root/clivern-validator.pem ./.chef

Configuring Knife to Manage your Chef Environment

Now that you have your Chef keys available on your workstation, we can configure the knife to connect to and control your Chef infrastructure. This is done through a knife.rb file that we will place inside .chef directory along with our keys.

nano ./.chef/knife.rb

In this file, paste the following information:

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                "username"
client_key               "#{current_dir}/name_of_user_key"
validation_client_name   "organization_name-validator"
validation_key           "#{current_dir}/organization_key"
chef_server_url          "https://server_domain_or_IP/organizations/organization_name"
syntax_check_cache_path  "#{ENV['HOME']}/.chef/syntaxcache"
cookbook_path            ["#{current_dir}/../cookbooks"]

Which on our case should be something like the following:

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                "monk"
client_key               "#{current_dir}/monk.pem"
validation_client_name   "clivern-validator"
validation_key           "#{current_dir}/clivern-validator.pem"
chef_server_url          "https://server_domain_or_IP/organizations/clivern"
syntax_check_cache_path  "#{ENV['HOME']}/.chef/syntaxcache"
cookbook_path            ["#{current_dir}/../cookbooks"]

Now if we run knife client list, we should get clivern-validator.

Bootstrapping a New Node with Knife

In order to bootstrap a new node, you can use the following command:

knife bootstrap node_domain_or_IP [options]

In case we want to bootstrap a node with name node-01 and username is root and the private key is in .chef directory, we should run the following on our chef workstation.

knife bootstrap node_domain_or_IP -x root -A -N node-01

Once your new node is bootstrapped, you should have a new client and a new node:

$ knife client list

    clivern-validator
    node-01


$ knife node list

    node-01

Our Cookbooks

Community Cookbooks

  • Users: Manages OS users from databags.

Acknowledgements

© 2018, Clivern. Released under The Apache Software License, Version 2.0.

Monk is authored and maintained by @clivern.

monk's People

Contributors

clivern avatar

Watchers

 avatar  avatar

monk's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.