<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le blog à Nono &#187; geekeries</title>
	<atom:link href="http://blogs.glou.org/arnaud/category/geekeries/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.glou.org/arnaud</link>
	<description>C'est l'histoire d'un geek...</description>
	<lastBuildDate>Sat, 04 Feb 2012 15:46:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Nouvel article : Plague</title>
		<link>http://blogs.glou.org/arnaud/2012/02/04/nouvel-article-plague/</link>
		<comments>http://blogs.glou.org/arnaud/2012/02/04/nouvel-article-plague/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 15:46:24 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Plague]]></category>
		<category><![CDATA[RPM]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=435</guid>
		<description><![CDATA[Ça fait un bon moment que je devais le publier ici-même : mon article sur Plague initialement publié dans GNU/Linux Magazine France est en ligne.]]></description>
			<content:encoded><![CDATA[<p>Ça fait un bon moment que je devais le publier ici-même : mon <a title="Plague : une infrastructure de fabrication de paquets RPM" href="http://blogs.glou.org/arnaud/plague-une-infrastructure-de-fabrication-de-paquets-rpm/">article sur Plague</a> initialement publié dans GNU/Linux Magazine France est en ligne.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2012/02/04/nouvel-article-plague/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le piège à con du jour : variables locales en python</title>
		<link>http://blogs.glou.org/arnaud/2012/01/27/le-piege-a-con-du-jour-variables-locales-en-python/</link>
		<comments>http://blogs.glou.org/arnaud/2012/01/27/le-piege-a-con-du-jour-variables-locales-en-python/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 15:26:43 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=424</guid>
		<description><![CDATA[Note pour plus tard. Soit un bout de code python qui ressemble à ça: mavariable = None def fonction():   if mavariable is None:    mavariable = 'toto'   blablabla() Ne pas oublier que dans ce cas la variable mavariable est locale à la fonction à cause de l&#8217;assignation à l&#8217;intérieur du if. La preuve [...]]]></description>
			<content:encoded><![CDATA[<p>Note pour plus tard. Soit un bout de code python qui ressemble à ça:</p>
<pre>mavariable = None

def fonction():
  if mavariable is None:
    mavariable = 'toto'
  blablabla()</pre>
<p>Ne pas oublier que dans ce cas la variable <em>mavariable</em> est locale à la fonction à cause de l&#8217;assignation à l&#8217;intérieur du <em>if</em>. La preuve :</p>
<pre>&gt;&gt;&gt; fonction()
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  File "&lt;stdin&gt;", line 2, in fonction
UnboundLocalError: local variable 'mavariable' referenced before assignment</pre>
<p>Grmpf.</p>
<p>Merci à Sam qui à fouillé dans la doc : c&#8217;est effectivement écrit <a href="http://docs.python.org/faq/programming.html#what-are-the-rules-for-local-and-global-variables-in-python">là</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2012/01/27/le-piege-a-con-du-jour-variables-locales-en-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Déplacer une VM KVM «à la main»</title>
		<link>http://blogs.glou.org/arnaud/2012/01/18/deplacer-une-vm-kvm-a-la-main/</link>
		<comments>http://blogs.glou.org/arnaud/2012/01/18/deplacer-une-vm-kvm-a-la-main/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 12:12:37 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LVM]]></category>
		<category><![CDATA[stockage]]></category>
		<category><![CDATA[virtualisation]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=412</guid>
		<description><![CDATA[Le contexte J&#8217;ai une petite ferme de serveurs physiques sous Scientific Linux 6 qui hébergent des machines virtuelles KVM gérées par libvirt. J&#8217;utilise des volumes logiques LVM comme disques virtuels. La plupart des VM ne sont pas critiques et supportent d&#8217;être arrêtées quelques minutes; par contre il vaut mieux ne pas les arrêter trop longtemps. [...]]]></description>
			<content:encoded><![CDATA[<h1>Le contexte</h1>
<p>J&#8217;ai une petite ferme de serveurs physiques sous <a href="http://scientificlinux.org/">Scientific Linux</a> 6 qui hébergent des machines virtuelles KVM gérées par <a href="http://www.libvirt.org/">libvirt</a>. J&#8217;utilise des volumes logiques LVM comme disques virtuels.</p>
<p>La plupart des VM ne sont pas critiques et supportent d&#8217;être arrêtées quelques minutes; par contre il vaut mieux ne pas les arrêter trop longtemps. Tout le problème est donc de recopier au moins le gros des données sans arrêter la VM.</p>
<p>Pour l&#8217;exemple, je déplacerai une VM <em>vm1</em>, dont le disque virtuel est sur <em>/dev/vg00/vm1</em>, de la machine physique <em>host1</em> à sa soeur <em>host2</em>. On supposera pour l&#8217;exemple que les deux machines sont identiques; en tout cas il vaut mieux qu&#8217;elles disposent de la même version du paquet <em>qemu-kvm</em>. Et quand je dis la même version c&#8217;est la même version au patch près, sinon la VM risque de ne pas démarrer sur le nouvel hôte.</p>
<h1>L&#8217;outil</h1>
<p>Je sais faire la même manip avec des isolateurs à la place des VM: un coup de rsync et c&#8217;est marre. Ah, si rsync savait se débrouiller à peu près efficacement avec un périphérique bloc&#8230; Et ben ça existe, ça s&#8217;appelle <a href="https://github.com/mpalmer/lvmsync">lvmsync</a>, c&#8217;est un script ruby qu&#8217;il suffit de poser sur les deux machines hôtes. En dehors de ça, vous aurez besoin de dmsetup (normalement il est installé, il fait partie du paquet <em>device-mapper</em> qui est lui-même une dépendance de <em>libvirt</em>) et root devra pouvoir se connecter en ssh sur <em>host2</em> depuis <em>host1</em>.</p>
<h1>La méthode</h1>
<p>On commence par créer le volume logique sur <em>host2</em>:</p>
<pre>lvcreate -l640 -nvm1 vg00</pre>
<p>À adapter évidemment, il doit être identique à l&#8217;original qui se trouve sur <em>host1</em>.</p>
<p>Ensuite, sur <em>host1</em>, on prend un instantané du disque de la VM et on le copie sur <em>host2</em>:</p>
<pre>lvcreate -L10G -s -nvm1-snap /dev/vg00/vm1
dd if=/dev/vg00/vm1-snap bs=10M | ssh root@host2 dd of=/dev/vg00/vm1 bs=10M</pre>
<p>On peut maintenant éteindre la VM, puis synchroniser le disque. Ensuite on exporte la configuration de la VM.</p>
<pre>virsh shutdown vm1
lvmsync /dev/vg00/vm1-snap host2:/dev/vg00/vm1
virsh dumpxml vm1 | ssh root@host2 'cat &gt; /var/tmp/vm1.xml'</pre>
<p>Reste plus, sur <em>host2</em>, qu&#8217;à importer et démarrer la VM:</p>
<pre>virsh define /var/tmp/vm1.xml
virsh start vm1</pre>
<p>Une fois que c&#8217;est fait, on peut faire le ménage sur <em>host1</em>:</p>
<pre>virsh undefine vm1
lvremove /dev/vg00/vm1-snap
lvremove /dev/vg00/vm1</pre>
<h1>C&#8217;est prêt!</h1>
<p>Et ça va quand même vachement plus vite comme ça. Maintenant, il va falloir écrire un bout de script pour emballer tout ça, on verra ça un autre jour. <img src='http://blogs.glou.org/arnaud/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2012/01/18/deplacer-une-vm-kvm-a-la-main/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrer une VM de Xen vers KVM</title>
		<link>http://blogs.glou.org/arnaud/2012/01/17/migrer-une-vm-de-xen-vers-kvm/</link>
		<comments>http://blogs.glou.org/arnaud/2012/01/17/migrer-une-vm-de-xen-vers-kvm/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 14:12:18 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[virtualisation]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=398</guid>
		<description><![CDATA[Un petit aide-mémoire sur la migration d&#8217;une machine virtuelle Linux de Xen (sur CentOS 5.x, mais ça ne doit pas jouer énormément) vers KVM (sur Scientific Linux 6.x, donc avec libvirt). L&#8217;essentiel de ce qui suit vient de cette page. Préparation de la machine virtuelle J&#8217;ai donc une VM Xen, appelons-la testxen1 (parce que c&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<p>Un petit aide-mémoire sur la migration d&#8217;une machine virtuelle Linux de Xen (sur CentOS 5.x, mais ça ne doit pas jouer énormément) vers KVM (sur Scientific Linux 6.x, donc avec <em>libvirt</em>). L&#8217;essentiel de ce qui suit vient de <a href="http://sativouf.blogspot.com/2010/02/xen-to-kvm-migration.html">cette page</a>.</p>
<h1>Préparation de la machine virtuelle</h1>
<p>J&#8217;ai donc une VM Xen, appelons-la <em>testxen1</em> (parce que c&#8217;est son nom), qui tourne sur l&#8217;ancien serveur. L&#8217;OS installé sur la VM est un CentOS 5. Sur cette machine virtuelle (qui tourne encore):</p>
<ul>
<li>éditer <em>/etc/inittab</em>, enlever le <em>getty(8)</em> qui tourne sur la console Xen et décommenter ceux des terminaux virtuels habituels;</li>
<li>installer un noyau Linux «normal» (pas un noyau Xen);</li>
<li>éditer <em>/etc/fstab</em> et remplacer les disques virtuels Xen (<em>xvda</em>, <em>xvdb</em> et ainsi de suite) par des disques IDE (<em>hda</em>, <em>hdb</em>&#8230;). NB: pas évident que cette étape soit partout la même, ça dépend peut-être de la version du noyau; à tester.</li>
<li>enlever le paramètre <em>console=xvc0</em> du nouveau noyau dans <em>/boot/grub/menu.lst</em>, et s&#8217;assurer que le nouveau noyau est bien sélectionné par défaut;</li>
<li>installer grub:</li>
</ul>
<pre>[root@testxen1 ~]# grub
Probing devices to guess BIOS drives. This may take a long time.

    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub&gt; device (hd0) /dev/xvda
device (hd0) /dev/xvda
grub&gt; root (hd0,0)
root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83
grub&gt; setup (hd0)
setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  15 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub&gt; quit
quit</pre>
<p>C&#8217;est fini pour la machine virtuelle, on peut maintenant l&#8217;arrêter.</p>
<h1>Sur la nouvelle machine physique</h1>
<p>On commence, bien sûr, par copier l&#8217;ancien (ou les anciens) disque(s) virtuel(s) sur la nouvelle machine. Dans mon cas, il s&#8217;agit de volumes logiques LVM, on fait bêtement ça à grands coups de <em>dd(1)</em>. Reste juste à créer la nouvelle VM:</p>
<pre>virt-install --connect qemu:///system -n testxen1 -r 1024 --vcpus=1 \
 --disk /dev/vg00/testxen1 --vnc --os-type linux --accelerate \
 --network=bridge=br102,model=virtio,mac=12:00:02:e3:00:01 \
 --noreboot --keymap us --import</pre>
<p>Quelques notes en vrac:</p>
<ul>
<li>bien évidemment, remplacer le nom de la machine (ici <em>testxen1</em>) par ce qu&#8217;on veut;</li>
<li>idem pour la mémoire (option <em>-r</em>) et le nombre de processeurs (option <em>&#8211;vcpus</em>);</li>
<li>dans le cas où on a plusieurs disques virtuels, on peut répéter plusieurs fois l&#8217;option <em>&#8211;disk</em>, avec le disque de démarrage en premier;</li>
<li>pour l&#8217;option <em>&#8211;network</em>, replacer <em>br102</em> par le nom du pont réseau qui va bien (si vous avez une config réseau différente, va falloir chercher <img src='http://blogs.glou.org/arnaud/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ) et bien entendu l&#8217;adresse MAC par la bonne valeur.</li>
</ul>
<p>Voilà, vous allez voir démarrer votre nouvelle VM sous vos yeux zébahis. Elle est pas belle, la vie? <img src='http://blogs.glou.org/arnaud/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2012/01/17/migrer-une-vm-de-xen-vers-kvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retour (raté) au pays du wifi</title>
		<link>http://blogs.glou.org/arnaud/2012/01/03/retour-rate-au-pays-du-wifi/</link>
		<comments>http://blogs.glou.org/arnaud/2012/01/03/retour-rate-au-pays-du-wifi/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 21:50:48 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[brique]]></category>
		<category><![CDATA[DIR-615]]></category>
		<category><![CDATA[dlink]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=393</guid>
		<description><![CDATA[J&#8217;en ai parlé ici même il y a quelques temps, j&#8217;ai échoué un peu par hasard et beaucoup par malchance avec un point d&#8217;accès wifi D-Link. Je l&#8217;avais plus ou moins laissé moisir dans un coin (et avec son firmware d&#8217;origine) faute de possibilité de l&#8217;utiliser avec OpenWrt. J&#8217;ai voulu m&#8217;en resservir il y a [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;en ai parlé <a title="Mes aventures au pays du wifi" href="http://blogs.glou.org/arnaud/2010/11/07/mes-aventures-au-pays-du-wifi/">ici même</a> il y a quelques temps, j&#8217;ai échoué un peu par hasard et beaucoup par malchance avec un point d&#8217;accès wifi D-Link. Je l&#8217;avais plus ou moins laissé moisir dans un coin (et avec son firmware d&#8217;origine) faute de possibilité de l&#8217;utiliser avec OpenWrt. J&#8217;ai voulu m&#8217;en resservir il y a quelques jours : une brique, 2 ou 3 mois après l&#8217;expiration de sa garantie. Ça s&#8217;allume, témoin de mise en marche ambre (il devrait pas être vert, normalement ?), pas de wifi, pas de lien ethernet sur aucun de ses ports, pas de cheat code magique pour remettre un firmware en face des trous.</p>
<p>Au programme : acheter un point d&#8217;accès qui marche. Pas un D-Link, cette fois-ci.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2012/01/03/retour-rate-au-pays-du-wifi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quelques extensions Firefox, 2 ans après</title>
		<link>http://blogs.glou.org/arnaud/2011/12/23/quelques-extensions-firefox-2-ans-apres/</link>
		<comments>http://blogs.glou.org/arnaud/2011/12/23/quelques-extensions-firefox-2-ans-apres/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 10:24:41 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=390</guid>
		<description><![CDATA[Il y a un peu plus de deux ans (ça nous rajeunit pas), j&#8217;ai parlé de quelques extensions Firefox. J&#8217;utilise toujours l&#8217;excellentissime FxIF, j&#8217;ai par contre jeté les deux autres. En plus de FxIF, donc, et bien entendu de l&#8217;indispensable Adblock Plus, j&#8217;utilise depuis peu : Status-4-Evar, la résurrection de la barre de statut de [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a un peu plus de deux ans (ça nous rajeunit pas), <a title="Quelques extensions Firefox" href="http://blogs.glou.org/arnaud/2009/12/06/quelques-extensions-firefox/">j&#8217;ai parlé</a> de quelques extensions Firefox. J&#8217;utilise toujours l&#8217;excellentissime <a href="https://addons.mozilla.org/en-US/firefox/addon/fxif/">FxIF</a>, j&#8217;ai par contre jeté les deux autres. En plus de FxIF, donc, et bien entendu de l&#8217;indispensable <a href="https://addons.mozilla.org/fr/firefox/addon/adblock-plus/">Adblock Plus</a>, j&#8217;utilise depuis peu :</p>
<ul>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/status-4-evar/">Status-4-Evar</a>, la résurrection de la barre de statut de Firefox 3,</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/its-all-text/">It&#8217;s All Text!</a> pour éditer les zones de texte des formulaires avec emacs,</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/expiry-canary/">Expiry Canary</a>, pas que j&#8217;en aie vraiment eu besoin jusqu&#8217;à présent, j&#8217;ai une sonde Nagios qui fait la même chose sur mes sites, mais pourquoi pas ?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2011/12/23/quelques-extensions-firefox-2-ans-apres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sauvegardes à la maison, le retour</title>
		<link>http://blogs.glou.org/arnaud/2011/10/31/sauvegardes-a-la-maison-le-retour/</link>
		<comments>http://blogs.glou.org/arnaud/2011/10/31/sauvegardes-a-la-maison-le-retour/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 11:18:08 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[Makefile]]></category>
		<category><![CDATA[rsnapshot]]></category>
		<category><![CDATA[sauvegardes]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=372</guid>
		<description><![CDATA[J&#8217;ai déjà expliqué mon utilisation de BackupPC à la maison. À l&#8217;usage, c&#8217;est assez bien adapté à la sauvegarde en local de petites quantités de données externes, typiquement c&#8217;est très bien pour sauvegarder mes sites web sur mon PC. Par contre, dès qu&#8217;il s&#8217;agit de sauvegarder des données sur un disque externe (typiquement mes photos, [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai déjà expliqué <a href="http://blogs.glou.org/arnaud/2010/11/28/des-sauvegardes-a-la-maison/">mon utilisation de BackupPC à la maison</a>. À l&#8217;usage, c&#8217;est assez bien adapté à la sauvegarde en local de petites quantités de données externes, typiquement c&#8217;est très bien pour sauvegarder mes sites web sur mon PC. Par contre, dès qu&#8217;il s&#8217;agit de sauvegarder des données sur un disque externe (typiquement mes photos, qui ne tiennent pas sur les disques durs de mes serveurs), ce n&#8217;est pas l&#8217;outil adéquat.</p>
<p>Dans l&#8217;article mentionné plus haut, j&#8217;évoquais rapidement mon utilisation de <a href="http://www.nongnu.org/rdiff-backup">rdiff-backup</a> pour  la sauvegarde de mon PC principal. Depuis j&#8217;ai découvert et commencé à utiliser l&#8217;excellentissime <a href="http://rsnapshot.org/">rsnapshot</a>, qui a l&#8217;avantage de rendre la restauration des données triviale (en gros, une sauvegarde est matérialisée par un répertoire sur le disque, et les fichiers s&#8217;y trouvent en clair, il suffit de les relire). Il restait juste à l&#8217;adapter à l&#8217;utilisation sur un disque dur externe, qui peut changer de point de montage (en pratique, si je le monte en tant que <em>root</em>, c&#8217;est <em>/mnt/backups</em>, si je le monte en tant que moi, c&#8217;est <em>/media/quelquechose</em>).</p>
<p>La config adaptée tient en deux fichiers. Pour commencer un <em>rsnapshot.conf</em> situé à la racine du disque externe (ou dans le sous-répertoire consacré aux sauvegardes, s&#8217;il ne s&#8217;agit pas du disque entier). Voici l&#8217;essentiel de son contenu :</p>
<pre>config_version  1.2

include_conf    ./rsnapshot-root

no_create_root  1

cmd_cp          /bin/cp
cmd_rm          /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du          /usr/bin/du

interval        backup  60

verbose         2
loglevel        3
logfile /var/log/rsnapshot
lockfile        /var/run/rsnapshot.pid

# LOCALHOST
backup  /root/          carrosse/
backup  /home/          carrosse/
backup  /etc/           carrosse/</pre>
<p>La partie intéressante est bien sûr la ligne <em>include_conf</em>. Il contient quoi, donc, ce fichier <em>rsnapshot-root</em> ? Eh bien il est généré, bien entendu, par le deuxième fichier dont je parlais plut haut, à savoir un Makefile (situé dans le même répertoire que <em>rsnapshot.conf</em>). Le contenu du <em>Makefile</em>, donc :</p>
<pre>backup: config
        rsnapshot -c ./rsnapshot.conf -V backup

config:
        echo '# Fichier genere, ne pas editer. -- Arnaud' &gt; ./rsnapshot-root
        echo -e snapshot_root\\t$$(pwd)/RSNAPSHOT/ &gt;&gt; ./rsnapshot-root</pre>
<p>Et voilà, c&#8217;est prêt. La sauvegarde se lance en tapant bêtement <em>make</em> dans le bon répertoire. C&#8217;est pas beau ça ?</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2011/10/31/sauvegardes-a-la-maison-le-retour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress et vidéos</title>
		<link>http://blogs.glou.org/arnaud/2011/10/09/wordpress-et-videos/</link>
		<comments>http://blogs.glou.org/arnaud/2011/10/09/wordpress-et-videos/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 19:13:20 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=366</guid>
		<description><![CDATA[J&#8217;ai pas mal lutté ces derniers jours contre un greffon WordPress qui répond au doux nom de Secure HTML5 Video Player. Sur le papier ça a l&#8217;air bien foutu : on peut héberger des vidéos n&#8217;importe où sur le web et les incruster dans un WordPress, pas besoin que tout soit sur le même serveur, [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai pas mal lutté ces derniers jours contre un greffon WordPress qui répond au doux nom de <a href="http://www.trillamar.com/webcraft/secure-html5-video-player/">Secure HTML5 Video Player</a>. Sur le papier ça a l&#8217;air bien foutu : on peut héberger des vidéos n&#8217;importe où sur le web et les incruster dans un WordPress, pas besoin que tout soit sur le même serveur, contrairement au <a href="http://wordpress.org/extend/plugins/degradable-html5-audio-and-video/">greffon que j&#8217;avais retenu auparavant</a>. Sauf que des fois ça marchait sous Firefox et des fois non.</p>
<p>Après quelques tests, les fois où ça ne marche pas, c&#8217;est les fois où le serveur qui héberge les vidéos ne connait pas les types MIME <em>video/ogg</em> et <em>video/webm</em> (il annonce alors les vidéos comme des vulgaires fichiers <em>text/plain</em>). Pour que ça tombe en marche il suffit de configurer le serveur pour remettre ça en face des trous ; en Apache, ça se dit comme ça :</p>
<pre>AddType video/ogg .ogv
AddType video/webm .webm</pre>
<p>Et voilà encore une victoire du Nono sur la machine. <img src='http://blogs.glou.org/arnaud/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2011/10/09/wordpress-et-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet et certificats</title>
		<link>http://blogs.glou.org/arnaud/2011/08/03/puppet-et-certificats/</link>
		<comments>http://blogs.glou.org/arnaud/2011/08/03/puppet-et-certificats/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 13:14:31 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=351</guid>
		<description><![CDATA[La demande populaire étant ce qu&#8217;elle est, voici un petit topo sur la façon dont je gère les certificats puppet. De manière générale, quand j&#8217;installe une machine, je lance un script de bootstrap sur mon serveur d&#8217;admin, celui qui a la clé ssh qui va bien. Ce script (bash) comporte entre autres le bout de [...]]]></description>
			<content:encoded><![CDATA[<p>La demande populaire étant ce qu&#8217;elle est, voici un petit topo sur la façon dont je gère les certificats puppet.</p>
<p>De manière générale, quand j&#8217;installe une machine, je lance un script de bootstrap sur mon serveur d&#8217;admin, celui qui a la clé ssh qui va bien. Ce script (bash) comporte entre autres le bout de code suivant :</p>
<pre>[ -d BY-HOST/$host ] || ./gen-host $host

( cd BY-HOST/$host &amp;&amp; tar cf - . ) \
  | ssh $host '( mkdir -p /var/lib/puppet/ssl &amp;&amp; \
    cd /var/lib/puppet/ssl &amp;&amp; rm -f *.pem */*.pem &amp;&amp; \
    tar xvf - &amp;&amp; \
    /usr/sbin/puppetd --no-daemonize --onetime --no-splay --verbose &amp;&amp; \
    touch /var/run/puppet/run-often )'</pre>
<p>En résumé, ça efface les éventuels certificats et autres clés déjà présents sur la machine, ça les remplace par la version «qui fait autorité» et ça lance puppet pour amorcer la pompe. Pour le <em>touch</em> à la fin, c&#8217;est expliqué là : <a href="http://blogs.glou.org/arnaud/2011/02/24/lancer-puppet-depuis-cron/">http://blogs.glou.org/arnaud/2011/02/24/lancer-puppet-depuis-cron/</a></p>
<p>Et si le serveur d&#8217;admin n&#8217;a pas les données en local ? Bah il les génère, tiens ! C&#8217;est le rôle de la première ligne. Le script <em>gen-host</em> fait moralement ça :</p>
<pre>mkdir -p BY-HOST/${host}/{certs,private_keys}
cp ca-${puppetmaster}.pem BY-HOST/${host}/certs/ca.pem
ssh $puppetmaster "puppetca --clean $host ; puppetca --generate $host"
scp ${puppetmaster}:/var/lib/puppet/ssl/private_keys/${host}.pem BY-HOST/${host}/private_keys/
scp ${puppetmaster}:/var/lib/puppet/ssl/ca/signed/${host}.pem BY-HOST/${host}/certs/</pre>
<p>Moralement, parce qu&#8217;il bosse un peu avant pour générer les variables <em>$host</em> et <em>$puppetmaster</em>. La première contient <em>$1</em> éventuellement qualifié (j&#8217;utilise systématiquement le FQDN comme identifiant) ; la seconde est déterminée par une variable dans la fiche LDAP du client.</p>
<p>Voilà, c&#8217;est un peu bricolé mais ça marche bien.</p>
<p>Et je me rends compte qu&#8217;il faudrait que je migre vers la syntaxe de puppet 2.x un de ces jours. <img src='http://blogs.glou.org/arnaud/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2011/08/03/puppet-et-certificats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xterm et ressources X11</title>
		<link>http://blogs.glou.org/arnaud/2011/07/19/xterm-et-ressources-x11/</link>
		<comments>http://blogs.glou.org/arnaud/2011/07/19/xterm-et-ressources-x11/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 14:27:58 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[IHM]]></category>
		<category><![CDATA[X11]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=347</guid>
		<description><![CDATA[Ceci est un aide-mémoire. Il y a quelques temps de ça, j&#8217;ai bricolé un petit outil qui s&#8217;appuie fortement sur xterm. Après avoir pesté contre la config de clavier qui faisait des choses bizarres, j&#8217;ai fouillé dans la doc de xterm et j&#8217;ai trouvé les ressources qui vont bien. ! xterm MYRSA MYRSA*Background:       lightgoldenrodyellow MYRSA*Foreground:       [...]]]></description>
			<content:encoded><![CDATA[<p>Ceci est un aide-mémoire.</p>
<p>Il y a quelques temps de ça, j&#8217;ai bricolé <a title="Myrsa — my root shell access" href="http://blogs.glou.org/arnaud/2011/04/27/myrsa-my-root-shell-access/">un petit outil</a> qui s&#8217;appuie fortement sur xterm. Après avoir pesté contre la config de clavier qui faisait des choses bizarres, j&#8217;ai fouillé dans la doc de xterm et j&#8217;ai trouvé les ressources qui vont bien.</p>
<pre>! xterm MYRSA
MYRSA*Background:       lightgoldenrodyellow
MYRSA*Foreground:       black
MYRSA*eightBitInput:    true
MYRSA*metaSendsEscape:  true
MYRSA*backarrowKey:     false</pre>
<p>Ça sert pour les <em>xterm</em> invoqués par <em>xterm -class MYRSA</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2011/07/19/xterm-et-ressources-x11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

