PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Yannig : Installation et présentation de puppetboard

samedi 13 septembre 2014 à 09:29

Mais au fait, pourquoi puppetboard ?

Il était une fois un royaume dans lequel les devops étaient roi et n'avaient (presque plus) rien à faire. Passant par là, le développeur opensource du dit produit se dit qu'il fallait réveiller se peuple au bios dormant. C'est ainsi que naquis la notion de PuppetDB (bon OK, y'a d'autres raisons notamment le besoin d'avoir un mécanisme de stockage des faits un peu plus propre que ce qui était fait).

Concernant PuppetDB en lui même - dans les grandes lignes - sachez qu'il s'agit d'une base type NoSQL (notion à la mode) qu'on peut interroger à l'aide de requête de type REST (autre notion à la mode).

Pour la version un peu plus longue, sachez que le premier désigne un mécanisme de stockage d'objet au format JSON (et c'est là où je me rends compte que c'est pas forcément plus clair ...). En gros, c'est comme le SQL sauf qu'il n'y a pas de table et que les requêtes se font en javascript à la place du SQL. Si vous ne savez pas de quoi je parle là non plus, je ne peux plus rien faire pour vous.

Pour les requêtes REST (ou restfull), tout ceci désigne un moyen de faire des appels via l'utilisation de requête HTTP (et que c'est marrant de se rendre compte qu'on avait déjà fait du REST avant le verbe mais je m'égare). En gros, vous voulez la liste des machines, vous faîtes une requête sur l'URL http://localhost/nodes, ce dernier vous renverra alors la liste des nœuds sous la forme d'un hash map (autrement appelé JSON). Bon d'accord, c'est pas très clair. En gros, ça vous renvoie du texte qui devrait ressembler à un truc de ce genre :

{
"node1": {"address": "192.168.0.1", "macadress": "00:00:01:00:00:01"},
"node2": {"address": "192.168.0.2", "macadress": "00:00:01:00:00:02"},
}

Ne reste plus qu'à le lire et l'utiliser dans votre interface web, votre script perl etc.

Pour revenir à nos moutons, PuppetDB à donc pour rôle de stocker les informations qu'on va récolter suite aux applications de catalogue sur nos machines. Seul petit hic, le plugin puppet dashboard n'est plus trop compatible avec tout ceci et je me retrouve donc avec un superbe outil de présentation des données puppet vide et, de l'autre côté, une interface en JSON/Restfull absolument inutilisable pour mes utilisateurs (ainsi que moi-même étant donné que je ne lis pas encore le JSON dans le texte).

