Pages

Rechercher dans ce blog

Affichage des articles dont le libellé est chef. Afficher tous les articles
Affichage des articles dont le libellé est chef. Afficher tous les articles

lundi 9 septembre 2013

Intégration GitLab | Chef 11 (OSC)





Si vous avez utilisé chef, vous vous rendez bien vite compte qu'il faut un répertoire "maître" de travail, à jour et bien rangé.

Afin que tout le monde dispose de ce même dossier à jour, il convient de le stocker sur un "gestionnaire de version". Opscode nous propose Github, mais celui-ci reste payant si l'on veut des "repository" privés. La solution ?  --> GitLab.

Nous allons donc installer intégrer GitLab 6 à Chef 11 (OSC). Nous allons utiliser le moteur de BDD de Chef (PostgreSQL) et son serveur web (Nginx), tous les deux compatibles (moyennant bidouilles..) avec GitLab !!

                                     
   


Je considère que chef-server est déjà installé et configuré sur la machine.

mardi 21 mai 2013

Chef bannière SSH

Configurer une bannière SSH , CHEF

Création du cookbook :


knife cookbook create sshd_banner

Vous avez maintenant l’architecture de la recette, editez le fichier /sshd_banner/recipes/default.rb

## Cookbook Name:: banner
# Recipe:: default
#
# Copyright 2013, *****
#
# All rights reserved - Do Not Redistribute
#
template "/etc/ssh/sshd_banner" do 
 source "sshd_banner"
 mode "0644"
end

(si vous souhaitez que votre bannière soit "dynamique" rajoutez ".erb" à la fin de la source)

## Cookbook Name:: banner
# Recipe:: default
#
# Copyright 2013, *****
#
# All rights reserved - Do Not Redistribute
#
template "/etc/ssh/sshd_banner" do 
 source "sshd_banner.erb"
 mode "0644"
end

Puis créez le fichier source /sshd_banner/templates/default/sshd_banner (ou sshd_banner.erb) et créez votre bannière ssh :

*******************************************************************************
*                ACCES REGLEMENTE: Loi  88-19 du 5 janvier 1988               *
*******************************************************************************
*        Cet equipement est la propriete du groupe XXXX                       * 
*               Acces interdit a toute personne non autorisee                 *
*            This equipment is the property of XXXX                           *
*                    UNAUTHORIZED ACCESS WILL BE PROSECUTED                   *
*******************************************************************************

Un exemple de bannière "dynamique" :
*******************************************************************************
*                ACCES REGLEMENTE: Loi  88-19 du 5 janvier 1988               *
*******************************************************************************
This server is property of <%= node['company'] %>
<% if node['pci']['in_scope'] -%>
This server is in-scope for PCI Compliance
<% end -%>
*******************************************************************************

Il vous reste plus qu'à envoyer la recette sur chef-server  :

knife cookbook upload sshd_banner

et à la rajouter à votre "run_list".


mardi 7 mai 2013

Changer le répertoire d'installation des gems ruby

Le changement se fera par exemple dans votre dossier /home/

Créer un  répertoire d'installation des gems (caché ou non):

mkdir ~/.gems/bin 

Dans votre dossier personnel, créer ou modifier le fichier .gemrc et y rajouter :

gemhome: $HOME/.gems 
gempath: 
- $HOME/.gems
- /usr/lib/ruby/gems/1.8

