Benoit Cattié

Créer sa propre AMI CentOS 7 HVM facilement

jeudi, novembre 6 2014, par Benoit Cattié

INTRODUCTION

Pas évident d'avoir des AMI amazon qui correspondent réellement à ce qu'on souhaite. (partitionnement, Filesystem, LVM, ...)

Ci dessous une méthode pas trop compliquée pour créer sa propre AMI configurée comme on le souhaite. Ca passe par l'installation via VNC de CentOS.

Il doit également etre possible de faire exactement la meme chose en passant un fichier kickstart à grub pour meme pas avoir besoin de faire de VNC (pas testé, mais ca ne saurait tarder :))

VNC est une option disponible pour l'install : voir doc officielle d'install RHEL 7

MODE OPERATOIRE

L'idée est donc de déployer une instance quelquonque que nous allons modifier pour faire booter sur le noyau d'install CentOS avec activation de VNC.

Je suis partit pour ma part d'une CentOS 6.5 (HVM / EBS) : RightImage_CentOS_6.5_x64_v14.1_HVM_EBS - ami-1abb616d

Cette image sera détruite durant l'installation

On récupère ensuite le kernel et initrd d'install :

  • http://mirror.centos.org/centos-7/7/os/x86_64/isolinux/vmlinuz
  • http://mirror.centos.org/centos-7/7/os/x86_64/isolinux/initrd.img

Qu'on va mettre dans /boot/centos7 de l'instance précédement crée.

On modifie ensuite la config grub (/boot/grub/grub.conf) pour y mettre :

default         0
timeout         0
hiddenmenu

title        centos 7 VNC INSTALL
root        (hd0,0)
kernel     /boot/centos7/vmlinuz inst.vnc inst.vncpassword=XXXXXXXX inst.headless ip=dhcp ksdevice=eth0
inst.repo=http://mirror.centos.org/centos-7/7/os/x86_64/ inst.lang=en_US inst.keymap=us
initrd      /boot/centos7/initrd.img

Si on souhaite utiliser un fichier kickstart (pas testé), il suffit de passer l'option inst.ks=http://chemin.du/fichier/kickstart.ks

On fera attention au security group pour laisser accessible le port 5901.

On reboot ensuite le serveur et on se connecte en VNC dessus et on fait l'install comme devant un écran.

VNC met un peu de temps avant d’être accessible

Une fois l'install terminée, il suffi de transformer l'instance en AMI et voila le tour est joué

UN PETIT MOT CENTOS 6

Il est tout à fait possible de reproduire le meme type d'install sur CentOS 6.

Le kernel et initrd à récupérer :

  • http://mirror.centos.org/centos-6/6.5/os/x86_64/isolinux/vmlinuz
  • http://mirror.centos.org/centos-6/6.5/os/x86_64/isolinux/initrd.img

Les paramètres grub sont par contre légèrement différents :

kernel         /boot/centos6/vmlinuz vnc vncpassword=XXXXXXXX headless ip=dhcp ksdevice=eth0 
method=http://mirror.centos.org/centos-6/6.5/os/x86_64/ lang=en_US keymap=us xen_blkfront.sda_is_xvda=1 
initrd         /boot/centos6/initrd.img



Ressources :

  • RHEL 7 Anaconda Boot Options
  • RHEL 6 Anaconda Boot Options
  • http://blog.mapstrata.com/aws-custom-centos-image/
  • http://www.andrewklau.com/roll-your-own-centos-6-5-hvm-ami-in-less-than-15-minutes/
  • http://www.sentris.net/billing/knowledgebase/25/How-to-re-install-Centos-yourself-remotely.html


Catégorie: Amazon | aucun commentaire | aucun rétrolien

Dégooglisons Internet

lundi, octobre 20 2014, par Benoit Cattié

Je suis tombé la dessus ya pas peu.

Une initiative de Framasoft : Dégooglisons Internet

Le principe est de proposer des services équivalent et alternatifs à ceux que propose Google (et autre). Je cite :

Une initiative du réseau Framasoft en faveur d'un internet libre, décentralisé, éthique et solidaire.

En autre on retrouve :

Initiative sympa à souligner, je partage donc

| aucun commentaire | aucun rétrolien

Puppet : Module of the week : BenoitCattie/nginx - trop la classe :)

samedi, novembre 10 2012, par Benoit Cattié

Juste parce que ca fait toujours plaisir, mon module nginx pour puppet a été sélectionné sur le blog de puppet dans la catégorie Module of the week.

Cette catégorie reviens sur un module présent dans la forge puppet pour expliquer son fonctionnement et aussi donner quelques conseil d'utilisation et d'amélioration.

L'article en question : module-of-the-week-benoitcattienginx-basic-nginx-configuration

Et la conclusion qui fait plaisir :

  "Overall I would say this is a pretty good module."

Bon ok j'enlève les points qu'il faut que j'améliore, mais dès que j'ai un peu de temps je lui redonne une jeunesse :) : A savoir :

  • Update the module documentation to include supported platforms.
  • Use a Modulefile so that the module tool works
  • Follow the Puppet Labs style guide

Plus quelques commentaires/remarques sur le blog ou sur le GitHub :

  • Passer aux classes paramétrées plutôt que d'utiliser des variables "top-scope"
  • Changer la condition de génération automatique des certificats SSL autosignés (pour permettre le "listen => '443 default_server',")

Ressources :