C'est donc à ce moment que je me suis mis en quête d'une alternative afin de rendre le sourire à mes utilisateurs et moi-même. Après quelques requêtes sur le moteur dont on ne doit pas prononcer le nom, je tombe sur le jeune et prometteur puppetboard (https://github.com/nedap/puppetboard).

Mais assez de blabla, passons maintenant à l'installation de ce merveilleux outils.

Installation

Autant vous le dire tout de suite, si vous voulez installer ce produit, c'est que vous utilisez puppet. Si vous ne voulez pas utiliser puppet pour l'installation, c'est que vous êtes maso. Comme il se trouve qu'en plus, les auteurs ont fait une recette puppet directement récupérable depuis le puppet forge, on ne va pas s'en priver.

En premier lieu, assurez-vous d'avoir déjà les modules puppet apache et puppetboard (puppet module install/list/etc.).

Ouvrez la structure du node puppet correspondant à la machine sur laquelle vous voulez installer le puppetboard et ajoutez-y la recette suivante :

  class { 'apache': }
class { 'apache::mod::wsgi': }
# Configure Puppetboard
class { 'puppetboard':
manage_virtualenv => true,
puppetdb_port => "9090",
puppetdb_host => "127.0.0.1",
}
# Access Puppetboard through pboard.example.com
class { 'puppetboard::apache::vhost':
vhost_name => 'puppetboard',
port => 8888,
}

De là, je vous invite à lancer la commande d'application de votre recette sur la machine puppetboard :

puppet agent -t

Tada ! Vous avez un puppetboard fonctionnel.

Sortez maintenant votre navigateur préféré (firefox, chrome, Internet E nan, j'déconne) et pointez sur l'URL http://puppetboard:8888 (ou ce que votre cerveau malade aura décidé de choisir) et vous devriez obtenir l'interface suivante :
Un petit tour du propriétaire s'impose :

Pour finir

Autant le dire tout de suite, l'outil est encore un peu jeune. A noter un petit soucis que j'ai rencontré lors du déploiement : les librairies Javascript sont référencées sur Internet et non sur la machine. Il faut donc un navigateur avec un proxy valide pour que ça fonctionne. Je me fendrai peut-être d'un patch pour corriger ça ...

Autre chose, je n'ai plus mes courbes de tendance sur le temps d'application du catalogue sur mes machines. Argh ! ça va crier ...

Mais bon, en dehors de ça, l'interface est assez réactive et simple à comprendre. Je recommande donc !

Gravatar de Yannig
Original post of Yannig.Votez pour ce billet sur Planet Libre.

Maniatux : ArchBSD dans une jail FreeBSD 10

samedi 13 septembre 2014 à 06:00

ArchBSD peut être installé dans une jail sur un hôte FreeBSD très facilement car très proche. En effet, là où Debian GNU/kFreeBSD est une Debian utilisant un noyau FreeBSD, ArchBSD peut se résumer à l'équation suivante : ArchBSD = FreeBSD + pacman. En effet sur ArchBSD on retrouve un rc.conf (avec des daemon_enable="YES") et le fonctionnement ne nécessite pas de couche de compatibilité Linux.

Création de la jail

Malheureusement ArchBSD ne propose pas d'image tout prête qu'il suffirait de décompresser. Il va falloir utiliser pacman et bidouiller un peu pour le faire fonctionner.

# pkg install pacman

Ensuite créez un fichier pacman.conf (dans le répertoire courant) avec le contenu suivant :

[options]
SigLevel = Never
[core]
Server = ftp://ftp.archbsd.net/core/os/x86_64

Note : x86_64 est à remplacer par i686 si votre système est 32 bits.

Créez le répertoire de la jail ainsi que deux répertoires nécessaires à pacman :

# mkdir /usr/jails/archbsd
# mkdir -p /usr/jails/t_archbsd/var/lib/pacman
# mkdir -p /usr/jails/t_archbsd/var/cache/pacman/pkg

Procédez maintenant à l'installation :

pacman -Sy base \\
-r /usr/jails/archbsd \\
--cachedir /usr/jails/archbsd/var/cache/pacman \\
--arch x86_64 \\
--config pacman.conf

Configuration de la jail

Editez votre /etc/jail.conf pour y ajouter votre jail archbsd. Exemple :

# DEFAULT PARAMETERS
#
exec.start      = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.clean;
mount.devfs;
path = "/usr/jails/$name";
host.hostname = "$name";

# INDIVIDUAL JAIL PARAMETERS
#
archbsd {
        ip4.addr = re0|192.168.0.13;
        persist;
}

Ensuite démarrez la jail :

# service jail start

Configurer ArchBSD

Entrez dans la jail ArchBSD :

# jexec archbsd bash

Premièrement, nous avons un souci avec pacman. En effet la détection de l'architecture ne fonctionne pas bien (FreeBSD utilise amd64 pour les systèmes 64 bits, alors que sur les dépôts de ArchBSD c'est x86_64), il faut donc la forcer. Editez le fichier /etc/pacman.conf et modifiez comme suivant :

Architecture = x86_64

Note : Bien entendu si vous êtes sur du 32 bits, c'est i686 qu'il faut saisir.

Ensuite il faut initialiser le keyring de pacman, avec les commandes suivantes :

# pacman-key --init
# pacman-key --populate archbsd

Et voilà, ArchBSD est prêt !

Gravatar de Maniatux
Original post of Maniatux.Votez pour ce billet sur Planet Libre.

Articles similaires

La vache libre : LilyPond – Un logiciel de notation musicale vraiment très sympa

vendredi 12 septembre 2014 à 23:35

lavachelibre@lavachelibre:~-Musique_006

Ahhh que je suis content de tenir ce blog, qui me force à fouiner un peu pour de temps à autre tomber sur une petit perle telle que Lilypond. Pour ce qui ne connaissent pas encore cette application crée en 1996, il s’agit d’un outil de notation musicale conçu dans le but de vous permettre de générer des partitions. Si j’ai utilisé le terme générer ce n’est pas un hasard, car vous allez le voir, Lilypond est avant tout un outil de programmation. Avant de maîtriser la bête vous allez donc devoir dompter sa syntaxe, afin de pouvoir travailler sur un fichier en mode texte, qu’il vous faudra ensuite compiler pour générer le PDF contenant la partition. Ne paniquez pas pour autant et comme l’a dit Jean-Paul, « N’ayez pas peur ». Les termes programmation et compilation peuvent faire peur, mais ce n’est pas justifié. La prise en main de Lilypond est très rapide et (c’est le cas de le dire) à la portée  de tous les utilisateurs.

 Installation :

Avant de commencer il va bien entendu falloir procéder à l’installation de Lilypond, qui fonctionne sous GNU/Linux, Windows et Mac OS X. Vous trouverez les sources et les binaires qui vont bien sur la page de téléchargement du site officiel.

D’après ce que j’ai pu voir en fouinant un peu, Lilypond est également présent dans les dépôts des principales distributions GNU/Linux. Sur Arch Linux et Manjaro en revanche, il va falloir passer par AUR à l’aide de la commande suivante :

yaourt -S lilypond

Usages :

Maintenant que Lilypond est présent sur votre machine, nous allons voir comment ça marche.

La première chose à faire c’est de créer un fichier texte, dont l’extension doit être .ly. C’est le point de départ de votre nouveau projet.

Nous allons donc choisir un répertoire dans lequel nous allons créer un fichier test.ly par exemple et une fois que vous y êtes, entrez une portion de texte semblable à celle-ci :

\\version "2.18.2"
{
 c'g'e'f'g'c'd'd
 }

Ceux qui ont déjà fait de la musique le savent sans doute déjà, mais pour les autres, il est bon de préciser que c’est le système de notation américain qui est utilisé ici où :

C = DO
D = RE
E = MI
F = FA
G = SOL
A = LA
B = SI

NB : Une commande spécifique permet d’utiliser le système notes Français.

Le signe « ‘ » signifie ici que nous souhaitons monter d’une octave. Si vous voulez descendre d’une octave il suffit de le supprimer et si vous voulez encore descendre, il suffit d’utiliser une virgule « , ».

Maintenant que votre fichier texte contient ces quelques notes, vous pouvez le compiler à l’aide de la commande suivante :

lilypond test.ly

Vous devriez alors obtenir un retour semblable à celui-ci :

lilypond test.ly
GNU LilyPond 2.18.2
Traitement de « test.ly »
Analyse...
Interprétation en cours de la musique...
Pré-traitement des éléments graphiques...
Détermination du nombre optimal de pages...
Répartition de la musique sur une page...
Dessin des systèmes...
Sortie mise en page vers « test.ps »...
Conversion à « ./test.pdf »...
Compilation menée à son terme, avec succès.
[lavachelibre@lavachelibre Musique]$

et si tout s’est bien passé un .pdf contenant les notes indiquées dans le fichier devrait apparaître. Une fois le pdf ouvert votre portée devrait ressembler à ça :

test.pdf_009

Félicitations, vous venez de créer votre première partition.

Génial non ?!!

Bien entendu ce n’est qu’un tout petit exemple, car Lilypond va vous permettre d’en faire beaucoup plus et regorge d’options vous permettant entre autres :

et même d’insérer des paroles à l’aide d’une syntaxe de ce genre :

\\addlyrics
{
you have moo
}

test.pdf_010

Conclusion :

Comme vous le voyez ce n’est pas si dur que ça. Il suffit d’un peu de mémoire et de curiosité pour écrire de belles partitions, tout en apprenant une nouvelle syntaxe.

Si ça vous tente, vous pouvez en savoir plus sur Lilypond en visitant le site du projet. Je ne saurais que trop vous conseiller aussi de lire un peu le manuel et de le garder à portée de main. Il vous sera indispensable.

Amusez-vous bien, bonne composition et si vous sortez le carton musical de l’année, n’oubliez pas votre bonne vieille Noireaude qui a toujours cru en vous :D

via

Gravatar de La vache libre
Original post of La vache libre.Votez pour ce billet sur Planet Libre.

Nicolargo : Support de présentation de Docker

vendredi 12 septembre 2014 à 22:06

A l'occasion de la commission open-source de la Telecom Valley, j'ai eu le plaisir de faire un talk sur le sujet à la mode du moment: Docker ou la virtualisation par conteneurs (j'en avais déjà parlé sur ce blog dans un précédent billet).

Introduction à docker.io from Nicolas Hennion

Au vu des questions et débats qui ont suivi la présentation, je ne doute pas de l'explosion des cas d'usage sur le sujet dans les prochains mois !

Et vous chers lecteurs, ou en êtes vous dans vos projets autours de l'écosystème Docker ? En phase de test ? De production ?

Partagez avec nous vos XP sur le sujet !

Cet article Support de présentation de Docker est apparu en premier sur Le blog de NicoLargo.

Gravatar de Nicolargo
Original post of Nicolargo.Votez pour ce billet sur Planet Libre.

Wooster by CheckmyWebsite : Vérifier les liens morts sur un site web

vendredi 12 septembre 2014 à 09:00

Quelle n’a pas été ma surprise en essayant de trouver un vérificateur de liens pour le tout nouveau site de support de voir à quel point ce simple besoin pouvait se transformer en quête du Graal.

Entre les projets Open Source abandonnés et les nombreux sites en ligne qui ne vérifient qu’une page, c’est à croire que plus personne ne vérifie les liens internes et externes de son site pour contrôler s’ils sont toujours valides ou morts.

Et bien moi si ! je trouve que c’est une partie importante du confort de lecture offert au visiteurs. Qui aime cliquer un lien alléchant pour s’apercevoir qu’il ne mène nul part ?

Cahier des charges

Pourtant mon cahier des charges pour un outil de ce genre est plutôt basique.

  • Capacité à tester un site entier en une seule commande (récursif).
  • Automatisable.
  • HTTP et HTTPS.
  • Ignorer les erreurs de certificat SSL.
  • Support HTML5.
  • Respect du fichier robots.txt.

Les vérificateurs de liens morts

Voyons le résultat de mes recherches tout azimut pour trouver ce qu’il va convenir d’appeler la perle rare. Vous allez comprendre pourquoi.

Librairies

Vu que nous utilisons un workflow de publication basé entre autres sur Grunt et Bower, il semblait être une bonne idée de chercher quelque chose du côté des librairies, plugins pour Grunt. Deux possibilités existent mais ça ne va pas bien loin.

Jamais réussi à faire fonctionner correctement grunt-deadlink et grunt-link-checker sort constamment avec une erreur. Ça commence fort !

Pas plus de chance avec un module npm du nom de hyperlink. La loose gagne du terrain.

Services en ligne

Le plus célèbre est certainement celui du W3C. Il est malheureusement gratuit uniquement pour une page web et non un site entier donc pas ce que je recherche.

Broken Link Check est le service en ligne gratuit qui m’a semblé correspondre le mieux à ce que je recherchais. L’outil est limité aux 3000 pages rencontrées, ce qui en fait l’un des moins limités que j’ai trouvé dans ce domaine des outils en ligne.

Et la sortie, succinte, présente l’essentiel; à savoir les pages contenant des liens morts et la possibilité de facilement les retrouver comme témoigne cet écran.

Interface de Broken Link Check
Interface de Broken Link Check

Mais bon côté automatisation, sans API, c’est pas le pied un service en ligne !

Logiciels dédiés

Reste un logiciel dédié pour me sortir de ce qui commence à être une vraie prise de tête ! La fraîcheur de ce qu’il est possible de trouver en ce domaine fait penser que ma quête semble avoir été résolue depuis les années 2000 et que rien n’a bougé depuis.

Deux logiciels sortent du lot et semblent mieux suivis que leurs petits camarades.

Webcheck

La commande à exécuter peut rester simple, même si pas mal d’options sont disponibles :

webcheck.py http://wooster.checkmy.ws

Dernière sortie en 2010 pour ce logiciel en Python qui fonctionne plutôt bien et a certainement la sortie la plus complète comme en témoignent les deux captures ci-dessous.

Vue d’ensemble du site vérifié avec Webcheck
Vue d’ensemble du site vérifié avec Webcheck
Vue des liens morts ou posant problème dans Webcheck
Vue des liens morts ou posant problème dans Webcheck

C’est pas vraiment sexy mais plutôt efficace pour pister et retrouver ces foutus liens morts.

LinkChecker

Ce logiciel se présente à la fois comme une ligne de commande, une GUI et une interface web, plutôt un bon début. Et en plus, le projet reste actif malgré le nombre d’issues remontées restant sans réponse. La dernière version est datée de cette année.

La grande force de LinkChecker est la multitude des formats de sorties disponibles, qui vont du plus classique html, csv au plus exotique comme dot, qui génère un graphique au format dot, celui de GraphViz.

Voici un exemple de la commande avec une sortie HTML :

linkchecker --check-extern -F html http://wooster.checkmy.ws/

Dans la page linkchecker-out.html générée par l’exécution du script, nous trouvons des blocs similaires à celui-ci qui permettent de voir à la fois l’URL en erreur et la page contenant cette erreur. Pratique pour retrouver facilement dans le code source l’URL incriminée.

URL https://docpad.org/docs/'
Namedocumentation’
Parent URL http://wooster.checkmy.ws/2014/01/docpad/, line 119, col 925 (HTML) (CSS)
Real URL https://docpad.org/docs/
Check time 374.962 seconds
Result Error: ConnectionError: HTTPSConnectionPool(host=‘docpad.org’, port=443): Max retries exceeded with url: /docs/ (Caused by : [Errno 101] Network is unreachable)

Cette URL est bien en erreur puisque le site ne répond plus en HTTPS, mais seulement en HTTP. Par contre, au chapitre grief, les liens sortent en erreur quand le certificat SSL n’est pas valide.

Old school Bash script

J’ai d’abord essayé avec une commande wget un peu tarabiscotée :

wget --spider -o wget.log -e robots=off --wait 1 -r -p http://www.example.com

Mais ça ne donne rien de vraiment fiable. On oublie.

Puisque je ne trouve rien à ma convenance, cette histoire va se finir par un script bash s’appuyant sur Lynx et Curl. J’ai trouvé ce script dans le Linux Shell Scripting Book et l’ai un peu modifié pour ignorer les erreurs de certificat.

#!/bin/bash
#Filename: find_broken.sh
#Desc: Find broken links in a website

if [ $# -ne 1 ];
    then
    echo -e "usage: $0 URL\\n"
    exit 1;
fi

echo Broken links:

mkdir /tmp/$$.lynx
cd /tmp/$$.lynx

lynx -traversal $1 > /dev/null
count=0;

sort -u reject.dat > links.txt

while read link;
do
    output=`curl -I -k $link -s | grep "HTTP/.*200"`;
    if [[ -z $output ]];
        then
        echo $link;
        let count++
    fi
done <links.txt

[ $count -eq 0 ] && echo No broken links found.

C’est « cochon » mais ça fait plutôt bien le job si l’on excuse la relative lenteur des vérifications. Le script considère les redirections comme des erreurs.

Alors lequel ?

Il existe certainement d’autre logiciels, services pour contrôler les liens morts d’un site web mais ils sont sûrement bien cachés et du coup je ne les ai pas trouvés.

Dans ceux présentés, mon choix, non définitif, ira pour le moment à ce bon vieux script bash, suivi du service en ligne Broken Link Checker et enfin de LinkChecker, en attendant que celui-ci puissent ignorer les erreurs de certificat. Quelque chose me dit que la détection de liens morts est une fonction que nous pourrions trouver un jour dans Check my Website… Mais en plus sexy quand même j’espère !

Gravatar de Wooster by CheckmyWebsite
Original post of Wooster by CheckmyWebsite.Votez pour ce billet sur Planet Libre.