Tags

arm bin_sh blocage blosxom bsd bsdfrance cblog certification chroot cluster dg834 dhcp dns dnsmasq dovecot fail-over fail2ban firefox freebsd ftp git guruplug install ipv6 jail kernel kimsufi lex libre linutop makefile ml150 mohawk netbook netbsd nginx ntp ntp.org openbsd openntpd openrd openwrt pkgng poudriere proxy python reverse rmll route rrdcgi sendmail sieve sl2009 ssd symon update usb var_empty vimperator world xen yacc zfs

Powered by

blOg
maRkdown
awK
shEll

18/05/2012

[ ml150 poudriere pkgng ]

201205181000 ml150 poudriere pkgng

Welcome ml150

J'ai l'honneur de vous présenter mon nouveau dédié, un joli HP ML150 G3 de récupération. Il ne tient pas la comparaison avec les machines actuelles mais comparé à ce bon vieux Kimsufi première génération, c'est le jour et la nuit. Petit aperçu:

dsx@ml150>sysctl hw.model hw.ncpu hw.physmem kern.disks
hw.model: Intel(R) Xeon(R) CPU            5110  @ 1.60GHz
hw.ncpu: 4
hw.physmem: 2125123584
kern.disks: da1 da0 ada1 ada0
dsx@ml150>zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
zroot   696G  1.84G   694G     0%  1.00x  ONLINE  -
zscsi   278G  2.55G   275G     0%  1.00x  ONLINE  -

FreeBSD 9.0">, ZfsOnRoot, poudriere et pkgng sont de la partie. J'en profite pour remercier bapt pour tout son travail qui rend FreeBSD si beau, si poilu, si soyeux.

Des petits nouveaux ont fait leur appartition:

Installation

J'ai suivi cet excellent article en simplifiant le découpage (étape 6). Parfois on en vient à se demander à quoi peut bien servir un installeur :)

Configuration

Comme d'habitude, je vais user (et abuser) des jails. Une ipv4, un block ipv6/64, une jail par service (ns, smtp, proxy, www), un /etc/pf.conf pour contrôler le tout.

poudriere et pkgng

Après quelques semaines d'utilisation, plus question de me passer de ce duo de choc ! L'un construit les 'packages', l'autre les installe. Le tout est clairement expliqué ici. Pour ma part, je n'ai pas installé l'arbre des ports, j'ai récupéré le tgz de poudriere:

poudriere étant composé de scripts shell, un simple make install fait l'affaire. Je ne vais pas détailler le contenu de /usr/local/etc/poudriere.conf ni celui de /root/etc/poudriere_ports.conf (qui contient uniquement la liste des packages à générer).

Une fois l'arbre des ports (poudriere ports -c) et la jail (poudriere jails -c -j 90amd64 -v 9.0-RELEASE -a amd64) créés, on peut commencer la construction de nos packages. Le premier sera bien évidemment pkgng :) Il suffit de ne préciser aucune option dans /usr/local/etc/poudriere.d/90amd64-make.conf, d'avoir un /root/etc/poudriere_ports.conf comportant une seule entrée:

# cat /root/etc/poudriere_ports.conf
ports-mgmt/pkgng
# poudriere ports -u
# poudriere bulk -f /root/etc/poudriere_ports.conf -j 90amd64
# pkg_add /poudriere_data/packages/90amd64-default/Latest/pkg.tbz

Notre hôte est désormais pkgngisé. Garder une copie de /poudriere_data/packages/90amd64-default/Latest/pkng.tbz peut être utile (pour installer pkgng sur une autre machine ou dans une jail par exemple). On peut enfin préciser que tous nos packages seront au format pkng:

# echo 'WITH_PKGNG="YES"' >> /usr/local/etc/poudriere.d/90amd64-make.conf 

L'hôte doit se mettre à jour à partir de /poudriere_data/packages/90amd64-default:

# echo 'packagesite: file:///poudriere_data/packages/90amd64-default' >> /usr/local/etc/pkg.conf

Il est temps de passer aux choses sérieuses:

# cat /root/etc/poudriere_ports.conf
ports-mgmt/pkg
ports-mgmt/poudriere
security/sudo
sysutils/tmux
editors/vim-lite
net/rsync
dns/nsd
dns/dnsmasq
devel/libevent2
devel/fossil
www/nginx
mail/dovecot2
mail/dovecot2-pigeonhole
# poudriere ports -u
# poudriere bulk -f /root/etc/poudriere_ports.conf -j 90amd64
# pkg update
# pkg upgrade

Pour mettre à disposition tous ces beaux packages, il nous faut un serveur http léger, performant, à la syntaxe claire (oui je prosel et alors ?)

# cat /home/dsx/etc/poudriere.mohawk
mime_type {
  bz2   application/x-bzip2
  gz    application/x-gzip
  gzip  application/x-gzip
  tar   application/x-tar
  tgz   application/x-compressed
  xz    application/x-compressed
  zip   application/x-compressed
}

vhost default { 
  listen on lo1
  rootdir /poudriere_data/packages/90amd64-default
}

Jails

Je n'étais pas très content de mk_template et mk_jail. Bienvenue à zail (jail but zfs, à prononcer avec un cheveu sur la langue ou un poil dans la main), un script sans prétention mais qui fait le travail:

Si la création d'un template prend quelques secondes (le détar des 57Mo de base.txz), celle d'une jail est quasi instantanée (2s max):

# ./zail template -f zail.conf
[ snip création template mode debug ]
# ./zail template -f zail.conf -D
[ snip création du template ]
# ./zail jail -f zail.conf -n www
[ snip création jail 'www' basée sur le template zail.conf mode debug ]
# ./zail jail -f zail.conf -n www -D
[ snip création de la jail ]

Bien sûr, toutes ces jails sont pkgngisées :)

Blog

L'idée m'est venue alors que je codais zail. Du statique, pas (encore) de commentaires, minimaliste. Les plus curieux jetteront un oeil à l'archive. Le principe est assez simple:

Les billets commencent tous par:

###### YYYYMMDDhhmm tag1 tag2 ... tagn
# Titre du billet

Mohawk

Grande nouveauté: la dépendance à libevent2. Ce choix a été motivé par le fait d'être un peu plus portable et de simplifier le code de gestion des évènements (qui n'était pas un modèle du genre dans mohawk 1). Un autre logiciel partage cette dépendance: tmux. Cette nouvelle version amène son lot d'amélioration: listen par vhost, clone de vhost etc. Je ne détaille pas plus, je dois mettre à jour le site web.

Conclusion

J'espère que cette nouvelle machine me rendra autant de bons et loyaux services que ce vénérable kimsufi. Je lui souhaite 'bon vent, belle mer'.

Update: merci bapt pour toutes les remarques :) J'espère avoir tout fixé.

Update 2: bapt vient de simplifier le téléchargement de poudriere: poudriere current


Lien vers ce billet