Catégorie: puppet | aucun commentaire | aucun rétrolien

OpenSuse Build Service (OBS) : système de packaging multi distributions

mardi, novembre 1 2011, par Benoit Cattié

PRESENTATION

Open Build Service (plus communément appelé OpenSuse Build Service) est un système de création de paquet multi distributions et multi architectures. Il permet notamment de créer des paquets pour les distributions suivantes : openSUSE, Red Hat, Mandriva, Ubuntu, Fedora et Debian pour les architecture 32 et 64 bits.

C'est à ma connaissance le seul système multi distributions (commentaires bienvenus si ce n'est pas le cas :)), les "concurants" tels que pbuilder et mock se limitent à leur distribution propre (debian et fedora respectivement).

Disponible en version en ligne à l'adresse http://build.opensuse.org/, il est aussi proposé en "appliance" afin de disposer de sa plateforme "privée" de construction de paquets.

Je vais tout d'abord tester la version en ligne. Après la création d'un compte, je créé mon 1er paquet... Rien de bien original : je vais créer un paquet "hello-world" ! Le but de ce test est de construire le paquet pour un certains nombre de distributions (Debian 5 et 6, Ubuntu 11.4 et 11.10, RHEL 5 et 6, Fedora 14 et 15 ainsi que openSuse). Le tout bien sur pour des architecture 32 et 64 bits.

Je crée donc mon projet sur OBS ainsi que mon package hello-world. Je choisi aussi les distributions cibles pour lesquelles je veux créer le paquets (ça se passe dans l'onglet 'Repositories').

Je ne reviens pas sur la création de hello-world.c ni du Makefile. Par contre je vais détailler les fichiers nécessaires à la création du paquets rpm et deb.

RPM

Pour la création du paquet RPM, un seul fichier est nécessaire : hello-world.spec. N'étant pas trop spécialiste de la création des RPM, je me suis grandement inspiré d'un fichier trouvé sur le net.

Name:           hello-world
Version:        0.0.1
Release:        1
License:        GPL
Summary:        This is a hello world application
Url:            http://benoit.cattie.net
Group:          misc
Source:        %{name}-%{version}.tar.gz
BuildRoot:      %{_tmppath}/%{name}-%{version}-root

%description
Authors
--------------------------
    Benoit Cattié <x>

%prep
%setup -q -n %{name}-0.0.1

%build
make

%install
mkdir -p $RPM_BUILD_ROOT/%{_bindir}
make install DESTDIR=$RPM_BUILD_ROOT/%{_bindir}

%clean
make clean

%files
%defattr(-,root,root,-)
%{_bindir}/hello-world

%changelog
* Mon Oct 31 2011 - Benoit Cattié <x>
- 0.0.1 : First release



DEB

Pour la création du paquet DEB, il est nécessaire de créer plusieurs fichiers :

  • debian.control
  • debian.rules
  • debian.changelog
  • hello-world.dsc

On peux se reporter à la page consacrée à la création des paquets debian sur OSB. A noter la partie "An Alternative method of creating a Debian package" qu'on essayera de tester par la suite avec un paquet un peu plus complexe.

Je vais détailler ci dessous le contenu des 4 fichiers ci dessus. On peux de toute façon voir les sources de tout ces fichiers depuis OBS.

Fichier debian.control :

Source: hello-world
Section: misc
Priority: optional
Maintainer: Benoit Cattié <x>
Build-Depends: debhelper (>= 4.1.16)

Package: hello-world
Architecture: any
Depends: ${shlibs:Depends}
Description: This is a hello world application

Fichier debian.rules :

A noter dans ce fichier que la racine du chroot pour construire le paquet est : /usr/src/packages/BUILD/debian/

Pour notre paquet il faudra donc placer le binaire à l'endroit suivant :

/usr/src/packages/BUILD/debian/hello-world/usr/bin/

et donc donner comme DESTDIR :

make install DESTDIR=/usr/src/packages/BUILD/debian/hello-world/usr/bin/
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# This is the debhelper compatibility version to use.
export DH_COMPAT=4

CFLAGS = -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif

build: build-stamp
build-stamp:
        dh_testdir
        make all
        touch build-stamp

clean:
        dh_testdir
        dh_testroot
        rm -f build-stamp
        make clean || true
        dh_clean

install: build
        dh_testdir
        dh_testroot
        dh_clean -k
        dh_installdirs
        # The DESTDIR Has To Be Exactly  /usr/src/packages/BUILD/debian/<nameOfPackage>
        make install DESTDIR=/usr/src/packages/BUILD/debian/hello-world/usr/bin/

# Build architecture-independent files here.
binary-indep: build install
        # We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
        dh_testdir
        dh_testroot
#       dh_installdebconf
        dh_installdocs
        dh_installexamples
        dh_installmenu
#       dh_installlogrotate
#       dh_installemacsen
#       dh_installpam
#       dh_installmime
#       dh_installinit
        dh_installcron
        dh_installman
        dh_installinfo
#       dh_undocumented
        dh_installchangelogs
        dh_link
        dh_strip
        dh_compress
        dh_fixperms
#       dh_makeshlibs
        dh_installdeb
#       dh_perl
        dh_shlibdeps
        dh_gencontrol
        dh_md5sums
        dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install

Fichier debian.changelog :

hello-world (0.0.1) stable; urgency=low

  * Initial Release

 -- Benoit Cattié <x>  Mon, 31 Oct 2011 17:50:38 +0100

Fichier hello-world.dsc :

Format: 1.0
Source: hello-world
Version: 0.0.1
Binary: hello-world
Maintainer: Benoit Cattié <x>
Architecture: any
Build-Depends: debhelper (>= 4.1.16)
Files:
 f7874571b9039b720953e92c370b4df1 352 hello-world-0.0.1.tar.gz

Une fois ces fichiers mis dans les sources du paquet sur OBS avec le tar.gz des sources du programme hello-world, OBS lance la construction des paquets sur les architectures/distributions cible. On peux suivre le status de la construction des paquets ainsi que les éventuelles erreurs rencontrées lors de la création du paquet.



INSTALLATION

Une fois les paquets créés, on peux les installer directement via notre gestionnaire de paquets préféré :

echo 'deb http://download.opensuse.org/repositories/home:benoitc/Debian_6.0/ /' >> /etc/apt/sources.list
apt-get update
apt-get install hello-world

ou pour RHEL (pas pu tester car pas de RHEL sous la malin :)) :