On rajoute ensuite (histoire d'être sûr) ces variables dans notre environnement :

export GEM_HOME=$HOME/.gems
export GEM_PATH=$HOME/.gems:/usr/lib/ruby/gems/1.8/
export PATH=$PATH:$HOME/.gems/bin

On vérifie avec la commande :

gem environment

qui nous montre l 'environnement choisi :



jeudi 2 mai 2013

3 méthodes d'installation chef-client

Différentes méthodes d'installation chef-client


Les méthodes d'installation décrites ici utilisent SL6, chef 11.
Typiquement, l'installation de chef-client doit être lancée par la commande knife bootstrap  ou par l'installation de Ruby gem.
Nous allons commencer ici par l'installation par package :  

Installation par package :


Aller sur le site  d' Opscode afin de récupérer le paquet pour votre distribution :
http://www.opscode.com/chef/install/
  • La première méthode fournie utilise CURL, lancez cette commande et chef-client s'installera :
curl -L https://www.opscode.com/chef/install.sh | bash
  • La seconde méthode consiste à télécharger le .rpm et de l'installer.
(Positionnez-vous en premier dans votre répertoire de téléchargement)

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

rpm - Uvh chef-11.4.4-1.el6.x86_64.rpm

Le package installe chef dans le répertoire /opt/chef/

Installation par Ruby-gem :


On commence par ajouter le dépot RBEL6 :

sudo rpm -Uvh http://rbel.frameos.org/rbel6

Puis on installe Ruby , quelques dépendances et des outils de développement

sudo yum install ruby ruby-devel ruby-ri ruby-rdoc ruby-shadow gcc gcc-c++ automake autoconf make curl dmidecode

Enfin l'installation de rubygem 2.0.3

cd /tmp
wget http://production.cf.rubygems.org/rubygems/rubygems-2.0.3.tgz
tar zxf rubygems-2.0.3.tgz
cd rubygems-2.0.3
ruby setup.rb --no-format-executable --no-document

Il ne nous reste plus qu'à installer la gem de chef :

sudo gem install chef --no-ri --no-rdoc

et de copier les fichiers de configuration avant de lancer la commande

sudo chef-client

Installation depuis le depot git (install from head) :


Nous allons commencer par installer git :

yum install -y git

On se place dans le dossier d'installation désiré :

cd /opt/

puis on clone le repository :

git clone https://github.com/opscode/chef.git

On télécharge / installe les dépendances :

sudo yum install ruby ruby-devel ruby-ri ruby-rdoc ruby-shadow gcc gcc-c++ automake autoconf make curl dmidecode

Puis Rubygem (source) :

cd /tmp
wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.10.tgz
tar zxf rubygems-1.8.10.tgz
cd rubygems-1.8.10
sudo ruby setup.rb --no-format-executable

Et on installe quelques gems nécessaires :

gem install rspec rake cucumber jeweler gemcutter

Et enfin l'installation du client :
Retournez dans le dossier de chef (j'avais choisi /opt/chef) et lancer l'installation de la gem.

cd /opt/chef/lib/chef
rake install

Ensuite copiez les fichiers de configurations du client et lancer la commande afin de créer le client et le node :

sudo chef-client 

Copie des fichiers de configuration :


L'installation est faite, maintenant, retourner sur votre serveur-chef , placez vous dans votre répertoire favoris et lancer la commande :

knife configure client ./

Ceci fait, vous aurez 2 nouveaux fichiers : client.rb et validation.pem
Créez le dossier chef :

mkdir -p /etc/chef/

Déplacez dans ce dossier les fichiers précédemment téléchargés.

mv 'client.rb' 'validation.pem' /etc/chef/

Voilà, vous devez maintenant être capable de lancer la commande :

sudo chef-client

Celle-ci va créer un client et un node lié à ce client.

mardi 30 avril 2013

Mise en place d'un cookbook

Mise en place d'un cookbook

On y arrive enfin !

Pour faire simple, nous allons mettre en place une recette qui va installer "Tree" sur notre node.

Pour le moment, je vous conseille de regarder les nombreuses recettes "recipes" disponibles sur le site communautaire d' Opscode avant de vouloir coder la votre, mais vous en faites pas j'y reviendrai également plus tard.


Avant de vouloir créer votre recette, vérifier toujours que le site communautaire ne l'a pas déjà... ça serait bête de réinventer la roue..
 
La recette "Tree" existe sur le site.

Depuis votre "workstation" lancer la commande suivante :

knife cookbook site install tree

La recette est téléchargée mais n'est disponible pour le moment que sur votre "workstation", il nous faut donc l'envoyer au serveur :

knife cookbook upload tree

Après cette commande, vous devriez voir dans l'onglet cookbook de l'interface web, la recette "Tree".

Aller sur l'onglet node, puis glisser-déposer la recette dans la "run-list" et "save" of course..

Ensuite retournez sur la machine "client" et lancer la commande :

sudo chef-client

le résultat :
upgrade package tree from uninstalled to 1.5.3-2

Voilà votre première installation de chef est terminée.

Mise en place d'un node sous Chef 11

Mise en place d'un node sous Chef 11

 

Afin de pouvoir configurer un ordinateur, celui-ci doit faire parti d'un node.
Nous allons donc ajouter un ordinateur et créer un node. Pour se faire, nous utilisons l'outil "knife".

Sur la "workstation" précédemment configurée :
je pense que vous aurez compris que l'ip ici est celle du PC a configurer, et que les identifiants sont eux-aussi un compte valable sur cette machine.

knife bootstrap X.X.X.X -x Alexis.Autret --sudo
Bootstrapping Chef on X.X.X.X
Failed to authenticate Alexis.Autret - trying password auth
Enter your password: 
10.154.98.52 knife sudo password: 
10.154.98.52 
10.154.98.52 Starting Chef Client, version 11.4.0
10.154.98.52 Creating a new client identity for O000081287.xxxxxx using the validator key.
10.154.98.52 resolving cookbooks for run list: []
10.154.98.52 Synchronizing Cookbooks:
10.154.98.52 Compiling Cookbooks...
10.154.98.52 [2013-04-17T14:27:03+02:00] WARN: Node O000081287.xxxxxx has an empty run list.
10.154.98.52 Converging 0 resources
10.154.98.52 Chef Client finished, 0 resources updated

Et voilà, vous pouvez vérifier que l'ordinateur est bien pris en compte sur l'interface web de chef.

Mise en place d'une "workstation" Chef-server 11

Mise en place d'une "workstation" Chef 11

Mise en place d'une "workstation"

Afin de configurer le serveur il faut mettre en place une "workstation" qui permet d'utiliser l'API de chef.
Vous pouvez le faire sur le serveur ou sur votre ordinateur de travail.
C'est cette "workstation" qui permettra également de "cuisiner" vos recettes, de les envoyer sur le serveur et plus généralement de paramétrer un peu tout, mais vous comprendrez plus tard...

Commencer par télécharger chef-client pour votre distribution sur cette page :

http://www.opscode.com/chef/install/

Puis installer-le. Les fichiers iront se mettre dans le dossier /opt/chef/ .

Puis , nous allons nous créer une répertoire de travail :

mkdir -p /home/USER/chef

Faire un git-clone du dossier chef-repos (fournis par opscode) :

git clone https://github.com/opscode/chef-repo.git

Dans ce dossier, nous allons créer une dossier caché qui contiendra les clefs d'authentifications  :

mkdir ./.chef
Mettre dans ce dossier les fichiers admin.pem et chef-validator.pem qui sont situés sur le serveur dans le dossier /etc/chef-server. (Je vous laisse choisir votre méthode de transfert : scp, clef usb, mail..)

Puis dans le même dossier (.chef) nous allons créer le fichier vide knife.rb (qui contiendra la configuration)

touch knife.rb

Nous allons maintenant configurer knife.rb :

lancer la commande :

knife configure -i

Je vous mets en exemple "une" configuration :
à noter que :
- il n'est plus nécessaire de spécifier le port 4000 pour l' URL du serveur.
- le fichier "validation.pem" se nomme maintenant "chef-validator.pem".


Overwrite /tmp/chef11/chef-repo/.chef/knife.rb? (Y/N) y
Please enter the chef server URL: [http://router.linuxguy.lan:4000] https://chef11.linuxguy.lan
Please enter a name for the new user: [arun] testuser
Please enter the existing admin name: [admin] admin
Please enter the location of the existing admin's private key: [/etc/chef/admin.pem] .chef/admin.pem
Please enter the validation clientname: [chef-validator]
Please enter the location of the validation key: [/etc/chef/validation.pem] .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[testuser]
Configuration file written to /tmp/chef11/chef-repo/.chef/knife.rb

Vérification :

~/chef/chef-repo$ knife client list
chef-validator
chef-webui

Voilà, maintenant, nous allons configurer un "node".

Installation CHEF server 11 sur SL6

 Installation de Chef-server sur SL 6


Qu'est ce que chef ?

Chef sur wikipedia

Site officiel     Site communautaire

Ce qu'il faut savoir en gros :

Chef est un outil de management de configuration écris en Ruby et Erlang. Il permet de maintenir/configurer des serveurs ou des postes de travail grâce à des "recettes" (recipes) ou des "manuels de cuisine" (cookbooks) qui sont stockés sur le serveur chef.
Les recettes sont écrites en ruby ou DSL(domain specific language). Pour faciliter les évolutions, ces recettes sont généralement "versionnées" (git la plupart du temps, mais il en existe d'autres qui peuvent mieux correspondre au langage ruby (bershelf..))

Nous allons donc dans ce tutoriel installer Chef-server 11.06 sur un SL6,
La première chose à vérifier est le hostname du serveur.
hostname -f
doit retourner le FQDN de la machine exemple : chef-server.mycompany.com


Installation :

Installation par RPM :

Aller sur la page : Chef install

Aller sur l'onglet Chef-server, puis copier le lien de téléchargement.

Positionnez vous dans votre répertoire de téléchargement :
cd /usr/local/src
et télécharger le .rpm :
wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-server-11.0.6-1.el6.x86_64.rpm 
on l'installe : (les fichiers vont se placer dans /opt/chef-server)
sudo rpm -ivh chef-server-11.0.6-1.el6.x86_64.rpm
Le script d'installation nous dis que faire :
sudo chef-server-ctl reconfigure
Voilà, on a plus qu'à se connecter sur l'interface web afin de changer le mot de passe par défaut du compte admin. 
L'adresse de la page web sera le FQDN de la machine. 
http://chef-server.mycompany.com qui va nous rediriger vers https://chef-server.mycompany.com 
Accepter le certificat de sécurité et se connecter avec les identifiants par défauts. id/pass: admin/p@ssw0rd1 
Voilà, chef-server est installé
Maintenant, il ne reste plus qu'à le configurer ;-)
Fork me on GitHub