Introduction
La sauvegarde de la configuration des équipements réseaux (switch, routeurs, bornes Wi-Fi, etc) est un point souvent négligé. Pourtant, ces équipements jouent souvent un rôle clé, et l'incapacité de restaurer rapidement la configuration suite à un crash matériel peut provoquer la paralysie d'un réseau pendant de longues heures. Cette sauvegarde est parfois faite de façon manuelle après la phase initiale de configuration, avec le risque d'oublier de le faire lors des prochaines modifications. Il est donc préférable, lorsque l'équipement le permet, d'effectuer cette sauvegarde de façon automatique et récurrente vers une machine distante. Voyons comment faire cela sous Cisco IOS, en utilisant le planificateur de tâches Kron, semblable au programme Cron en environnement Unix.
Mise en place
Une fois connecté au Cisco avec Telnet ou SSH, on passe en mode administrateur, puis en mode configuration :
switch> enable switch# conf tOn crée une nouvelle policy-list pour Kron, nommée
backupConfig, qui sera composée d'une ou plusieurs commandes à exécuter :switch(config)# kron policy-list backupConfigOn utilise la commande
clipour ajouter une commande dans notre policy. Cette commande utiliserashow running-configafin d'écrire la configuration courante sur la sortie standard (on pourrait aussi utilisershow startup-configpour écrire la configuration stockée en mémoire flash). Ensuite, l'opérateur pipe (|) est utilisé pour rediriger cette sortie vers la commanderedirect, qui permet de rediriger un flux vers un serveur FTP, HTTP, TFTP, etc. On utilise ici un stockage vers un serveur FTP :switch(config-kron-policy)# cli show running-config | redirect ftp://<host>/<path>/cisco.txt switch(config-kron-policy)# exitOn définit maintenant à quel moment exécuter cette policy. Pour cela on créé une occurrence nommée
backupConfig_occurence. Dans cet exemple ce sera à 01h15, chaque jour (mot-clérecurring) :switch(config)# kron occurrence backupConfig_occurence at 01:15 recurring switch(config-kron-occurrence)# policy-list backupConfig switch(config-kron-occurrence)# exit switch(config)# exitPour vérifier la bonne prise en compte de notre tâche, et voir le délai avant son exécution :
switch# show kron scheduleVoilà, il ne reste plus qu'à attendre l'heure programmée, et vérifier la présence du fichier envoyé. Le bon fonctionnement de tout cela nécessitant que le Cisco soit pleinement configuré (date et heure, adresse IP, passerelle réseau, DNS, etc).
Enfin, tout cela ne dispense bien sûr pas de sauvegarder cette nouvelle configuration en mémoire flash en prévision d'un futur reboot :
switch# write mem
Blog de Thomas Martin
Entries tagged "evolix".
Si vous obtenez une erreur de ce type, lors d'un
mysqldumppar exemple :mysqldump: Got error: 1016: Can't open file: './db/table.frm' (errno: 24) when using LOCK TABLESC'est que votre serveur MySQL tente d'ouvrir trop de fichiers simultanément.
Pour augmenter le nombre maximal de fichiers pouvant être ouverts, vous pouvez ajuster le paramètre suivant dans la section
[mysqld]du fichiermy.cnf, dans la limite permise par votre système d'exploitation :open_files_limit = 2048La valeur par défaut étant de 1024.
Introduction
J'ai eu récemment l'occasion de mettre en oeuvre une infrastructure LAMP, reposant sur la plate-forme d'hébergement de machines virtuelles d'Amazon, nommé EC2, pour Elastic Compute Cloud.
Le principe de fonctionnement est le suivant : on créé une image AMI (Amazon Machine Image), contenant le système de fichiers du système d'exploitation à démarrer. Il est possible d'utiliser et de personnaliser des AMI fournis par Amazon, ou de la créér de zéro. Le noyau, quant à lui, est à sélectionner parmi ceux proposés par Amazon.
Ensuite, cette image est téléchargée vers l'infrastructure de stockage d'Amazon, S3 (Simple Storage Service). Après enregistrement de celle-ci, elle peut être instanciée en une ou plusieurs machines virtuelles.
Une particularité de cette solution est que les données stockées dans le système de fichiers racine des machines virtuelles ne sont pas persistantes. Une fois une instance terminée (via la commande
haltpar exemple, ou via l'interface d'Amazon), celles-ci sont perdues ! Il faut alors utiliser pour les données applicatives une autre fonctionnalité d'Amazon, les EBS (Elastic Block Storage). Il s'agit de disques virtuels que l'on peut ajouter à une instance, accessibles sous forme de simples block devices que l'on peut formater et monter. A noter que depuis peu il est possible d'utiliser un EBS en tant que système de fichiers racine, ce qui permet de démarrer et d'arrêter une machine à volonté, sans nécessité d'instancier à nouveau une AMI.Mise en oeuvre
Ce premier article décrit les étapes à suivre pour créér sa propre image AMI de Debian 5.0, l'envoyer vers Amazon, et la démarrer. Il vous faudra évidemment pour cela un compte Amazon Web Services.
Création de l'image
Création d'une image d'une taille de 1 Go et montage sous
/mnt/ami:# EC2_AMI_NAME=debian50 # dd if=/dev/zero of=$EC2_AMI_NAME.img bs=1M count=1024 # mkfs.ext3 -F $EC2_AMI_NAME.img # mkdir /mnt/ami # mount -o loop $EC2_AMI_NAME.img /mnt/amiInstallation et exécution de l'outil
debootstrap, qui permet le téléchargement et l'installation d'un système Debian de base dans le point de montage. Attention, une architecture 32 bits est requise pour pouvoir démarrer des instances de type Small.# aptitude update # aptitude install debootstrap # debootstrap --arch i386 lenny /mnt/amiMontage des pseudo systèmes de fichier :
# mount -t proc proc /mnt/ami/proc/ # mount -t devpts devpts /mnt/ami/dev/pts/Changement du répertoire racine vers le point de montage (chroot) et installation des packages nécessaires :
# chroot /mnt/ami # aptitude install udev libc6-xen sshConfiguration des points de montage dans
/etc/fstabtel que recommandé dans la documentation :/dev/sda1 / ext3 defaults 1 1 NONE /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 /dev/sda2 /mnt ext3 defaults 0 0 /dev/sda3 swap swap defaults 0 0Ajout des lignes suivantes au fichier
/etc/network/interfacespour configurer l'interfaceeth0en DHCP :auto lo eth0 iface lo inet loopback iface eth0 inet dhcpIl est également nécessaire d'ajouter sa clé SSH dans
/root/.ssh/authorized_keys, ou de définir un mot de passe pour le compte root.Enfin, quitter le chroot, et démonter l'image :
# /etc/init.d/ssh stop # exit # umount /mnt/amiGénération de l'image AMI
Pour la suite des opérations, il est nécessaire de télécharger et décompresser les Amazon EC2 API Tools et Amazon EC2 AMI Tools. On installe également les dépendances nécessaires.
# aptitude install ruby libopenssl-ruby unzip sun-java6-jre # EC2_AMI_TOOLS=ec2-ami-tools-1.3-XXXXX # EC2_API_TOOLS=ec2-api-tools-1.3-XXXXXIl faut également générer une clé et un certificat X.509, et faire pointer les variables d'environnements ci-dessous vers les fichiers téléchargés. Ceux-ci seront utilisés pour effectuer des requêtes vers les web services d'Amazon.
# EC2_PRIVATE_KEY=pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem # EC2_CERT=cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pemEnfin, noter son EC2 user ID, généralement visible en haut à droite des pages d'AWS.
# EC2_USER_ID=XXXX-XXXX-XXXXCréation de l'image AMI :
# export EC2_HOME=$EC2_AMI_TOOLS # $EC2_AMI_TOOLS/bin/ec2-bundle-image -i $EC2_AMI_NAME.img \ -k $EC2_PRIVATE_KEY -c $EC2_CERT -u $EC2_USER_ID -r i386Upload sur S3
Il faut maintenant télécharger l'image vers Amazon S3. Pour cela, il est nécessaire de récupérer son Access Key ID et sa Secret Access Key sur la page Security Credentials. Il faut également sélectionner la région où sera localisée l'instance (US ou EU), ainsi que la bucket S3 où sera stockée l'AMI.
# EC2_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXX # EC2_SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # EC2_REGION=EU # EC2_BUCKET=XXXXXXXX # $EC2_AMI_TOOLS/bin/ec2-upload-bundle -m /tmp/$EC2_AMI_NAME.img.manifest.xml \ -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY -b $EC2_BUCKET \ --location $EC2_REGIONEnregistrement de l'instance
Il est nécessaire de déclarer l'image à Amazon pour pouvoir l'instancier. L'option
--urlest nécessaire pour préciser que l'on s'adresse à la région Europe d'EC2.# export EC2_HOME=$EC2_API_TOOLS # export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.12 # $EC2_API_TOOLS/bin/ec2-register \ --url http://eu-west-1.ec2.amazonaws.com \ -n $EC2_AMI_NAME \ $EC2_BUCKET/$EC2_AMI_NAME.img.manifest.xmlLa commande retourne l'ID de l'AMI qui vient d'être enregistrée.
Instanciation
L'instanciation peut également se faire via une requête sur AWS :
# EC2_AMI_INSTANCE_ID=ami-XXXXXXXX # EC2_AKI=aki-7e0d250a # EC2_RAMDISK=ari-7d0d2509 # $EC2_API_TOOLS/bin/ec2-run-instances $EC2_AMI_INSTANCE_ID \ -K $EC2_PRIVATE_KEY \ -C $EC2_CERT \ --kernel $EC2_AKI --ramdisk $EC2_RAMDISK \ --region eu-west-1Le noyau utilisé (
aki-7e0d250a) est un2.6.21.7-2.fc8xen, suffisamment récent pour l'utilisation de udev. Ce n'est pas le cas du noyau par défaut.Connexion à la machine
Les instances créées peuvent être listées à l'aide de la commande suivante :
# $EC2_API_TOOLS/bin/ec2-describe-instances -K $EC2_PRIVATE_KEY \ -C $EC2_CERT --url http://eu-west-1.ec2.amazonaws.comParmi les informations obtenues, on peut notamment connaître le nom DNS public de l'instance créé, de la forme
ec2-XXX-XXX-XXX-XXX.eu-west-1.compute.amazonaws.com. A noter que ces informations sont également disponibles via l'interface web.Enfin, il ne reste plus qu'à se connecter avec le compte root à sa nouvelle machine !
Voici un récapitulatif de la mise en place des protocoles d'authentification SMTP DKIM et DomainKeys sous Debian Lenny. Le serveur de mail utilisé est Postfix, mais tout MTA sachant communiquer avec les milter de Sendmail peut normalement être utilisé. La signature et la vérification des messages sera effectuée pour le domaine
<domain>. Voici les étapes :Installation de
dkim-filteretdk-filter:# aptitude install dkim-filter dk-filterAjouter dans le fichier
/etc/dkim-filter.confun ensemble de directives indiquant le nom du domaine qui va utiliser DKIM, un nom de selector (exemple :2009), et le nom du fichier qui contiendra la clé privée utilisée pour la signature. L'utilisation des selector permet notamment de changer et/ou révoquer facilement une clé, ou d'utiliser des clés différentes sur des serveurs de mails différents.Domain <domain> KeyFile /etc/ssl/dkim_<domain>_<selector>.key Selector <selector>Générer la clé :
# openssl genrsa -out /etc/ssl/private/dkim_<domain>_<selector>.keyEt en extraire la partie publique :
# openssl rsa -in /etc/ssl/private/dkim_<domain>_<selector>.key \ -pubout -outform PEMDans la zone DNS du domaine
<domain>, ajouter l'enregistrement suivant. La valeur de<key>correspond à la sortie de la commande précédente, contenue entre les lignes_BEGIN PUBLIC KEY_et_END PUBLIC KEY_:<selector>._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=<key>"Ajouter les paramètres de démarrage de
dkim_filterdans/etc/default/dkim-filter. Le fichier/etc/dkim.hostscontient la liste des serveurs dont les mails sortants seront chiffrés :SOCKET="inet:2505@localhost" DAEMON_OPTIONS="-l -i /etc/dkim.hosts"Les paramètres de
dk-filter, dans/etc/default/dk-filter, sont similaires, à l'exception que tout est passé via les options, celui-ci n'utilise pas de fichier de configuration.DAEMON_OPTS="$DAEMON_OPTS -d <domain> -S <selector> -i /etc/dkim.hosts \ -s /etc/ssl/private/dkim_<domain>_<selector>.key" SOCKET="inet:2506@localhost"Puis les redémarrer :
# /etc/init.d/dkim-filter start # /etc/init.d/dk-filter startReste enfin à utiliser ces milter au niveau de Postfix, pour cela ajouter les directives suivantes au fichier
/etc/postfix/main.cf:milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:localhost:2505 inet:localhost:2506Et redémarrer Postfix :
# /etc/init.d/postfix restartUn test basique de fonctionnement est alors d'envoyer un mail à destination d'un domaine effectuant des vérifications DKIM,
yahoo.compar exemple.# nc 127.0.0.1 25 <<EOT HELO localhost MAIL FROM: root@<domain> RCPT TO: <account>@yahoo.com DATA Subject: Test DKIM . QUIT EOTLes signatures DKIM et DomainKeys sont correctement vérifiées si l'en-tête
Authentication-Resultscontientdkim=passetdomainkeys=pass.On peut également envoyer un mail à destination de son domaine, et vérifier que l'en-tête
Authentication-Resultsest bien ajoutée, et valide.
Voici un résumé de la mise en oeuvre de multiples instances MySQL sur un
serveur Debian, à l'aide de l'outil mysqld_multi. Cette solution permet par
exemple d'offrir un accès complet à MySQL dans le cadre d'un hébergement
mutualisé (l'utilisateur peut alors créer ses propres bases, gèrer ses
utilisateurs, etc). Cela peut être aussi utilisé pour cloisonner totalement les
bases de données de différentes applications, et ainsi d'ajuster finement des
paramètres tels quemax_connectionspour chacune d'elles.Voici les étapes :
- Ajouter une ou plusieurs sections
[mysqldN]dans/etc/mysql/my.cnf, où N
correspond au numéro d'instance, et<instance>à son nom.[mysqldN] user = mysql-<instance> port = 3307 socket = /var/run/mysqld-<instance>/mysqld.sock pid-file = /var/run/mysqld-<instance>/mysqld.pid datadir = /home/mysql/<instance>Si vous utilisez les options
--log,--log-binou--log-error, il est
nécessaire de les redéfinir dans chaque configuration d'instances (voir
Running Multiple MySQL Servers on the Same Machine).Note : pour faire tourner l'instance avec un utilisateur différent (comme dans
cette exemple) il est à priori nécessaire de commenter le paramètreuser = mysqldans
la section[mysqld]dumy.cnf, sinonmysqld_multiretourne une erreur :Ignoring user change to 'mysql-<instance>' because the user was set to 'mysql' earlier on the command lineDécommenter ce paramètre ne gène pas le lancement de l'instance initiale.
- Créer le compte système qui fera tourner l'instance.
useradd -r mysql-<instance>
- Créer le répertoire de données de l'instance, et les répertoires annexes.
mysql_install_db --datadir=/home/mysql/<instance> chown -R mysql-<instance> /home/mysql/<instance> mkdir /var/run/mysqld-<instance> chown mysql-<instance> /var/run/mysqld-<instance>
- Démarrage de l'instance
mysqld_multi --verbose --no-log start NOù N fait référence au numéro de l'instance.
Il est maintenant possible de s'y connecter en utilisant le numéro de port
TCP/IP spécifié plus haut, et en saisissant un mot de passe vide :mysql -h 127.0.0.1 --port=3307 -u root -pSi vous choisissez d'utiliser un mot de passe
rootcommun à toutes vos
instances, vous trouverez pratique d'ajouter la section suivante à votre
fichier.my.cnf:[mysqld_multi] user = root password = "<password>"Enfin, voici un exemple de script d'init permettant de démarrer et d'arrêter
proprement toutes vos instances :#!/bin/sh case "$1" in start) mysqld_multi start ;; stop) mysqld_multi stop ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
J'ai eu récemment l'occasion de migrer des comptes stockés dans une base de
données PostgreSQL vers OpenLDAP. Les mots de passe étaient stockés sous forme
de hash MD5 au format hexadécimal.f71dbe52628a3f83a77ab494817525c6par
exemple.Ma première approche a été d'importer directement cette valeur dans le champ
userPassworden les préfixant de{MD5}. En effet OpenLDAP gère de
manière transparente de nombreux formats de mot de passe.Malheureusement ceci ne marche pas. Les MD5 doivent être stockés sous forme
hexadécimal dans OpenLDAP. Voici le bout de code Perl permettant la conversion,
que j'ai mis un certain temps à écrire :use MIME::Base64; my $md5_hexa = "f71dbe52628a3f83a77ab494817525c6"; my $md5_base64 = "{MD5}".encode_base64(pack("H*", $md5_hexa), "");
Le serveur
dhcpd(8)d'OpenBSD dispose d'une fonctionnalitée permettant
d'alimenter des tablespf(4)lorsque certains évènements se produisent : bail
DHCP établi, adresse IP «abandonnée», changement d'adresse MAC.Cela peut permettre par exemple de bloquer l'accès à un routeur à des machines
n'ayant pas obtenu leurs adresses IP par DHCP.Lors d'une tentative de mettre ça en place il y a quelques mois je ne parvenais
pas du tout à le faire marcher : les tables n'étaient jamais remplies !
J'ai découvert il y a peu la réponse : cela ne fonctionne pas pour des machines
dont l'adresse IP est fixée à l'aide d'une directivefixed-addressdans
dhcpd.conf. Et de plus le fichierdhcpd.leasesn'est pas non plus alimenté
pour ces machines.
Le fichier
/etc/fstabaprès une installation standard de Debian utilise
directement des noms de partitions sous la forme/dev/sda2par exemple.Or, la connexion d'un périphérique (clé USB, baie de disque, etc.), peut
potentiellement décaler votre disque principal en/dev/sdb, le périphérique
fraîchement connecté utilisant/dev/sda. Ceci rend alors votre système
impossible à démarrer correctement.Une solution est alors d'utiliser le nommage UUID fourni par
udev(7).
Chaque partition dispose dans/dev/disk/by-uuidd'un lien symbolique
pointant vers elle-même :/dev/disk/by-uuid/1351bbd0-e931-47a0-b528-be33d135d35a -> ../../sda2Udev fourni par défaut une notation raccourcie permettant de spécifier des
entrées dans/etc/fstabde la forme :UUID=1351bbd0-e931-47a0-b528-be33d135d35a / ext3 ...Toutefois si vous utilisez Debian Etch et l'option
userdu fichierfstab,
vous allez certainement rencontrer des problèmes au démontage de vos partitions
avec un utilisateur non privilégié (#466775).
La solution est alors d'utiliser le chemin complet :/dev/disk/by-uuid/1351bbd0-e931-47a0-b528-be33d135d35a / ext3 ...Ce qui après tout est plus UNIX.
Note : Si les périphériques swap n'apparaissent pas dans
/dev/disk/by-uuidil
faut les reformater. Par exemple pour la partition swap/dev/sda7:swapoff /dev/sda7 mkswap /dev/sda7 blkid /dev/sda 7 # retourne l'UUID
La commande dhclient(8) dispose d'un fichier de configuration : dhclient.conf(5).
Celui-ci permet notamment de configurer la requête DHCP envoyée au serveur, par exemple la directive
send dhcp-requested-address 10.0.1.1permet de demander cette adresse IP au serveur, qui nous
l'affectera si elle est disponible.Autre possibilité intéressante, celle de spécifier un autre dhclient-script(8). Ce script est invoqué par dhclient
pour effectuer la configuration réseau de la machine après avoir interrogé le serveur DHCP. Il est alors
possible à des fins de débuggage de modifier la fonctionadd_new_address()afin d'afficher l'adresse IP qui
aurait été affecté, sans l'affecter rééllement.
En réponse à la faille critique DSA-1571 parue aujourd'hui :
Voici un résumé rapide de certaines opérations urgentes à effectuer ( liste non exhaustive ).
Pour plus d'informations vous pouvez consulter la page dédiée sur wiki.debian.org.Mettre à jour le système
aptitude update && aptitude upgradeRegénerer la clé du serveur OpenSSH
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa /etc/init.d/ssh restartRegénerer vos propres clés
A faire sur un système à jour bien sur.
Supprimer les clés utilisateurs impactées
Un script fourni par Debian permet de les détecter : http://security.debian.org/project/extra/dowkd.
Attention l'auteur signale que celui-ci peut donner des faux positifs ou des faux négatifs.Ensuite vous pouvez lancer par exemple :
for i in /root/.ssh/authorized_keys /home/*/.ssh/authorized_keys; do perl ./dowkd.pl file $i; doneRegénerer vos certificats SSL
Pour votre serveur mail, web, VPN,...
J'ai eu récemment à installer la bibliothèque tomcat-native à la demande d'un client d'Evolix.
N'étant pas expert Java/Tomcat je sais juste ce que la page officielle décrit : gain de performance,
une meilleure génération des ID de sessions et certaines fonctionnalités de monitoring.De plus cela fait disparaitre le message suivant au démarrage de Tomcat :
catalina_2008-04-18.log:INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-1.5.0...Voici une copie brute de mes notes d'installation sur un système Debian Etch :
$ cd $HOME/tmp $ sudo aptitude install libapr1-dev autoconf $ wget http://tomcat.heanet.ie/native/1.1.9/source/tomcat-native-1.1.9-src.tar.gz $ tar zxvf tomcat-native-1.1.9-src.tar.gz $ cd tomcat-native-1.1.9-src/jni/native/ $ apt-get source libapr1 $ sh buildconf --with-apr=./apr-1.2.7/ $ ./configure --with-apr=/usr/bin/apr-config --with-ssl=/usr/include/openssl --with-java-home=/usr/lib/jvm/java-1.5.0-sun $ make $ sudo cp .libs/libtcnative-1.so.0.1.3 /usr/lib/jvm/java-1.5.0-sun-1.5.0.14/jre/lib/i386/libtcnative-1.so $ sudo /etc/init.d/tomcat5.5 restartNote : l'installation d'une version <1.1.4 avec la version de Tomcat de Debian Etch provoque un message d'erreur.
Il ne me reste plus qu'à en faire un package afin de pouvoir installer ça proprement.
J'ai rencontré quelques soucis ces jours-ci après des mises à jour de ports FreeBSD. J'ai utilisé comme à mon habitude la commande
portupgrade -arRe.
- J'avais modifié le script
/usr/local/etc/rc.d/milter-greylistafin que milter-greylist s'exécute en tant qu'utilisateur postfix (et non pas mailnull comme c'est le cas par défaut). Cela permet notamment que la socket qu'il crée puisse être utilisable par postfix. J'ai été étonné de voir que la mise à jour a écrasé ce script et a donc rendu le milter indisponible (rien de bien grave, quelques spams reçus avant rétablissement de la situation). Je pensais, peut-être naïvement, qu'un fichier dans/usr/local/etcne pouvait pas être écrasé sans avertissement.
- Dans le même genre une mise à jour de Roundcube a écrasé ses fichiers de configuration présents dans /usr/local/www/roundcube/config. Conséquences un peu plus graves : webmail indisponible.
Reste à trouver comment cela aurait pu être évité.
Comme vous pouvez facilement le voir j'ai fait le choix du moteur de blog Chronicle.
Etant tout à fait novice dans l'univers du blogging j'avais tout d'abord installé Wordpress, qui a l'air très bien, mais que j'ai jugé finalement trop lourd : base MySQL et beaucoup de code PHP.
Je me suis alors orienté vers Blosxom, qui a l'énorme avantage de stocker ses données dans de simples fichiers texte. Parfait pour un adepte de Subversion comme moi.
Néanmoins quelques soucis m'ont poussé à l'abandonner, notamment le fait que celui-ci se base sur la date de dernière modification des fichiers pour déterminer la date d'une entrée de blog, ce qui ne me convient pas. Je suis certain qu'il existe un plugin (Blosxom étant particulièrement modulaire) pour remédier à cela mais je ne l'ai pas trouvé en temps voulu malheureusement.
Finalement je suis tombé ce matin même sur chronicle, qui est très simple, permet de spécifier quelques meta-informations dans le fichier de données, et gère de base les quelques fonctionnalités indispensables qu'il me fallait. Je n'ai rencontré pour l'instant que quelques petites soucis : il n'est à priori pas internationalisable (un peu génant pour les dates), et ne permet pas de spécifier un encodage pour le plugin Textile que j'utilise (et je suis totalement converti à l'UTF-8). Il ne me reste donc plus qu'à faire remonter quelques patch à l'auteur.
De toute manière rien n'est figé et il me suffira de quelques lignes de perl pour passer à un autre moteur si celui-ci ne me convient plus !
Debian a son wget, FreeBSD son fetch, et j'ai cru pendant longtemps que le seul moyen simple de récupérer un fichier via HTTP à partir d'un système de base OpenBSD était d'utiliser lynx.
Ce qui n'était pas très pratique car cela force de passer par un mode interactif (sauf option appropriée, mais j'avoue n'avoir jamais pris le temps de parcourir toute la page de man).
J'apprend aujourd'hui que l'outil ftp d'OpenBSD, comme son nom ne l'indique pas, gère aussi HTTP et HTTPS !
Exemple : ftp http://openbsd.org/index.html
Et bien voila, c'est fait, j'ai ouvert mon blog.
Je traiterais ici principalement des sujets techniques auquels je suis confronté lors des projets
professionnels auquels je participe au sein de la société Evolix, ou de mes projets personnels/associatifs
au sein de l'association Oopss.org.Si vous avez suivi les liens ci-dessus vous avez normalement compris que les thèmes abordés seront principalement liés au Logiciel Libre et à l'administration système et réseau.
A bientôt !
Archive
- 2010
- 2009
- 2008