cd /etc/yum/repos.d/
wget http://download.opensuse.org/repositories/home:benoitc/RedHat_RHEL-5/home:benoitc.repo
yum install hello-world


Catégorie: GNU/Linux | aucun commentaire | aucun rétrolien

Puppet : Syntax highlighting avec vim

dimanche, octobre 16 2011, par Benoit Cattié

Pour mettre en place la coloration syntaxique avec vim, récupérer les fichiers depuis le compte GitHub de Puppet Labs

Puis les placer dans ~/.vim ou /etc/vim.

Et voila de belle coloration syntaxique.

A noter que les paquets vim-puppet fournis dans debian/ubuntu (et peut-être sur d'autres distro) n'intègre pas les dernières fonctionnalités ajoutée à puppet. Ces dernier sont basé sur http://www.vim.org/scripts/script.p...


Catégorie: puppet | aucun commentaire | aucun rétrolien

Puppet : Installation de la version SUN de java (sun-java6-jre) via puppet sous Ubuntu

lundi, octobre 10 2011, par Benoit Cattié

Un petit billet pour détailler l'installation de la version SUN de java.

2 problématiques quant à l'installation de la version officielle (SUN) de java :

  • tout d'abord il faut ajouter le dépôt dans apt
  • ensuite il faut accepter la licence

Pour ce dernier point, on va utiliser "set-selections" de debconf avec un fichier preseed, ce qui permettra d'accepter automatiquement la licence et donc l'install java via puppet.

Voici un petit exemple de classe qui permet d'installer le tout :

class java::install {

        file{"/etc/apt/sources.list.d/java.list":
                ensure => present,
                mode => 644,
                content => "deb http://archive.canonical.com/ lucid partner",
                notify => Exec ["apt-get update"],
        }

        file { "/var/cache/debconf/jre6.seeds":
                source => "puppet:///java/jre6.seeds",
                ensure => present;
        }

        exec{"apt-get update":
                refreshonly => true,
        }

        package {"sun-java6-jre" :
                ensure => latest,
                responsefile => "/var/cache/debconf/jre6.seeds",
                require => [Exec["apt-get update"],File["/var/cache/debconf/jre6.seeds"]]
        }

}

Le fichier jre6.seeds contient les lignes suivantes :

sun-java6-bin   shared/accepted-sun-dlj-v1-1    boolean true
sun-java6-jdk   shared/accepted-sun-dlj-v1-1    boolean true
sun-java6-jre   shared/accepted-sun-dlj-v1-1    boolean true


Catégorie: puppet | aucun commentaire | aucun rétrolien

RedHat rachète Gluster Inc

Un petit article pour annoncer le rachat de Gluster Inc par Redhat.

L'accord a été signé le 4 octobre.

Redhat explique le rachat de Gluster afin de renforcer sa stratégie de développement du cloud computing.

Quelques liens :

Le communiqué de presse : http://www.redhat.com/promo/storage...

Quelques questions/réponses de RedHat : http://www.redhat.com/promo/storage...

L'article sur le blog de Brian Stevens : http://www.redhat.com/promo/storage...


Catégorie: Distributed FileSystem | aucun commentaire | aucun rétrolien

Dépot puppet des configs de wikimedia

mardi, octobre 4 2011, par Benoit Cattié

Wikimedia a rendu public les configs puppet utilisées pour leur serveurs.

Très gentil de leur part et très intéressant.

On peux voir les information sur leur blog

Le dépot git en question :

git clone https://gerrit.wikimedia.org/r/p/operations/puppet

Ou pour la version gitweb : https://gerrit.wikimedia.org/r/gitweb?p=operations%2Fpuppet.git

Merci à eux de partager ca !


Catégorie: puppet | aucun commentaire | aucun rétrolien

GlusterFS : Striped Volumes

vendredi, septembre 9 2011, par Benoit Cattié

Un petit chapitre consacré aux 'Striped Volumes'.

Nous disposons de 4 serveurs gluster. Dans le mode 'striped volume', nous devons créer un nombre de srtipe égal aux nombres de briques du gluster (a savoir 4 dans notre cas)

Création du volume :

gluster volume create striped-volume stripe 4 \
server-01:/home/glusterfs-SV \
server-02:/home/glusterfs-SV \
server-03:/home/glusterfs-SV \
server-04:/home/glusterfs-SV

Creation of volume striped-volume has been successful. Please start the volume to access data.

Status du volume :

# gluster volume info
Volume Name: striped-volume
Type: Stripe
Status: Created
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server-01:/home/glusterfs-SV
Brick2: server-02:/home/glusterfs-SV
Brick3: server-03:/home/glusterfs-SV
Brick4: server-04:/home/glusterfs-SV

On lance le volume

# gluster volume start striped-volume
Starting volume striped-volume has been successful

On monte le volume :

mount -t glusterfs server-01:/striped-volume /mnt/gluster-SV/

Un test rapide :

for i in `seq 1 20`;do dd if=/dev/zero of=/mnt/gluster-SV/test$i bs=1M count=10; done

Alors la petite surprise, un "ls" sur chaque brique du gluster montre des fichiers de 10M sur chaque noeud. Apparemment cela viens du comportement du "ls" qui ne se base pas sur la taille du fichier mais de l offset du dernier bytes. En utilisant 'du', la par contre on a bien le comportement désiré : a savoir le fichier découpé sur toutes les briques du gluster. C'est d'ailleurs indiqué dans la FAQ

server-03:~# du -h /home/glusterfs-SV/*
2.6M	/home/glusterfs-SV/test1
2.6M	/home/glusterfs-SV/test10
2.6M	/home/glusterfs-SV/test11
2.6M	/home/glusterfs-SV/test12
2.6M	/home/glusterfs-SV/test13
2.6M	/home/glusterfs-SV/test14
2.6M	/home/glusterfs-SV/test15
2.6M	/home/glusterfs-SV/test16
2.6M	/home/glusterfs-SV/test17
2.6M	/home/glusterfs-SV/test18
2.6M	/home/glusterfs-SV/test19
2.6M	/home/glusterfs-SV/test2
2.6M	/home/glusterfs-SV/test20
2.6M	/home/glusterfs-SV/test3
2.6M	/home/glusterfs-SV/test4
2.6M	/home/glusterfs-SV/test5
2.6M	/home/glusterfs-SV/test6
2.6M	/home/glusterfs-SV/test7
2.6M	/home/glusterfs-SV/test8
2.6M	/home/glusterfs-SV/test9

Lorsqu'on accède à un fichier on viens bien du coup que toutes les briques du gluster sont sollicitées :

16:58:22.416984 IP server-02.24010 > client-01.1013:
16:58:22.416986 IP server-02.24010 > client-01.1013: 
16:58:22.416989 IP server-02.24010 > client-01.1013: 

16:58:22.363600 IP server-03.24010 > client-01.1012:
16:58:22.363603 IP server-03.24010 > client-01.1012:
16:58:22.363605 IP server-03.24010 > client-01.1012:

Du coup cassons une brique voir ce qu'il se passe :

client-01:~# cat /mnt/gluster-SV/test16
cat: /mnt/gluster-SV/test16: Transport endpoint is not connected

client-01:~# dd if=/dev/zero of=/mnt/gluster-SV/test777 bs=1M count=100
dd: opening `/mnt/gluster-SV/test777': Input/output error

Plus aucun fichier n'est accessible ... et impossible de créer le moindre fichier.

Après relance de la brique HS (et un petit laps de temps), tout refonctionne comme avant

Essayons maintenant de rajouter une brique au volume. Sur un striped volume, on ne peux rajouter qu'un multiple du nombre de stripe (4 dans notre cas). Idem pour les replicated volume.

Du coup on va rajouter 4 briques à notre volume :

server-01:~# gluster volume add-brick striped-volume \
server-01:/home/glusterfs-SV2 \
server-02:/home/glusterfs-SV2 \
server-03:/home/glusterfs-SV2 \
server-04:/home/glusterfs-SV2
# gluster volume info

Volume Name: striped-volume
Type: Distributed-Stripe
Status: Started
Number of Bricks: 2 x 4 = 8
Transport-type: tcp
Bricks:
Brick1: server-01:/home/glusterfs-SV
Brick2: server-02:/home/glusterfs-SV
Brick3: server-03:/home/glusterfs-SV
Brick4: server-04:/home/glusterfs-SV
Brick5: server-01:/home/glusterfs-SV2
Brick6: server-02:/home/glusterfs-SV2
Brick7: server-03:/home/glusterfs-SV2
Brick8: server-04:/home/glusterfs-SV2

On passe du coup en "Distributed-Stripe". Pas moyen a priori d'augmenter uniquement le nombre de stripe en rajoutant une brique.

Si on recrée des fichiers, ils sont distribués entre les 2 groupes de stripes :

client-01:~# for i in `seq 1 10`;do dd if=/dev/zero of=/mnt/gluster-SV/test3$i bs=1M count=10; done

server-01:~# du -h /home/glusterfs-SV2/*
2.6M	/home/glusterfs-SV2/test33
2.6M	/home/glusterfs-SV2/test34
2.6M	/home/glusterfs-SV2/test35
2.6M	/home/glusterfs-SV2/test38
2.6M	/home/glusterfs-SV2/test39

server-01:~# du -h /home/glusterfs-SV/*
2.6M	/home/glusterfs-SV/test1
2.6M	/home/glusterfs-SV/test10
2.6M	/home/glusterfs-SV/test11
2.6M	/home/glusterfs-SV/test12
2.6M	/home/glusterfs-SV/test13
2.6M	/home/glusterfs-SV/test14
2.6M	/home/glusterfs-SV/test15
2.6M	/home/glusterfs-SV/test16
2.6M	/home/glusterfs-SV/test17
2.6M	/home/glusterfs-SV/test18
2.6M	/home/glusterfs-SV/test19
2.6M	/home/glusterfs-SV/test2
2.6M	/home/glusterfs-SV/test20
2.6M	/home/glusterfs-SV/test3
2.6M	/home/glusterfs-SV/test31
2.6M	/home/glusterfs-SV/test310
2.6M	/home/glusterfs-SV/test32
2.6M	/home/glusterfs-SV/test36
2.6M	/home/glusterfs-SV/test37
2.6M	/home/glusterfs-SV/test4
2.6M	/home/glusterfs-SV/test5
2.6M	/home/glusterfs-SV/test6
2.6M	/home/glusterfs-SV/test7
2.6M	/home/glusterfs-SV/test8
2.6M	/home/glusterfs-SV/test9

Tant qu'on est dans l'ajout de brique testons les commandes de rebalancing

server-01:~# gluster volume rebalance striped-volume start
starting rebalance on volume striped-volume has been successful

server-01:~# gluster volume rebalance striped-volume status
rebalance step 2: data migration in progress : rebalanced 2 files of size 20971520 (total files scanned 12)

server-01:~# gluster volume rebalance striped-volume status
rebalance completed: rebalanced 9 files of size 94371840 (total files scanned 41)

Ce qui donne du coup

server-01:~# du -h /home/glusterfs-SV/*
2.6M	/home/glusterfs-SV/test1
2.6M	/home/glusterfs-SV/test13
2.6M	/home/glusterfs-SV/test15
2.6M	/home/glusterfs-SV/test16
2.6M	/home/glusterfs-SV/test19
2.6M	/home/glusterfs-SV/test2
2.6M	/home/glusterfs-SV/test31
2.6M	/home/glusterfs-SV/test310
2.6M	/home/glusterfs-SV/test32
2.6M	/home/glusterfs-SV/test36
2.6M	/home/glusterfs-SV/test37
2.6M	/home/glusterfs-SV/test4
2.6M	/home/glusterfs-SV/test5
2.6M	/home/glusterfs-SV/test7
2.6M	/home/glusterfs-SV/test8
2.6M	/home/glusterfs-SV/test9

root@server-01:~# du -h /home/glusterfs-SV2/*
2.6M	/home/glusterfs-SV2/test10
2.6M	/home/glusterfs-SV2/test11
2.6M	/home/glusterfs-SV2/test12
2.6M	/home/glusterfs-SV2/test14
4.0K	/home/glusterfs-SV2/test15
2.6M	/home/glusterfs-SV2/test17
2.6M	/home/glusterfs-SV2/test18
2.6M	/home/glusterfs-SV2/test20
2.6M	/home/glusterfs-SV2/test3
2.6M	/home/glusterfs-SV2/test33
2.6M	/home/glusterfs-SV2/test34
2.6M	/home/glusterfs-SV2/test35
2.6M	/home/glusterfs-SV2/test38
2.6M	/home/glusterfs-SV2/test39
2.6M	/home/glusterfs-SV2/test6
4.0K	/home/glusterfs-SV2/test7

Par contre coté client, on voit apparaitre des fichiers un peu étranges :

-rw-r--r-- 1 root root 10485760 2011-09-01 12:24 test15
-rw-r--r-- 1 root root 10485760 2011-09-02 13:50 .test15.gfs10485760

-rw-r--r-- 1 root root 10485760 2011-09-01 12:23 test7
-rw-r--r-- 1 root root 10485760 2011-09-02 13:49 .test7.gfs10485760

La FAQ indique qu'il s'agit de fichier temporaire crées lors du rebalancing lorsque ces fichiers sont utilisés et qu'on peu les effacés si le fichier original est correct ... Plutôt étrange.


Catégorie: Distributed FileSystem | aucun commentaire | aucun rétrolien

GlusterFS : Replicated Volumes

mercredi, août 31 2011, par Benoit Cattié

Un petit chapitre consacré aux 'Replicated Volumes'.

Nous disposons de 4 serveurs gluster. Dans le mode 'replicated volume', nous devons créer un nombre de réplicats égal aux nombres de briques du gluster (a savoir 4 dans notre cas)

Création du volume :

gluster volume create replicated-volume replica 4 \
server-01:/home/glusterfs-RV \
server-02:/home/glusterfs-RV \
server-03:/home/glusterfs-RV \
server-04:/home/glusterfs-RV

Creation of volume replicated-volume has been successful. Please start the volume to access data.

Status du volume :

# gluster volume info

Volume Name: replicated-volume
Type: Replicate
Status: Created
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server-01:/home/glusterfs-RV
Brick2: server-02:/home/glusterfs-RV
Brick3: server-03:/home/glusterfs-RV
Brick4: server-04:/home/glusterfs-RV

On lance le volume

# gluster volume start replicated-volume
Starting volume replicated-volume has been successful

On monte le volume :

mount -t nfs server-01:/replicated-volume /mnt/gluster-RV/

Un test rapide :

for i in `seq 1 20`;do dd if=/dev/zero of=/mnt/gluster-RV/test$i bs=1M count=10; done

Ce qui donne sur le montage NFS :

client-01:~# ll /mnt/gluster-RV/
total 204888
drwxr-xr-x 2 root root     4096 2011-08-31 12:48 ./
drwxr-xr-x 3 root root     4096 2011-08-31 12:26 ../
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test1
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test10
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test11
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test12
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test13
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test14
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test15
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test16
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test17
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test18
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test19
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test2
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test20
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test3
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test4
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test5
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test6
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test7
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test8
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test9

Les fichiers sont bien répliqués sur chaque brique du gluster :

server-01:~# ll /home/glusterfs-RV/
total 204888
drwxr-xr-x 2 root root     4096 2011-08-31 12:48 ./
drwxr-xr-x 4 root root     4096 2011-08-31 12:19 ../
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test1
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test10
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test11
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test12
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test13
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test14
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test15
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test16
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test17
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test18
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test19
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test2
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test20
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test3
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test4
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test5
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test6
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test7
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test8
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test9

server-02:~# ll /home/glusterfs-RV/
total 204888
drwxr-xr-x 2 root root     4096 2011-08-31 12:48 ./
drwxr-xr-x 4 root root     4096 2011-08-31 12:19 ../
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test1
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test10
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test11
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test12
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test13
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test14
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test15
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test16
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test17
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test18
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test19
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test2
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test20
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test3
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test4
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test5
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test6
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test7
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test8
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test9

[...]

On casse une brique du gluster (kill -9)

server-01:~# gluster peer status
Number of Peers: 3

Hostname: server-03
Uuid: 3cbd07b9-65ff-4ea6-a55e-afae48d7dad5
State: Peer in Cluster (Connected)

Hostname: server-04
Uuid: 7c17079e-a75c-4618-8237-5a7256c3cc2d
State: Peer in Cluster (Connected)

Hostname: server-02
Uuid: 48e33e29-67b5-4613-9cba-e32155a92900
State: Peer in Cluster (Disconnected)

Sur le client tout les fichiers sont bien présent :

client-01:~# ll /mnt/gluster-RV/
total 204888
drwxr-xr-x 2 root root     4096 2011-08-31 12:48 ./
drwxr-xr-x 3 root root     4096 2011-08-31 12:26 ../
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test1
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test10
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test11
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test12
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test13
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test14
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test15
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test16
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test17
-rw-r--r-- 1 root root 10485760 2011-08-31 12:47 test18
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test19
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test2
-rw-r--r-- 1 root root 10485760 2011-08-31 12:48 test20
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test3
-rw-r--r-- 1 root root 10485760 2011-08-31 12:45 test4
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test5
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test6
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test7
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test8
-rw-r--r-- 1 root root 10485760 2011-08-31 12:46 test9

Créons des fichiers avec une brique HS :

client-01:~# for i in `seq 1 10`;do dd if=/dev/zero of=/mnt/gluster-RV/test2$i bs=1M count=10; done

La création de fichiers se passe bien. On relance la brique HS.

Les fichiers se répliquent sur la brique HS une fois qu'ils sont accédés depuis le client.

server-03:~# ll /home/glusterfs-RV/
-rw-r--r-- 1 root root        0 2011-08-31 12:54 test21
-rw-r--r-- 1 root root        0 2011-08-31 12:55 test210
-rw-r--r-- 1 root root        0 2011-08-31 12:54 test22

client-01:~# cat /mnt/gluster-RV/test210 > /dev/null

server-03:~# ll /home/glusterfs-RV/
-rw-r--r-- 1 root root        0 2011-08-31 12:54 test21
-rw-r--r-- 1 root root 10485760 2011-08-31 12:55 test210
-rw-r--r-- 1 root root        0 2011-08-31 12:54 test22


Catégorie: Distributed FileSystem | aucun commentaire | aucun rétrolien

GlusterFS : Distributed Volumes

samedi, août 27 2011, par Benoit Cattié

Un petit chapitre consacré aux 'Distributed Volumes'

Création du volume

gluster volume create distributed-volume server-05:/home/glusterfs-DV \
server-10:/home/glusterfs-DV \
server-11:/home/glusterfs-DV \
server-12:/home/glusterfs-DV

On regarde le status du volume :

gluster volume info

Volume Name: distributed-volume
Type: Distribute
Status: Created
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server-05:/home/glusterfs-DV
Brick2: server-10:/home/glusterfs-DV
Brick3: server-11:/home/glusterfs-DV
Brick4: server-12:/home/glusterfs-DV

On lance le volume :

gluster volume start distributed-volume

On monte le volume :

mount -t nfs server-11:/distributed-volume /mnt/gluster-DV/

Un test rapide :

for i in `seq 1 20`;do dd if=/dev/zero of=/mnt/gluster-DV/test$i bs=1M count=10; done

Ce qui donne sur le montage NFS :

ll /mnt/gluster-DV/
total 204800
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test1
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test10
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test11
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test12
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test13
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test14
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test15
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test16
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test17
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test18
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test19
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test2
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test20
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test3
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test4
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test5
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test6
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test7
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test8
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test9

On voit bien que les fichiers sont répartis sur chaque briques du volume :

server-12:~# ll /home/glusterfs-DV
total 71680
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test10
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test11
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test12
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test15
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test20
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test3
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test7

server-05:~# ll /home/glusterfs-DV
total 40960
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test1
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test2
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test5
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test9

server-10:~# ll /home/glusterfs-DV
total 51200
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test13
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test16
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test19
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test4
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test8

server-11:~# ll /home/glusterfs-DV
total 40960
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test14
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test17
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test18
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test6

Passons aux choses un peu plus fun.

demon glusterd crashé (simulé par un kill -9)

server-05:~# gluster peer status
Number of Peers: 3

Hostname: server-10
Uuid: c6f1e99f-e048-45ab-a682-5e2ca91733ef
State: Peer in Cluster (Disconnected)

Hostname: server-11
Uuid: a166c2f3-30e2-43fb-80fd-8f01c3f9842e
State: Peer in Cluster (Connected)

Hostname: server-12
Uuid: 67976b5a-54df-4184-b305-1a4a50f9474e
State: Peer in Cluster (Connected)

Ce qui se traduit sur le volume par l'impossibilité d'accéder à certains fichiers (ceux hébergés sur le nœud crashé) :

server-09:~# ll /mnt/gluster-DV/
total 153600
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test1
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test10
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test11
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test12
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test14
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test15
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test17
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test18
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test2
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test20
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test3
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test5
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test6
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test7
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test9

On relance le démon :

/etc/init.d/glusterd start
server-05:~# gluster peer status
Number of Peers: 3

Hostname: server-10
Uuid: c6f1e99f-e048-45ab-a682-5e2ca91733ef
State: Peer in Cluster (Connected)

Hostname: server-11
Uuid: a166c2f3-30e2-43fb-80fd-8f01c3f9842e
State: Peer in Cluster (Connected)

Hostname: server-12
Uuid: 67976b5a-54df-4184-b305-1a4a50f9474e
State: Peer in Cluster (Connected)

Les fichiers sont de nouveaux disponibles :

server-09:~# ll /mnt/gluster-DV/
total 204800
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test1
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test10
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test11
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test12
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test13
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test14
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test15
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test16
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test17
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test18
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test19
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test2
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test20
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test3
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test4
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test5
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test6
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test7
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test8
-rw-r--r-- 1 root root 10485760 2011-08-23 15:21 test9

Testons maintenant la création de fichiers lorsqu'une brique du volume est HS

for i in `seq 1 20`;do dd if=/dev/zero of=/mnt/gluster-DV/test2$i bs=1M count=10; done
10485760 octets (10 MB) copiés, 0,261619 s, 40,1 MB/s
[...]
dd: ouverture de `/mnt/gluster-DV/test26': Erreur d'entrée/sortie
[...]
dd: ouverture de `/mnt/gluster-DV/test213': Erreur d'entrée/sortie
dd: ouverture de `/mnt/gluster-DV/test214': Erreur d'entrée/sortie

C'est plutôt moche .... a voir si avec le client natif (FUSE) ca marche mieux. On verra ca par la suite.

Autre soucis, pour monter le volume via NFS, on mount sur une adresse IP unique (celle d'un des serveurs du gluster). En cas de crash de ce serveur, l'accès aux données est impossible. Il doit être possible via une VIP de contourner ce probleme. L'utilisation du client natif gluster permet aussi de s'affranchir de ce problème.

Testons donc le client natif glusterfs.

Pour monter le volume :

mount -t glusterfs server-11:/distributed-volume /mnt/gluster-DV/

# mount
server-11:/distributed-volume on /mnt/gluster-DV type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)

Première constatation, ca a l'air beaucoup plus rapide que le NFS.

La même problématique apparait lorsque qu'un serveur du gluster crash, la création de fichier sur le volume échoue pour certains fichiers

Noeud final de transport n'est pas connecté

Par contre lorsque le serveur sur lequel le montage a été fait crash, l'accès aux données fonctionne toujours. C'est d'ailleur mentionné dans la doc :

Note: The server specified in the mount command is only used to fetch the gluster configuration
volfile describing the volume name. Subsequently, the client will communicate directly with the
servers mentioned in the volfile (which might not even include the one used for mount).

Par contre les fichiers présent sur ce serveurs sont du coup inaccessible sur le montage.


Catégorie: Distributed FileSystem | aucun commentaire | aucun rétrolien

GlusterFS : Présentation

mardi, août 23 2011, par Benoit Cattié

GlusterFS est un système de fichier distribué POSIX.

Actuellement la version stable est la 3.2 (3.3 en beta).

Il se découpe 2 parties:

  • le démon glusterd pour gérer les volumes distribués
  • le client gluster pour accéder aux volumes.

L'accès aux volumes peut se faire de 2 manières : soit avec l'utilisation du client gluster (basé sur FUSE et donc en user-space). Cette méthode est actuellement la méthode recommandée par gluster.

Depuis la version 3.1 l'accès aux volumes peux aussi se faire en NFS en se passant donc du client FUSE.

Une fonctionnalité de "geo-replication" a été intégrée depuis la version 3.2. Elle permet de répliquer un volume glusterFS afin d'en assurer une redondance. Cette géo-réplication est continue et asynchrone. Elle fonctionne sur le principe master/slave.

Autres nouveautés de la version 3.2, l'amélioration des outils de monitoring des volumes. (GlusterFS Volume Top / GlusterFS Volume Profile) ainsi que la gestion des quotas et des ACL.

glusterfs implémente 5 types de volumes avec des caractéristiques différentes :

Distributed Volumes

Les fichiers sont distribués sur chacune des briques du volumes. 
Ce type de volume permet d'étendre la capacité de stockage mais n'assure aucune redondance. 
Si une brique est HS, les fichiers hébergés sur cette briques sont indisponible.

Replicated Volumes

Les fichiers sont répliqués sur chaque briques du volume. 
Ce type de volume permet d'assurer une redondance des données, mais l'ajout d'une brique n'augmente pas la taille du volume
Elle permet juste d'ajouter une redondance supplémentaire.

Striped Volumes

Les fichiers sont découpés et répartis sur chaque briques du volumes.
Ce type de volume est très proche d'un RAID 0
Les données sont réparties sur les volumes assurant ainsi de bonnes performances. 
La perte d'une brique rend inaccessible l'intégralité des fichiers du volume

Distributed Striped Volumes

Très similaire aux Striped Volumes, hormis que les stripes ne sont pas répartis sur toutes les briques des volumes.
On peux avoir 6 briques dans le volume en découpant uniquement les fichiers sur 2 briques.

Distributed Replicated Volumes

Meme logique que les Distributed Striped Volumes : on réplique le fichier _x_ fois sur un ensemble de _y_ volumes.
Ce type de volume permet d'étendre la capacité de stockage tout en assurant une redondance des données.

Quelques liens :


Catégorie: Distributed FileSystem | aucun commentaire | aucun rétrolien

Puppet 2.7 : Des nouveaux type bien sympa

lundi, juin 27 2011, par Benoit Cattié

On peux maintenant manager ses switch/routeur cisco avec puppet ! :)

Quelques nouveaux types on fait leur apparition pour gérer les interfaces des switch (cisco uniquement pour l instant).

Tout d'abord le type interface : http://docs.puppetlabs.com/references/stable/type.html#interface

On peux voir sur le Changelog un exemple d'utilisation :

interface { "FastEthernet 0/1":
  device_url          => "ssh://user:pass@cisco2960.domain.com/",
  mode                => trunk,
  encapsulation       => dot1q,
  allowed_trunk_vlans => "1-99,200,253",
  description         => "to back bone router"
}

On peux aussi gérer les vlans avec un autre nouveau type : vlan http://docs.puppetlabs.com/references/stable/type.html#vlan

Encore un petit exemple d'utilisation :

vlan { "99":
  description => "management",
  device_url  => "ssh://user:pass@cisco2960.domain.com/",
}

Il doit aussi etre possible de récupérer certains facts cisco : /usr/lib/ruby/1.8/puppet/util/network_device/cisco/facts.rb

        facts[:hardwaremodel] 
        facts[:processor] 
        facts[:hardwarerevision] 
        facts[:memorysize] 
        facts[:hostname] 
        facts[:uptime] 
        facts[:uptime_seconds] 
        facts[:uptime_days] 
        facts[:operatingsystem] 
        facts[:operatingsystemrelease] 
        facts[:operatingsystemmajrelease] 
        facts[:operatingsystemfeature]

J'ai hâte de tester tout ça !


Catégorie: puppet | aucun commentaire | aucun rétrolien

Munin 2.0 : using rrdcached

vendredi, juin 10 2011, par Benoit Cattié

rrdtool quickly runs into disk-I/O problems.

rrdcached provide one solution for this problem.

To setup rrdcached with munin 2.0 and Ubuntu :

Install rrdcached from packages.

Update rrdcached init script :

remove OPTS= lines from /etc/init.d/rrdcached add to /etc/default/rrdcached

OPTS="-s munin -l unix:/var/run/rrdcached.sock"
OPTS="$OPTS -j /var/lib/rrdcached/journal/ -F"

In munin.conf set :

rrdcached on
rrdcached_socket /var/run/rrdcached.sock

See rrdcached man page for detailed options


Catégorie: munin | aucun commentaire | aucun rétrolien

Munin 2.0 : cgi-graph and cgi-html with nginx

A little doc for configuring nginx for munin-cgi-graph and munin-cgi-html

You need to spawn the munin-cgi binaries manually, you can use spawn-fcgi with the following options:

        spawn-fcgi -s /var/run/munin/munin-cgi-html.sock -U www-data -u munin -g munin /usr/lib/cgi-bin/munin-cgi-html
        spawn-fcgi -s /var/run/munin/munin-cgi-graph.sock -U www-data -u munin -g munin /usr/lib/cgi-bin/munin-cgi-graph

In munin.conf set :

        graph_strategy cgi
        cgiurl_graph /cgi-bin/munin-cgi-graph
        html_strategy cgi

Nginx vhost example :

        location /munin/static {
                alias /var/cache/munin/www/static;
        }

        location /munin {
                alias /var/cache/munin/www;
        }

        location /munin-cgi/static {
                alias /etc/munin/static;
        }

        location ~ ^/cgi-bin/munin-cgi-graph/ {
                fastcgi_split_path_info ^(/cgi-bin/munin-cgi-graph)(.*);
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_pass unix:/var/run/munin/munin-cgi-graph.sock;
                include fastcgi_params;
        }

        location /munin-cgi/ {
                fastcgi_split_path_info ^(/munin-cgi)(.*);
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_pass unix:/var/run/munin/munin-cgi-html.sock;
                include fastcgi_params;
        }

Feel free to use it in Munin CgiHowto


Catégorie: munin | aucun commentaire | aucun rétrolien

GitHub Repository

Just a link to my GitHub repository.

You can found some puppet modules (nginx, php5-fpm and keepalived for now).

Benoit Cattié GitHub Repository


Catégorie: puppet | aucun commentaire | aucun rétrolien