(IT & RPG) Tribulations - Informatique
Information Technology and Role-Playing Games (mainly) adventures, and a couple rants.
2024-02-15T08:24:19+01:00
low
urn:md5:221b97a7747cac9c71176bf9fe459b41
Dotclear
lw-homelab-01 step 0
urn:md5:909d9c02d832aa4647399a9885146ee9
2023-08-10T11:46:00+02:00
2023-09-01T12:02:31+02:00
low
Informatique
<p>Machines are at home. You won't get some unboxing nor video about these. There are more than enough tutorials on the internet if you need to learn about how to change/add RAM dimms to a PC.<br />
While I'm at it, here begin problems. 2×4GB setup is OK. 1×8 and 2×8GB setups don't post/boot. I've taken a look at BIOS changelog, nothing about RAM compatibility…does not work with latest BIOS applied either. Oh well. I’ll get rid of these PNY DIMMS and get some others later.<br />
I’ve decided to overhaul my usual set of programs. Exit good old <a href="https://www.gnu.org/software/screen/" hreflang="en" title="GNU Screen">Screen</a>, welcome <a href="https://zellij.dev/" hreflang="en" title="Zellij">Zellij</a> ! Yes, GNU Screen works perfectly well. I’m just challenging my habits not to get (too) lazy. I’ve never fully dived into VS Code mastery, as I’m not that much into dev. I’ve read about <a href="https://helix-editor.com/" hreflang="en" title="Helix editor">Helix</a> and decided to take a dive. It’s infinitely more lightweight than VS Code. A bit less powerful (I can’t yet get ansible-language-server to help with autocompletion as I type, for example), but I love being able to do everything without leaving the keyboard. I’m about to use <a href="https://github.com/extrawurst/gitui" hreflang="en" title="GitUI">gitui</a> too, once I get my current project in an acceptable form enough to get its first commit.<br />
Current project ? Isn’t it the homelab deployment & automation ? Well. Yes. But my new dev env is part of it. So I’m ansible-ing that env deployment and configuration. That’s step 0.
Next step is gateway/firewall/Tinkerbell configuration. I'm wondering about making this setup <a href="https://en.wikipedia.org/wiki/IPv6_address" hreflang="en" title="Internet Protocol Version 6">IPv6</a> only. I've never dived into it, that looks like an opportunity ! If time runs low, I’ll do a classical <a href="https://en.wikipedia.org/wiki/Network_address_translation" hreflang="en" title="Network Address Translation">NAT</a>/PAT <a href="https://en.wikipedia.org/wiki/Internet_Protocol_version_4" hreflang="en" title="Internet Protocol Version 4">IPv4</a> setup.<br />
That’s it for today.</p>
Tinkerbell
urn:md5:ed970f352ee7d1994496475e760d38f3
2023-07-27T08:31:00+02:00
2023-07-31T07:17:20+02:00
low
Informatique
<p>The <a href="https://www.quelquesmots.fr/dotclear/index.php?post/2012/11/21/Zotac-zbox-nano-AD10-received-and-installed-%21" hreflang="fr" title="Zotac zbox nano AD10">Zbox nano</a> is still alive.<br />
I've installed (manually…the only non-automated thing to be done in this project, minus the configuration of the… configuration manager) a fresh Debian 12.1 AMD64 on it. Wireless network interface is connected to ISP modem/router. Gigabit ethernet network interface is linked to the LAN part of the old & small & unsupported switch/router/firewall talked about in the previous post. WAN port won't be used.<br />
Tinkerbell machine will act as Tinkerbell server (oh, Hi Captain Obvious !), network gateway and firewall.<br />
Joke of the day is…Debian does not package Salt, and Salt repository only offers support for 10 and 11 versions for now. Oh well, we'll use Ansible. And <em>not</em> AWX. Why ? <em>Easy</em> install is a Docker/k8s/openshift beast. That's a bit too much to my taste. But, I've stumbled upon <a href="https://www.ansible-semaphore.com/" hreflang="en" title="Ansible Semaphore">Ansible Semaphore</a> which looks pretty sweet, and there are simple installation options. So let's give it a try. It'll run on the Tinkerbell machine<br />
SFF Lenovo machines have been delivered close to home, but I won't be back at home until this sunday, so don't expect news until next week at best.</p>
Homelab
urn:md5:14fd1621acf5ac553660391ea6e396d6
2023-07-22T15:16:00+02:00
2023-07-22T14:17:50+02:00
low
Informatique
<p><em>French content below</em><br />
Yes I’m still alive. Things have changed about almost everything in my life, but that’s not the point of that post. Let’s talk a bit about…hardware.<br />
I’ve opened my purse to buy some hardware. I could have tried to virtualize everything on my (once) proud <a href="https://www.techpowerup.com/cpu-specs/phenom-ii-x6-1055t-95w.c675" hreflang="en" title="AMD Phenom II X6 1055T">AMD Phenom II X6 1055T</a> along with its 24GB RAM, but it may feel a bit too much constrained and slow for what I envision.<br />
So I’ve bought 4 refurb Lenovo ThinkCentre M715Q Tiny (can’t tell yet if it’s <a href="https://psref.lenovo.com/syspool/Sys/PDF/ThinkCentre/ThinkCentre_M715_Tiny/ThinkCentre_M715_Tiny_Spec.PDF" hreflang="en" title="Lenovo ThinkCentre M715 Tiny">gen1</a> or <a href="https://psref.lenovo.com/syspool/Sys/PDF/ThinkCentre/ThinkCentre_M715_Tiny_2nd_Gen/ThinkCentre_M715_Tiny_2nd_Gen_Spec.pdf" hreflang="en" title="Lenovo ThinkCentre M715 Tiny 2nd Gen">gen2</a> as it’s still transiting as I type) sporting an <a href="https://en.wikipedia.org/wiki/Socket_AM4" hreflang="en" title="Socket AM4">AM4 socket</a> with a <a href="https://www.cpu-world.com/CPUs/Bulldozer/AMD-A10-Series%20PRO%20A10-8770E.html" hreflang="en" title="AMD A10-8770E">35W AMD A10-8770E</a> cpu, 1×4GB DDR4 RAM, and 128GB NVMe SSD for 55€ each shipping included, that is 220€ total. I also bought 2 RAM kits, 2×8GB DDR4-2400 so-dimm to pimp things up a bit (4 and 16GB dimm prices aren’t the sweet spot these days). So I will end up with 2 M715Q with 2×4GB RAM, and 2 with 2×8GB. 60€ shipping included for these. Grand total, 280€. An <a href="https://www.netgear.com/support/product/fvs318g" hreflang="en" title="Netgear FVS318G">old & small & unsupported 8+1 1gbps ports firewall/router/switch</a> and a couple cables were sleeping in a drawer, so we’re covered here (no, this <em>won't</em> be directly connected to the internet).<br />
For sure, these are far from high-end hardware. but 4 machines, 16 (quite slow, ok) cores, 48GB RAM looks more than enough to me to be able to run quite a lot of stuff. Storage is on the low side, but enough for experimentations. Easily upgradable for (real) cheap if needed. So, let's run sweet things. OK, but which sweet things ?<br />
Why not a (little) <a href="https://about.gitlab.com/" hreflang="en" title="GitLab">GitLab</a>/<a href="https://github.com/" hreflang="en" title="GitHub">GitHub</a> clone ? Git repo, some CI/CD, code coverage, you name it. <a href="https://about.gitea.com/" hreflang="en" title="Gitea">Gitea</a> looks like a good candidate. (This is a first idea out of the blue. Others may be a reason to try different technologies later on)<br />
Next question is, how to run it ?</p>
<ul>
<li>Pure <a href="https://www.docker.com/" hreflang="en" title="Docker">Docker</a> ? Not « complicated » enough, and would not take advantage of the four machines. Docker swarm is a dying technology (if not already dead), so it's a no go.</li>
<li>How about a <a href="https://www.proxmox.com/en/" hreflang="en" title="PVE">Proxmox Virtual Environment</a> Cluster ? In a <a href="https://en.wikipedia.org/wiki/Virtual_machine" hreflang="en" title="virtual machine">VM</a> ? As hardware isn’t the fastest on earth, being closer to the <a href="https://en.wikipedia.org/wiki/Bare-metal_server" hreflang="en" title="bare metal">bare metal</a> is welcome, so a container looks like the solution. Proxmox Virtual Environment supports <a href="https://en.wikipedia.org/wiki/LXC" hreflang="en" title="LXC">LXC</a>. I’m already used to PVE, so that should be quite easy. But I won’t learn much then…hmmmmmmm.</li>
<li><a href="https://kubernetes.io/" hreflang="en" title="Kubernetes">Kubernetes</a> ? Hype, fluff, heavy, complicated. I’ve worked a bit in K8S environment, but never deployed it by myself. Why not.</li>
<li><a href="https://www.nomadproject.io/" hreflang="en" title="Nomad">Nomad</a> ? From <a href="https://www.hashicorp.com/" hreflang="en" title="HashiCorp">HashiCorp</a>. You know, the <a href="https://www.hashicorp.com/products/terraform" hreflang="en" title="Terraform">Terraform</a>, <a href="https://www.hashicorp.com/products/packer" hreflang="en" title="Packer">Packer</a>, <a href="https://www.hashicorp.com/products/vault" hreflang="en" title="Vault">Vault</a>, <a href="https://www.hashicorp.com/products/consul" hreflang="en" title="Consul">Consul</a>, and also <a href="https://www.vagrantup.com/" hreflang="en" title="Vagrant">Vagrant</a> (etc) guys. (No, this post is not sponsored, I have no shares, and I’m not seeking a new job there). Despite their obvious success, I’ve never really worked nor deployed their solutions. I think we have a winner for that project.</li>
</ul>
<p>Now, How will we deploy the four machines ? I have absolutely no desire to install 4 <a href="https://en.wikipedia.org/wiki/Operating_system" hreflang="en" title="Operating System">OSes</a> by hand.</p>
<ul>
<li><a href="https://maas.io/" hreflang="en" title="Metal-As-A-Service">MAAS</a> from <a href="https://canonical.com/" hreflang="en" title="Canonical">Canonical</a> (you know, the <a href="https://ubuntu.com/" hreflang="en" title="Ubuntu">Ubuntu</a> guys) will definitely do the trick. But I already know this tool. Next.</li>
<li><a href="https://tinkerbell.org/" hreflang="en" title="Tinkerbell">Tinkerbell</a>. Can be deployed with Terraform and Vagrant. Will need to dive deeper into documentation, but it looks like a potential candidate. I may clean the dust on my old <a href="https://www.quelquesmots.fr/dotclear/index.php?post/2012/11/21/Zotac-zbox-nano-AD10-received-and-installed-%21" hreflang="fr" title="Zotac zbox nano AD10">Zotac zbox nano AD10</a> (french only, sorry about that) to make it run Tinkerbell instead of running it on my Phenom II. Agreed, <a href="https://www.amd.com/en/product/5581" hreflang="en" title="AMD E-350">AMD E-350</a> is <del>a bit</del> slow, but sucks less power than my desktop with its Radeon RX 560 and a couple SATA SSD.</li>
<li>And it looks like that’s about it (even though I haven’t dig though the whole internet). A couple others smells too much proprietary/behind registration to my taste. So we’ll go with Tinkerbell to deploy the cluster.</li>
</ul>
<p>What about configuration management ?</p>
<ul>
<li><a href="https://www.ansible.com/" hreflang="en" title="Ansible">Ansible</a> ? I’ve used ansible quite a bit, and like it a lot. It’s a bit verbose, but works fine. Running it along <a href="https://www.ansible.com/community/awx-project" hreflang="en" title="AWX project">AWX</a> would be a first to me. I must admit I’m (very) tempted by this idea. (Please don't boo me, available hours for geeky things are sparse, I can't afford weeks on learning about a single software)</li>
<li><a href="https://en.wikipedia.org/wiki/CFEngine" hreflang="en" title="CFEngine">CFEngine</a>. (Too much) <a href="https://cfengine.com/community-vs-enterprise-comparison/" hreflang="en" title="Enterprise vs community version features">castrated</a> community version. Next.</li>
<li><a href="https://en.wikipedia.org/wiki/Progress_Chef" hreflang="en" title="Progress Chef">Progress Chef</a>. Hmmmm. Community version of Infra Server proposes packages for only already EOL’ed or soon to be OSes. Next.</li>
<li><a href="https://www.puppet.com/" hreflang="en" title="Puppet">Puppet</a> is well known in the automation domain. But it’s a beast in itself to learn. But a nice skill to have. <a href="https://en.wikipedia.org/wiki/Perforce" hreflang="en" title="Perforce">Perforce</a> is pushing its enterprise version, hiding a bit the « Open Source Puppet » as they name it behind registration, even though GitHub repo is available. Grmbl. Well. <em>maybe</em>.</li>
<li><a href="https://en.wikipedia.org/wiki/Salt_(software)" hreflang="en" title="Salt">Salt</a> is another player in the automation field. Just discovered it’s been acquired by VMware, and thus Broadcom. <em>sigh</em>. Moreover, a company I worked for a couple years ago got rid of Salt to embrace Ansible. These are two points not to forget. Salt looks sexy anyway. OK, it may be used instead of Ansible+AWX. We'll see. (Yes, I'm undecided at that point)<br /></li>
</ul>
<p>I’ll try to make a post with every important step of the experiments, so knowledge is shared. Geeky things may even end up in a forge so it can be reused and enhanced by you, reader.<br />
<br />
J’ai déjà mis bien trop longtemps à fouiller le web et rédiger la version en anglais, il faudra vous en contenter, désolé…</p>
BIOS, UEFI, and Gigabyte Radeon RX460 Windforce OC 4G
urn:md5:e3f3a075336e2d05e2f0fefeac76ac7f
2017-04-12T23:25:00+02:00
2017-04-12T22:29:33+02:00
low
Informatique
<p>(la version française se trouve plus bas).</p>
<p>OK, let’s make it quick: if you own a motherboard with a classic BIOS, beware, your RX4?0 is likely not to work properly. Machine boots fine, but OS freezes at boot, black screen when graphics initialization does start. The card is fine (tested on a newer mobo with UEFI).<br />
Some details: ASRock N68C-S UCC (BIOS), does not work. ASRock 970 Pro3 (UEFI), works. Some B350 mobo (can’t find exact reference right now), with UEFI, works fine.<br />
Of course, that may be wrong and due to a bug somewhere, but it seems I’m not the only one having such a problem. Your favorite search engine will tell you more.<br />
Brands are property of their respective owners, ™©® you name it.<br />
PS: Of course, we’re talking about GNU/Linux OS here, no fscking idea about MS or Fruit behaviour, and I honestly don’t mind.</p>
<p>Faisons la courte: si vous possédez une carte-mère disposant d’un BIOS classique, soyez vigilant, il est possible (voire probable ?) que votre RX4?0 ne fonctionne pas correctement. La machine démarre normalement, puis vous obtenez un écran noir à l’initialisation graphique. La carte fonctionne correctement (testée sur une carte-mère récente disposant de l’UEFI).<br />
Quelques détails: Cela ne fonctionne pas avec une ASRock N68C-S UCC (disposant d’un BIOS). Cela fonctionne avec une ASRock 970 Pro3 (UEFI), et une carte récente à base de B350 dont je n’ai pas la référence sous la main.<br />
Bien sûr, cette généralisation peut s’avérer fausse et être due à un bug de la carte N68C. En tout cas, votre moteur de recherche préféré vous en dira plus, il semblerait que je ne sois pas le seul à avoir croisé ce problème.<br />
Les marques citées appartiennent à… vous connaissez la suite.<br />
PS: Bien sûr, il est question de système d’exploitation GNU/LInux ici, je n’ai pas la moindre idée de ce qu’il en est des logiciels de MS ou Fruit, et je n’en ai cure.</p>
Odroid XU4
urn:md5:55c4695a4256acb1006d0c291146ef0a
2017-01-30T17:31:00+01:00
2017-02-19T22:58:10+01:00
low
Informatique
<p>(La version française se trouve plus bas)</p>
<p>For those (if any) following that overly active blog, you do know I own a <a href="https://www.zotac.com/us/product/mini_pcs/ad10" hreflang="en" title="Zotac Zbox Nano AD10">Zotac Zbox Nano AD10</a>, acting as a backup for my <a href="https://www.postgresql.org/" hreflang="en" title="PostgreSQL">PostgreSQL</a> instance, for my personal cloud data…sweet little beast. Not the fastest on earth for sure, but it’s fast enough given my not so high speed internet connection at home.<br />
Nevertheless, I’ve been thinking for a little while about getting another little toy. People at work would love to have some more horsepower, but we’re stuck when it comes to power consumption in our mutualized datacenter, so we can’t expand our current cluster (moreover, budget is not there). So we’d need to get some silent, cheap, small boxes that could be installed in our offices. <a href="https://en.wikipedia.org/wiki/X86-64" hreflang="en" title="X86_64">X86_64</a> compatibility would be a plus, as existing codes won’t have to be ported and results verified. Our typical tasks do require a bit of RAM too. Anyway, I was fairly curious about running some <a href="https://en.wikipedia.org/wiki/ARM_architecture" hreflang="en" title="ARM">ARM</a> <a href="https://en.wikipedia.org/wiki/Single-board_computer" hreflang="en" title="SBC">single board computer</a>. I own a smartphone running you know what on an ARM chip, but it’s not that close to a real computer, tiny or not. Low cost X86_64 SBCs do have a processing power quite close to my venerable <a href="https://en.wikipedia.org/wiki/Advanced_Micro_Devices" hreflang="en" title="Advanced Micro Devices">AMD</a> E-350. ARM devices typically offer less RAM, very low power consumption, more cores, for a processing power roughly comparable to these low-end X86_64 SBCs, and globally at a smaller price.<br />
So I dived into it (actually it’s on its way from the reseller), and bought an <a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G143452239825" hreflang="en" title="Odroid XU4">Odroid XU4</a>. Pros: « fast » 64 bits CPU, <a href="https://en.wikipedia.org/wiki/MultiMediaCard" hreflang="en" title="eMMC">eMMC</a>, micro-SDXC, USB3, gpbs eth, relatively inexpensive. Cons: only 2GB of RAM, no SATA, no wifi, thermal throttling under load, closed GPU driver (grmbl ARM !). But for my need, gpbs eth is fine, a USB3 to SATA bridge will do the trick. Once I’ll find a nice inexpensive way to cool down the CPU enough so it does not throttle under long and heavy loads (a pity to have 4 2ghz cores going down to 1.3ghz due to heat even with a heatsink and rad…), I’ll be able to benchmark that little box against some scientific codes. And see how it compares to low cost low power x86_64. Following results, potential porting and lack of RAM problems, I’ll decide between a bit more expensive x86_64 SBC and ARM. In any case, it will remain at worst a nice experience to work on, and a nice backup (two are better than one) machine :)<br />
More information about that later !<br />
<br />
Pour ceux (s’il y en a) qui suivent ce blog terriblement actif, vous savez que je possède une <a href="https://www.zotac.com/us/product/mini_pcs/ad10" hreflang="en" title="Zotac Zbox Nano AD10">Zotac Zbox Nano AD10</a>, servant de sauvegarde pour <a href="https://www.postgresql.org/" hreflang="en" title="PostgreSQL">PostgreSQL</a>, pour mon nuage personnel…c’est une bonne petite machine. Pas la plus rapide du monde assurément, mais suffisante vu ma pas si rapide connection internet à la maison.<br />
Néanmoins, je réfléchis depuis un petit moment à acquérir un autre petit jouet. Les collègues de travail adorerait avoir plus de puissance de calcul, mais nous sommes limités par la consommation électrique dans notre centre de données mutualisé, ce qui nous empêche d’étendre notre cluster actuel (de plus, le budget n’est pas prévu). Nous aurions donc besoin de machines silencieuses, bon marché, petites pouvant être installés dans nos bureaux. Une compatibilité <a href="https://en.wikipedia.org/wiki/X86-64" hreflang="en" title="X86_64">X86_64</a> serait un plus, car les codes existants n’auraient pas besoin d’être portés et validés. Nos tâches typiques requierent de plus pas mal de RAM. En tout cas, j’étais curieux d’essayer un <a href="https://fr.wikipedia.org/wiki/Ordinateur_%C3%A0_carte_unique" hreflang="fr" title="ordinateur à carte unique">ordinateur à carte unique (OCU) </a> à base de processeur <a href="https://fr.wikipedia.org/wiki/Architecture_ARM" hreflang="fr" title="ARM">ARM</a>. Je possède un smartphone sous vous savez quoi disposant d’une puce ARM, mais ce n’est pas si proche d’un véritable ordinateur, petit ou non. Les OCU X86_64 à bas coût ont une puissance à peu près similaire à mon vénérable <a href="https://fr.wikipedia.org/wiki/Advanced_Micro_Devices" hreflang="fr" title="Advanced Micro Devices">AMD</a> E-350. Les machines ARM sont typiquement dotés de moins de mémoire RAM, ont une consommation électrique très faible, plus de cœurs, et offrent une puissance de calcul vaguement comparable aux OCU X86_64 à bas coût, en étant meilleur marché.<br />
J’ai donc plongé (le colis est encore en transit, en fait), et acheté un <a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G143452239825" hreflang="en" title="Odroid XU4">Odroid XU4</a>. Avantages: un processeur 64 bits « rapide », <a href="https://fr.wikipedia.org/wiki/Carte_MMC" hreflang="fr" title="eMMC">eMMC</a>, micro-SDXC, USB3, ethernet 1gbps, relativement bon marché. Inconvénients: seulement 2go de RAM, pas de SATA ni de wifi, baisse de fréquence pour contenir la chaleur du processeur en charge, pilote graphique propriétaire (grrrrr ARM !). Mais pour mes besoins, la connection ethernet gigabit est suffisante, un pont USB3 vers SATA fera l’affaire. Dès que j’aurais trouvé un moyen bon marché de refroidir suffisamment le processeur afin qu’il reste à sa fréquence maximale à pleine charge pendant des heures (quelle misère d’avoir 4 cœurs à 2ghz qui descendent à 1.3ghz même avec radiateur et un ventilateur…), je pourrais évaluer cette petite machine avec des codes scientifiques. Et voir comment elle se compare à du X86_64 à bas coût et faible consommation. En fonction des résultats, des potentiels problèmes de portage et du manque de mémoire, je déciderais entre des OCU x86_64 un peu plus chers et ARM. Dans tout les cas, cela restera au pire une expérience sympathique, et une bonne machine de sauvegarde (deux valent mieux qu’une) :)<br />
Plus d’informations à ce sujet ultérieurement !</p>
A year or so later
urn:md5:3090cbf287325ed3e715d609175a8ba8
2017-01-24T23:14:00+01:00
2017-01-24T23:16:13+01:00
low
Informatique
GNU-Linux
Rust
Software
<p>(La version française se trouve plus bas)</p>
<p>Time to talk a bit about <a href="http://www.rust-lang.org/" hreflang="en" title="Rust Language">Rust</a> and my pet project. I had the crazy idea to develop a <a href="https://www.gnu.org/software/bash/" hreflang="en" title="Bash homepage">Bash shell</a> kind of clone in Rust to get my feet wet. I’m using Bash daily, and I then thought I was quite skilled with that beast. <strong>BIG</strong> mistake !<br />
I actually had no real idea of the hardships of such a project. Parsing a quite complex language, managing variables, term output, prompt management too hides a couple treasures I did not even heard about until then, (etc) is far more work that I could think of.<br />
Real life™ was quite time consuming (family, getting back to a sport regular practice, translating a <em>big</em> book, associative life…), so I have not that much to tell about Rust. My pet project saw a beginning, looking awfully like a 90s C code. Then I decided to rewrite it in a more Rust-y way. I began. And it’s still waiting for me. I have to seriously get back to the drawing board to think about it. I’m at last fixed on the <a href="https://crates.io/" hreflang="en" title="crates.io">crate</a> (think library) I will use to parse input. But I’m not that clear on a couple other things, like variable management, compatibility degree to Bash, etc.<br />
Anyway, I have not abandonned the idea even if it is severely stuck for now. I have no real deadline, but it’s a fairly complicated task I’d be very proud to get running. For real.</p>
<p>Il est à nouveau temps de parler un peu de <a href="http://www.rust-lang.org/" hreflang="en" title="Rust Language">Rust</a> et mon petit projet personnel. J’ai eu l’idée folle de développer une espèce de clône de <a href="https://www.gnu.org/software/bash/" hreflang="en" title="Bash homepage">Bash shell</a> en Rust afin de m’y initier. J’utilise Bash quotidiennement, et je pensais donc être quelque peu compétent vis-à-vis de la bête. <strong>GROSSE</strong> erreur !<br />
Je n’avais alors pas vraiment idée des difficultés d’un tel projet. Analyser un langage quelque peu complexe, gérer les variables, les sorties sur terminal, la gestion du prompt cache quelques surprises dont je n’avais jamais entendu parler jusqu’alors, (etc) est bien plus de travail que je n’avais pu l’imaginer.<br />
La vraie vie™ a été quelque peu chronophage (famille, refaire régulièrement du sport, traduire un <em>gros</em> bouquin, vie associative…), ce qui fait que je n’ai pas grand chose à dire sur Rust. Mon projet a été commencé, ressemblant affreusement à du code C des années 90. Puis j’ai décidé de la réécrire davantage à la sauce Rust. J’ai commencé. Et cela attend toujours. Je dois sérieusement me remettre à y réfléchir avant de m’y replonger. Au moins, je suis fixé sur la « <a href="https://crates.io/" hreflang="en" title="crates.io">crate</a> » (voyez ça comme une librairie) qui sera utilisé pour analyser les entrées. Mais ce n’est pas aussi clair pour d’autres choses, telles que la gestion des variables, le degré de compatibilité avec Bash, etc.<br />.
Cependant, je n’ai pas abandonné l’idée même si elle est sérieusement au point mort pour le moment. Je n’ai pas vraiment d’échéance, mais c’est néanmoins une tâche assez complexe dont je serais fier d’arriver à bout. Vraiment.</p>
Some news: Rust
urn:md5:7e7b74cc3b140517c477a5944a4a8884
2016-02-03T15:06:00+01:00
2016-06-30T23:09:27+02:00
low
Informatique
Rust
<p>(La version française se trouve plus bas)</p>
<p>Time for a new (IT) post here. <a href="http://worldwidemann.com/finally-terminated/" hreflang="en" title="finally terminated">FinalTerm</a> has been abandoned, and so did my (ridiculously small) involvement. I can develop, but that’s not my main job, so I’m fairly inefficient at it. But I do want to enhance a bit my skills on that point. Since then, I’ve stumbled upon some new language, named <a href="https://www.rust-lang.org/" hreflang="en" title="The Rust Programming Language website">Rust</a>, that I found quite interesting after reading <a href="http://blog.rust-lang.org/2015/05/15/Rust-1.0.html" hreflang="en" title="Rust 1.0">an article</a> or <a href="https://linuxfr.org/news/rust-1-0-entree-dans-la-periode-stable" hreflang="fr" title="Rust 1.0">two</a> about it. So I dived (a bit, I definitely need to read more) into <a href="https://doc.rust-lang.org/book/" hreflang="en" title="The Rust Programming Language book">the official book</a>.<br />
I won’t give you a exhaustive list of pros and cons of Rust, but it’s quite appealing:</p>
<ul>
<li>Memory safety (atomic access, end of use-after-free, and out-of-bounds indexing (AKA buffer overflows). At <strong>last</strong> ! So many years after such bugs caused so many security problems…</li>
<li>Concurrency (threading is easy to handle and safe, especially thanks to memory safety cited on the previous line).</li>
<li>Fast (performances <a href="http://benchmarksgame.alioth.debian.org/u64q/rust.html" hreflang="en" title="Benchmarks">close</a> to C and such).</li>
<li>Low-level while providing high-level helpers (pattern matching, iterators…).</li>
<li>Integrated <a href="http://doc.crates.io/" hreflang="en" title="Rust’s Package Manager">system</a> that helps (a lot !) to manage your project.</li>
<li>Integrated syntax for <a href="https://doc.rust-lang.org/book/testing.html" hreflang="en" title="Testing">unit testing</a>.</li>
<li>Integrated syntax for <a href="https://doc.rust-lang.org/book/documentation.html" hreflang="en" title="Doc !">documentation generation</a>.</li>
</ul>
<p>Of course, having all this at hand requires a couple notions one has to understand:</p>
<ul>
<li><a href="https://doc.rust-lang.org/book/variable-bindings.html" hreflang="en" title="Ownership">Ownership</a></li>
<li><a href="https://doc.rust-lang.org/book/references-and-borrowing.html" hreflang="en" title="Borrowing">Borrowing</a></li>
<li><a href="https://doc.rust-lang.org/book/lifetimes.html" hreflang="en" title="Lifetimes">Lifetimes</a></li>
</ul>
<p>And a couple others. That renders (and I guess that will be the same for you) your first steps with Rust difficult. Something like cursing the Rust compiler becoming a second nature. Like ADA (OK, not THAT picky, but enough to make me cry for help a couple times to the friendly Rust community). Anyway, I kept trying, and…the next post will tell you more.</p>
<p>Le temps d’un nouveau billet (concertant l’informatique) est venu. <a href="http://worldwidemann.com/finally-terminated/" hreflang="en" title="finally terminated">FinalTerm</a> a été abandonné, et ma (ridicule) implication a prit le même chemin. Je sais développer, mais cela n’est pas ma tâche principale, aussi suis-je assez peu efficace. Je veux néanmoins m’améliorer. Depuis, j’ai fais la découverté d’un nouveau langage, nommé <a href="https://www.rust-lang.org/" hreflang="en" title="The Rust Programming Language website">Rust</a>, que j’ai trouvé intéressant après avoir lu <a href="http://blog.rust-lang.org/2015/05/15/Rust-1.0.html" hreflang="en" title="Rust 1.0">un article</a> ou <a href="https://linuxfr.org/news/rust-1-0-entree-dans-la-periode-stable" hreflang="fr" title="Rust 1.0">deux</a> à son propos. Je me suis donc plongé (un soupçon, il me reste beaucoup de lecture) dans <a href="https://doc.rust-lang.org/book/" hreflang="en" title="The Rust Programming Language book">le livre officiel</a>.<br />
Je ne vous ferais pas une liste exhaustive des avantages et des inconvénients de Rust, mais il est attirant:</p>
<ul>
<li>Sécurité mémoire: (<strong>Enfin</strong> la fin de nombre d’hélas classiques problèmes de sécurité…) plus d’utilisation de mémoire libérée (use-after-free), et autres dépassements de tableaux.</li>
<li>Simultanéité (les fils d’exécution (threading) sont simples à gérer et sécurisés, dû à la présence de la sécurité mémoire citée sur la ligne du dessus).</li>
<li>Rapidité (les performances sont <a href="http://benchmarksgame.alioth.debian.org/u64q/rust.html" hreflang="en" title="Benchmarks">proches</a> du C et autres).</li>
<li>Bas-niveau tout en proposant des fonctionnalités de haut-niveau ( (filtrage par motif (pattern matching), iterateurs…).</li>
<li><a href="http://doc.crates.io/" hreflang="en" title="Rust’s Package Manager">Système</a> intégré de gestion de projet.</li>
<li>Syntaxe intégrée de <a href="https://doc.rust-lang.org/book/testing.html" hreflang="en" title="Testing">tests unitaires</a>.</li>
<li>Syntaxe intégrée de <a href="https://doc.rust-lang.org/book/documentation.html" hreflang="en" title="Doc !">génération de documentation</a>.</li>
</ul>
<p>Évidemment, pouvoir disposer de tout ceci requiert de maîtriser quelques notions:</p>
<ul>
<li><a href="https://doc.rust-lang.org/book/variable-bindings.html" hreflang="en" title="Ownership">Propriété</a> des variables (ownership).</li>
<li><a href="https://doc.rust-lang.org/book/references-and-borrowing.html" hreflang="en" title="Borrowing">Le prêt (ou emprunt)</a> de variable (borrowing).</li>
<li><a href="https://doc.rust-lang.org/book/lifetimes.html" hreflang="en" title="Lifetimes">La durée de vie</a> des variables (lifetime).</li>
</ul>
<p>Ainsi que quelques autres. Cela rend (et je pense qu’il en sera de même pour vous) difficiles vos premiers pas avec Rust. Au point, parfois, de vous découvrir une seconde nature consistant à insulter le compilateur Rust. Tout comme avec ADA (OK, Rust n’est peut-être pas aussi pointilleux, mais en tout cas suffisamment pour que j’implore plus d’une fois l’aide de l’adorable communauté Rust). Toutefois, je me suis accroché, et…le prochain billet vous en dira davantage.</p>
N-ième déménagement
urn:md5:4ae2f1ea4371eff5be8f4b2575799c32
2015-05-16T22:35:00+02:00
2016-05-01T13:20:15+02:00
low
Informatique
CentOS
GNU-Linux
google
hébergement
Internet
Libre
Loi
<p>Comme il en était question lors de mon <a href="https://www.quelquesmots.fr/dotclear/index.php?post/2015/05/06/Loi-sur-le-renseignement">dernier billet</a>, j’ai basculé mon blogue (et mes autres services) sur une autre machine. En france.
Vous aurez par conséquent noté la bascule en https. Le niveau de service se devrait d’être identique. À l’exception de la perte du disque (plus de raid 1 pour ce serveur moins cher), mais grâce à <a href="http://fr.wikipedia.org/wiki/Ansible" hreflang="fr" title="Ansible">Ansible</a>, en cas de gros problème matériel, une autre machine sera à même de reprendre la charge (relativement) rapidement. Si l’on oublie les temps de mise à disposition, d’installation et de déploiement, bien sûr.
Je vais me pencher sous peu sur le <a href="http://fr.wikipedia.org/wiki/Plan_de_reprise_d%27activit%C3%A9" hreflang="fr" title="Plan de Reprise d’Activité">PRA</a>, qui mettra à contribution mon <a href="https://www.quelquesmots.fr/dotclear/index.php?post/2012/11/21/Zotac-zbox-nano-AD10-received-and-installed-%21" hreflang="fr" title="Zotac zbox nano AD10">mini-pc</a> branché à la maison.
Bien sûr, la bestiole est plutôt faiblarde. Matériel loin d’être récent, mais, de toutes façons, vu le débit misérable fournit par l’ADSL, mes services persos ne mettront certainement pas à genou le vaillant <a href="http://fr.wikipedia.org/wiki/AMD_Fusion#Zacate" hreflang="fr" title="Fusion - Zacate">AMD E-350</a> qui propulse la bête.
Je n’en dirais pas autant des services plus gourmands, notemment en bande passante, tel que le miroir CentOS hébergé par le nouveau serveur (comme c’était d’ailleurs déjà le cas sur le précédent serveur). Mais là, ça fait partie d’un cas de force majeure.
Bref, au final, que retenir ?</p>
<ul>
<li>Passage de 150 mbps garantis à 200.</li>
<li>Du https partout. Oui le certificat n’est validé que pour (www).quelquesmots.fr, mais je n’avais pas de vélléités à sortir la carte bleue, d’autant qu’entre l’électricité, les impôts et le reste…</li>
<li>Un serveur quasi à moitié prix rapport au précédent (15,99€ HT contre 29,99€ HT). Moitié moins de disques (pas de RAID 1), un cpu grosso-modo moitié moins puissant mais offrant le double de cœurs (8 cœurs Avo(r)ton contre 4 cœurs Xeon E3), mais amplement suffisant.</li>
<li>Une consommation électrique moindre. Le boitier (un <a href="http://www.supermicro.nl/products/system/3U/5038/SYS-5038MA-H24TRF.cfm" hreflang="en" title="5038MA-H24TRF">SuperMicro MicroCloud</a>) alim 1620W pour 24 machines (12 double serveurs hotswap, pour être précis, dont l’une (une ½) est la mienne, rapport à précédente, alim 250W à elle seule.</li>
<li>De l’ipv6, en plus de la v4 (il était temps que je m’y penche).</li>
<li>Un serveur <a href="http://fr.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol" hreflang="fr" title="XMPP">XMPP</a> (<a href="http://prosody.im/" hreflang="en" title="Prosody">Prosody</a>, pour ne pas le nommer)</li>
<li>Un passage en <a href="http://www.centos.org" hreflang="en" title="CentOS">CentOS 7</a>.</li>
<li><a href="http://fr.wikipedia.org/wiki/SELinux" hreflang="fr" title="Security-Enhanced Linux">SELinux</a> pleinement fonctionnel, et non pas désactivé comme dans l’installation automatique fournie par mon cher hébergeur…(ça m’a coûté un paquet de audit2allow, mais il est hors de question de tourner sans…)</li>
<li>Utilisation de Firewalld en lieu et place d’IPtables (les geeks auront compris l’approximation).</li>
<li>J’ai enfin pris le temps de corriger la configuration smtp/etc pour pouvoir envoyer des mails de mon téléphone.</li>
<li>Passage de <a href="http://postgresql.fr/" hreflang="fr" title="PostgreSQL">PostgreSQL</a> 9.3 à 9.4 (merci <a href="http://yum.postgresql.org/" hreflang="en" title="PostgreSQL RPM repository">yum.postgresql.org</a> !)</li>
<li>Mise en place de <a href="http://ganglia.info" hreflang="en" title="Ganglia">Ganglia</a> pour observer l’activité du serveur. Ceux qui connaissent savent que c’est absolument « overkill » pour une machine (d’ailleurs ça ne fonctionne pas encore, sans doute une blague dûe au firewall), mais c’est léger et ça fonctionne bien, comme ça me l’a prouvé au fil des ans au boulot pour le cluster, et le parc en général.</li>
</ul>
<p>Bref, je suis presque prêt pour quitter la galaxie de grands acteurs de l’internet, tout en restant en capacité d’échanger avec ceux qui en sont encore…prisonniers.</p>
<p>Un regret ? Trois, en fait.</p>
<ul>
<li><a href="http://www.horde.org/" hreflang="en" title="The Horde Project">Horde</a>, quand on change d’url c’est la misère à faire fonctionner. Au point que pour l’instant j’utilise l’application mail de <a href="https://owncloud.org/" hreflang="en" title="ownCloud">ownCloud</a>.</li>
<li>Mon hébergeur a choisi de modifier le nommage statique des cartes (eno1, enp1s0f0…configuration d’origine des RHEL 7 et autres CentOS) pour retourner au nommage classique (eth*).</li>
<li>Mon hébergeur (encore lui !), ne permet pas d’installer le système sur disque chiffré (ce qui rend facile de regarder le contenu de ce dernier en cas de saisie…même si l’illégalité n’est pas mon truc, ma vie privée mérite mieux, je regarde comment améliorer ce point).</li>
</ul>
<p>C’était la (grosse) minute geek du soir (pfiou, que d’activité ici ces derniers jours, j’explose les stats !).</p>
Loi sur le renseignement
urn:md5:78a356e7f022df3dc11f71bf9027f3e9
2015-05-06T09:03:00+02:00
2016-05-01T13:21:06+02:00
low
Informatique
Coup de gueule
hébergement
Internet
Loi
<p>Entre le patriot act, les allemands qui collaborent (<s>haha</s>) avec les ricains pour nous espionner, notre gouvernement rempli d’incapables, d’incompétents, de menteurs et j’en passe (rayez la mention inutile…ou pas), qui sont complètement déresponsabilisés de leurs conneries, nous voilà dans de beaux draps. Si les rares lecteurs de ce blogue ne savent pas de quoi il est question, jetez un œil par <a href="https://sous-surveillance.fr" hreflang="fr" title="Projet de loi Renseignement">ici</a>.</p>
<p>Bref, toujours est-il que je dispose d’un serveur dédié, localisé en France, le pays des Lumières (mais ça c’était avant, maintenant, c’est surtout bas de plafond). Et une question me taraude. Vais-je garder ce serveur, ici, en France ? J’en ai envie, pour plusieurs raisons:</p>
<ul>
<li>Délocaliser un serveur à l’étranger, c’est invariablement aller contre l’emploi. Et oui, moins de machines, moins de boulot. Un coup pour le bâtiment (et oui, un centre de données, ça se construit), un coup pour le génie civil (tirer les fibres…), un coup pour les techniciens (clim, changement de matériel informatique…), un coup pour les administrateurs (réseau, système…), et pour toutes les personnes qui gravitent (comptabilité, support téléphonique…) dans la société dont l’objet est de louer des serveurs à des gens, individus ou professionnels. Sans parler de la consommation électrique, mais que va-t-on faire de notre magnifique parc nucléaire ? *tousse*</li>
<li>Délocaliser un serveur, c’est aussi router le trafic d’internet par d’autres points. Sans aller jusqu’à faire un parallèle avec la Corée du Nord, on peut néanmoins se dire que cela pourrait bien être les prémisces d’un « <a href="http://en.wikipedia.org/wiki/Great_Firewall" hreflang="en" title="Great firewall (of China)">grand pare-feu</a> » à la Française (il suffit de voir la connerie du genre illimitée (pas comme les <a class="ref-post" href="https://www.quelquesmots.fr/dotclear/index.php?post/2008/09/14/Illimite">forfaits de téléphone</a>) de nos dirigeants depuis plusieurs années, et les nombreuses tentatives d’atteintes à la neutralité de l’internet qui n’ont de cesse de se répéter).</li>
<li>J’ai bien envie de leur pourrir un peu la vie en leur prouvant que leur loi est nulle, inutile et en poussant un soupçon, à la limite criminelle. 100% https, chiffrement de partout (sur disque, mais aussi en trafic réseau). Ce serait un beau challenge technique qui plus est.</li>
<li>Et sans aucun doute un sacré paquet d’autres bonnes raisons qui ne me viennent pas présentement.</li>
</ul>
<p>D’un autre côté, j’en ai moins envie:</p>
<ul>
<li>Parce que ce serait si facile de prendre mes bits et de les envoyer ailleurs (en <a href="http://fr.wikipedia.org/wiki/Islande#Politique" hreflang="fr" title="Islande">Islande</a> par exemple, un peuple qui a crée une assemblée (vraiment) populaire, qui a envoyé paître les créanciers, qui a réécrit sa constitution…et en plus l’électricité provient de la géothermie).</li>
<li>Même avec mes petites compétences, je ne suis pas persuadé de pouvoir leur « faire la nique », et ma vie privée, j’y tiens.</li>
<li>Les probabilités de se retrouver d’ici 2 ans avec au pouvoir un truc genre à mèche et à moustache tendance fascisante ne sont pas minces. De plus, de la <a class="ref-post" href="https://www.quelquesmots.fr/dotclear/index.php?post/2006/06/23/DADVSI">DADVSI</a> à la Loi Renseignement, « droite » comme « gauche » (devrais-je dire démocrates et républicains ou inversement ?) ont maintes fois prouvés que leur intérêt n’était pas le peuple. Bref, mon niveau de confiance envers la plupart des politiques français frise les <span title="−459,7 °F ou 0 K">-273.15°C. Bref, monsieur Orwell, je crains que votre <a href="http://fr.wikipedia.org/wiki/1984_%28roman%29" hreflang="fr" title="1984">roman le plus célèbre</a> perde d’ici peu son qualificatif </span>« d’anticipation ».</li>
</ul>
<p>Bref, je m’interroge. Je pense dans un premier temps m’amuser à faire un serveur qui ne leur facilitera pas la tâche. Et si ça tourne (encore plus) mal, je déménagerais mes bits.</p>
Net Neutrality !
urn:md5:7ad2a4550e947b83b9705f4d5dcfb935
2014-09-11T08:41:00+02:00
2014-09-11T13:46:43+02:00
low
Informatique
Internet
<script src="//widget.battleforthenet.com/widget.min.js" async></script>
SshAdmin is dead ! Long live to FinalTerm !
urn:md5:ef05256ded07de0278671d85988ffac7
2014-08-18T18:49:00+02:00
2016-05-01T13:26:32+02:00
low
Informatique
<p>Yes, SshAdmin is already dead. I’ve stumbled upon the already existing <a href="http://finalterm.org/" hreflang="en" title="Final Term">FinalTerm</a>, which looks like really, yes, I <em>do</em> mean <em>really</em>, promising. So I decided to implement ((really) long-term goal) SshAdmin planned features into it (read grouped tabs plus broadcast) as in <a href="http://gnometerminator.blogspot.fr/" hreflang="en" title="Terminator">Terminator</a>.<br />
For now, FinalTerm is far from usable, so I’ll try to cook some patches here and there in order to help the existing team. I’ve already written a couple ones you can see <a href="https://github.com/lwandrebeck/finalterm" hreflang="en" title="my clone of FinalTerm on Github">there</a>.<br />
There are still a <em>lot</em> of things to complete, debug, optimize so FinalTerm can be used more than a couple minutes. If you find Final Term sexy, please help ! :)</p>
SshAdmin is born !
urn:md5:0062ab0d10911d29c7b9841c16dffcd6
2014-06-18T12:59:00+02:00
2016-05-01T13:27:28+02:00
low
Informatique
Cluster
Glade
Gnome
GNU-Linux
GTK
SSH
<p>Hi fellow SysAds around there !<br />
<br />
Some of you probably know of <a href="http://www.getchef.com/" hreflang="en" title="Chef">Chef</a>, <a href="http://puppetlabs.com/" hreflang="en" title="Puppet">Puppet</a>, <a href="http://www.ansible.com/home" hreflang="en" title="Ansible">Ansible</a>…which are great tools but may prove a bit of overkill for a smaller amount of machines (I do have to manage around 30 boxes/vm) and deploying one of these tools would take too much time for the gain thereafter.<br />
So I found <a href="https://github.com/duncs/clusterssh/wiki" hreflang="en" title="ClusterSSH">ClusterSSH</a>. Sweet. But it has some rough edges (copy a couple lines to it anyone ? or one console losing a char on the way…). Add to that it’s coded in <a href="http://www.perl.org/" hreflang="en" title="Perl">Perl</a> and uses <a href="http://www.tcl.tk/" hreflang="en" title="Tcl/Tk">Tcl/Tk</a>. OK, these technologies are still alive and kicking…but they don’t excite me much.<br />
I decided to bite the bullet and code my own version. Fasten your seat belt. <a href="https://wiki.gnome.org/Projects/Vala" hreflang="en" title="Vala">Vala</a>, <a href="https://glade.gnome.org/" hreflang="en" title="Glade">Glade</a>, <a href="http://www.gtk.org/" hreflang="en" title="GTK+">GTK+</a> 3.8 will be the technologies used to develop what I called SshAdmin. Forget right now trolls about Gnome 3 and such. I do like it, period. If you want a <a href="http://qt.digia.com/" hreflang="en" title="QT">QT</a>/<a href="http://wxwidgets.org/" hreflang="en" title="wxWidgets">wxWidgets</a>/some <a href="http://www.enlightenment.org/" hreflang="en" title="Enlightenment">EFL</a> lib/you name it, then develop your own ;)<br />
Anyway, if you’re willing to give a hand and help its development, check <a href="https://gitorious.org/sshadmin" hreflang="en" title="SshAdmin">Gitorious website</a>. Note that it is *FAR* from working right now, I’m still begining with these technologies (as you can guess, as a SysAd, I’ve never toyed with Vala, Glade, nor GTK+.). Of course, code is released under <a href="http://www.gnu.org/licenses/gpl.html" hreflang="en" title="GNU Public License">GPL3</a>.</p>
Cluster SSH memleak ? doesn’t open a defined list of hosts.
urn:md5:4043e822e6fb64b93b8353706b088eef
2014-04-18T14:41:00+02:00
2016-05-01T13:32:22+02:00
low
Informatique
<p>You’ve configured <a href="http://sourceforge.net/projects/clusterssh/" hreflang="en" title="Cluster SSH">Cluster SSH</a> and defined a nice list of alias so you hit several boxes easily. BUT, when you call a given alias, nothing happens, but cssh eating up all your memory.<br />
Solution is really easy: do NOT ever name an alias the same as an existing machine name (your DNS resolve).<br />
Say you defined ftp root@ftp root@ftp2 root@ftp3<br />
It’ll fail.<br />
define ftp_servers root@ftp root@ftp2 root@ftp3 and you’re done.</p>
Quelques nouvelles
urn:md5:e885a4bd9b3d40a493ec1c541f064013
2013-01-17T09:24:00+01:00
2016-05-01T13:41:41+02:00
low
Informatique
<p>100ième billet, et les nouvelles ne sont guère réjouissantes.<br />
En jouant avec <a href="http://www.horde.org/" hreflang="en" title="The Horde Project">Horde</a> puis <a href="http://www.citadel.org/" hreflang="en" title="Citadel">Citadel</a>, ce dernier a légèrement mis le bazar du côté MTA, du coup plus de réception des mails logwatch, par exemple. Je tente de nettoyer le foutoir pour remettre les choses en ordre, puis je publierais la conversion du blog de Mysql vers PostgreSQL.<br />
MAJ 20130124: alternatives --config mta ainsi que chkconfig crond on && service crond start. Merci Citadel de laisser le souk derrière toi.</p>
yum-cron, logwatch, postfix
urn:md5:aa077f2474062723a476dafab2c28cc2
2013-01-04T16:02:00+01:00
2016-05-01T13:42:24+02:00
low
Informatique
<p>C'est décidé ! Je veux avoir mon propre serveur smtp/imap, afin de ne plus dépendre de mon hébergeur (ovh). Mais pour l'instant je conserverais une configuration temporaire, afin d'au moins pouvoir envoyer des mails, jusqu'à ce que la configuration complète du serveur soit faite. Commençons par la mise à jour automatique de la machine:<br /></p>
<pre>
yum install yum-cron
chkconfig yum-cron on
service yum-cron start
yum update
</pre>
<p>Assurez-vous du fonctionnement correct de yum update, où yum-cron échouera chaque nuit.<br />
Maintenant, nous voulons savoir quels sont les évènements ayant lieu sur la machine, sans pour autant avoir le temps de fouiller les journaux systèmes. Logwatch est votre ami !<br /></p>
<pre>
yum install logwatch
</pre>
<p>Oui, c'est tout :)<br />
Pour un bien, nous voulons recevoir les rapports de logwatch par mail sur l'adresse mail de votre choix afin de savoir ce qui s'est passé. Plongeons (juste les doigts de pieds) dans la configuration de postfix. Ici, nous supposerons que votre FAI est free.fr (désolé si vous n'êtes pas français, ou chez un autre FAI, vous aurez à adapter cette partie). Premièrement, rendez-vous sur votre console d'administration free.fr, ma freebox, Blocage du protocole SMTP sortant, Blocage SMTP sortant -> inactif. Ensuite, ajoutez à /etc/postfix/main.cf:</p>
<pre>
relayhost = smtp.free.fr
</pre>
<p>Oui. C'est tout. Encore. Vous n'avez plus qu'à éditer /etc/aliases, et changer root: (à la fin) en:</p>
<pre>
root: votremail@domaine.tld
</pre>
<p>Ensuite<br /></p>
<pre>
newaliases
service postfix restart
</pre>
<p>Vous devriez maintenant recevoir tout les courriels destiné à root sur boîte votremail@domaine.tld. Tapez la commande logwatch et vérifiez vos mails. Si rien n'est arrivé, vérifiez /var/log/maillog.<br />
Au tour de fail2ban. Vous ne voulez vraiment pas faciliter la vie des petits malins et autres pirates. Ici, vous pouvez utiliser la version disponible sur le dépôt <a href="http://fedoraproject.org/wiki/EPEL" hreflang="en" title="Extra Packages for Enterprise Linux">EPEL</a>.</p>
<pre>
yum install fail2ban --enablerepo=epel
</pre>
<p>(sachant que je désactive tout dépôt non officiel).<br />
Ensuite, à vous de jeter un œil au fichier de configuration /etc/fail2ban/jail.conf , qui n'a rien de très compliqué.<br />
Au prochain menu, apache, installation et portage de Dotclear de Mysql à PostgreSQL.</p>
Un bug en pleine tête !
urn:md5:59c077b83af97b61a50befb2e462e06b
2012-12-22T16:11:00+01:00
2012-12-29T15:15:34+01:00
low
Informatique
Dotclear
<p>Je viens de découvrir un <a href="http://lab.dotclear.org/wiki/plugin/dctranslations/fr" hreflang="fr" title="dctranslations">plugin</a> fantastique pour Dotclear, permettant de donner les billets directement dans la langue qu'indique utiliser le navigateur. Malheureusement, ce dernier n'est plus maintenu et dispose d'un problème avec les dernières versions de Dotclear. Pour l'instant, les billets restent désespérement en français même quand on demande les versions anglaises. Je pars à la chasse au bug pour tenter de résoudre ce problème ! (et donc non, cela n'a rien à voir avec le changement d'hébergement pour les mauvaises langues, le problème eût été le même en restant chez mon hébergeur :P)<br />
MAJ: Le bug provient du thème. À la recherche du correctif.<br />
MAJ2: Commentez la ligne 11 du fichier _public.php du thème Polyvalence (
$core->addBehavior('coreBlogGetPosts',array('MyHTML5ThemeBehaviors','coreBlogGetPosts')); )<br />
MAJ3: Version propre: Décommentez la ligne 11 ;) Ligne 48, supprimer extends rsExtPostPublic
MAJ4: Ce correctif n'est pas parfait. L'auteur original du thème <a href="http://lombre.net/post/2012/11/11/Polyvalence-1.2#c631" hreflang="fr" title="Commentaire de l'auteur du thème Polyvalence">se penche sur le problème</a>.</p>
Déménagement !
urn:md5:0a11e962ba053c72780c8323a5fb6618
2012-12-22T09:33:00+01:00
2012-12-22T09:34:35+01:00
low
Informatique
Dotclear
hébergement
<p>Le Blogue est dorénavant hébergé chez moi ! Vous avez pu constater le changement de thème, mais aussi l'obligation du https. La suite bientôt ! Amusez-vous, joyeux Noël et bonne année si je n'ai pas la possibilité d'écrire un billet d'ici 2013 !</p>
Configuration de PostgreSQL
urn:md5:5a0d7f77b9e369a55c767a8c8cf9d542
2012-11-26T13:25:00+01:00
2016-05-01T13:44:28+02:00
low
Informatique
CentOS
PgBouncer
PostgreSQL
<p>Il est maintenant temps de configurer correctement (et d'optimiser un peu) le serveur PostgreSQL. CentOS 6 fournit par défaut la version 8.4. Qui fonctionne très bien, mais la récente version 9.2 apporte de <a href="http://www.postgresql.org/about/press/presskit92/fr" hreflang="fr" title="Fonctionnalités de PostgreSQL 9.2">sympathiques optimisations</a> que je ne veux pas rater. N'oublions que cette petite machine a une puissance limitée et un disque lent.
Installons donc ce merveilleux dépôt:<br /></p>
<pre>
yum localinstall http://yum.postgresql.org/9.2/redhat/rhel-6-x86_64/pgdg-centos92-9.2-6.noarch.rpm
</pre>
<p>Editez /etc/yum.repos.d/CentOS-Base.repo et ajoutez exclude=postgresql* à la fin des sections <a href="https://www.quelquesmots.fr/dotclear/index.php?post/2012/11/22/base" title="base">base</a> et <a href="https://www.quelquesmots.fr/dotclear/index.php?post/2012/11/22/updates" title="updates">updates</a>, puis:</p>
<pre>
yum install postgresql92-server
service postgresql-9.2 initdb
chkconfig postgresql-9.2 on
</pre>
<p>Editez /var/lib/pgsql/9.2/data/postgresql.conf en vue de modifier quelques valeurs. Ici, j'ai fais confiance à <a href="http://pgfoundry.org/projects/pgtune" hreflang="en" title="PostgreSQL tune">pgtune</a> en utilisant la commande suivante:</p>
<pre>
pgtune -T Web -M 2097152 -i /var/lib/pgsql/9.2/data/postgresql.conf -o /var/lib/pgsql/9.2/data/postgresql.conf.pgtune
</pre>
<p>Nous declarons 2Go de mémoire vive disponible (2048*1024) pour PostgreSQL car les ressources seront partagées avec le serveur web. Les valeurs proposées par pgtune sont:</p>
<pre>
maintenance_work_mem = 131072
checkpoint_completion_target = 0.7
effective_cache_size = 1536kB
work_mem = 10240
wal_buffers = 4MB
checkpoint_segments = 8
shared_buffers = 512kB
max_connections = 200
</pre>
<p>Comme je ne suis point un spécialiste de l'optimisation de PostgreSQL, je ferais confiance à ces valeurs, et modifie en conséquence postgresql.conf. Mais l'établissement des connections étant assez coûteux, nous utiliserons donc un <a href="http://en.wikipedia.org/wiki/Connection_pool" hreflang="en" title="Connection pool">connection pooler</a> nommé <a href="http://pgfoundry.org/projects/pgbouncer/" hreflang="en" title="pgbouncer">pgbouncer</a> (disponible dans le dépôt que nous avons installé quelques lignes plus haut) afin d'alléger ce coût. Donc:</p>
<pre>
yum install pgbouncer
chkconfig pgbouncer on
</pre>
<p>Comme PostgreSQL n'accepte que les connections locales par default, nous n'avons rien à faire de plus de ce côté-là. Le seul point est, qu'en tant que super utilisateur, vous pouvez taper su - postgres puis psql et faire ce que bon vous semble avec les données. Comme l'on n'est jamais protégé contre une faille exploitable à distance à venir dans linux, ssh, apache ou quoi que ce soit d'autre tournera sur cette machine, nous ajoutons donc une authentification par mot de passe pour accéder au super utilisateur PostgreSQL.</p>
<pre>
service postgresql-9.2 start
su - postgres
psql
alter user postgres with password 'MOTDEPASSE';
</pre>
<p>Il faut ensuite éditer /var/lib/pgsql/9.2/data/pg_hba.conf and modifier les lignes suivantes de cette manière:</p>
<pre>
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
</pre>
<p>Une autre petie chose est le port par défaut de PostgreSQL (5432) que l'on ne peut pas configurer avec certains logiciels (impossible de me souvenir d'un nom, mais je suis persuadé d'en avoir déjà croisé). Ce qui signifie l'impossibilité d'utiliser le pooler de connection qui lui utilise le post 6432 par défaut. Inversons donc les ports afin de contourner cette limitation de certains logiciels. Rien de compliqué: éditez le (nouveau) fichier /etc/sysconfig/pgsql/postgresql-9.2 et mettez-y:</p>
<pre> PGPORT=6432 </pre>
<p>Éditez maintenant /etc/pgbouncer/pgbouncer.ini et modifiez à partir de la ligne 39 de cette manière.</p>
<pre>
listen_addr = 127.0.0.1, ::1 #add ipv6 localhost
listen_port = 5432
</pre>
<p>Modifiez auth_type à md5. Ensuite, juste après <a href="https://www.quelquesmots.fr/dotclear/index.php?post/2012/11/22/databases" title="databases">databases</a> au début du fichier, ajoutez:</p>
<pre> postgres = dbname=postgres host=localhost port=6432 user=postgres </pre>
<p>Enfin, éditez le (nouveau) fichier /etc/pgbouncer/userlist.txt pour y mettre:</p>
<pre> "postgres" "MOTDEPASSE" </pre>
<p>C'est fait ! Vous devrez à l'avenir bien sûr ajouter une nouvelle ligne dans la section <a href="https://www.quelquesmots.fr/dotclear/index.php?post/2012/11/22/databases" title="databases">databases</a> du fichier pgbouncer.ini, ainsi qu'une ligne avec l'utilisateur et mot de passe dans userlist.txt. N'oubliez pas de créer l'utilisateur correspondant (et de lui donner un mot de passe !) sur le serveur PostgreSQL.<br />
Maintenant, redémarrez PostgreSQL puis démarrez pgbouncer:</p>
<pre>service postgresql-9.2 restart
service pgbouncer start</pre>
<p>À partir de là, pgbouncer prendra en charge de manière transparente les demandes de connection :) (car nous sommes en mode session par défaut, faites attention si vous en changez !). C'est tout pour le moment, nous y reviendrons quand nous en serons à la conversion de base de données.<br />
MAJ 20121203: correction de listen_addr pour pgbouncer (une seule ligne pour déclarer les adresses), et de maintenance_work_mem et work_mem pour lesquelles pgbouncer donne des valeurs non valables.</p>
Configuration d'OpenSSH
urn:md5:ab5080db93d3288e44ca945ad8e55e51
2012-11-22T22:31:00+01:00
2012-12-22T09:38:32+01:00
low
Informatique
CentOS
SSH
<p>Pour des raisons de sécurité, nous interdirons les connections ssh avec mot de passe, ainsi que la connection directe du super utilisateur (root). Autrement dit, authentification par clef et d'un utilisateur « normal » uniquement. sshd étant un service lancé par défaut, et le firewall laissant passer les connections extérieures sur le port 22, il n'y a rien à faire de ce côté là. À moins que vous ne vouliez filtrer par adresse IP, mais c'est une mesure de sécurité <a href="http://fr.wikipedia.org/wiki/Usurpation_d%27adresse_IP" hreflang="fr" title="Usurpation d'adresse IP">toute relative</a> de une, et qui risque de s'avérer pénible quand il est maintenant si facile de se connecter chez soi avec son <a href="http://code.google.com/p/connectbot/" hreflang="en" title="connectbot">téléphone</a>, sa tablette, avec son netbook d'une borne wifi publique ou via une clef 3G…<br />
Création d'un utilisateur:</p>
<pre>
useradd quivousvoulez
passwd quivousvoulez
</pre>
<p>Choisissez un mot de passe digne de ce nom (avec minuscules, majuscules, chiffres ET ponctuation). Il est maintenant temps de générer, et ce sur chaque machine que vous allez utiliser pour vous connecter sur le serveur, une paire de clefs ssh. Ce qui se fait de la manière suivante (et n'utilisez pas de phrase de passe vide !) :</p>
<pre> ssh-keygen </pre>
<p>Vous aurez dans <a></a>/.ssh/authorized_keys) :</p>
<pre> ssh-copy-id -i /.ssh/id_rsa.pub quivousvoulez@serveur </pre>
<p>C'est maintenant au tour de la configuration du serveur openssh. Éditez le fichier /etc/ssh/sshd_config. Il faut modifier les lignes PermitRootLogin, PubkeyAuthentication et PasswordAuthentication de la manière suivante:</p>
<pre>PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no </pre>
<p>Puis il suffit de redémarrer le serveur openssh pour qu'il prenne en compte les modifications:</p>
<pre>service sshd reload</pre>
<p>Fini l'authentification distante par mot de passe !<br /></p>
Zotac zbox nano AD10 recue and installée !
urn:md5:2104cb133a2a9ead8236e6b1cdeeabc7
2012-11-21T19:03:00+01:00
2016-05-01T13:47:17+02:00
low
Informatique
CentOS
<p>La (VRAIMENT) petite bestiole est arrivée ! Déballage, installation de 4 GO de ram et d'un disque SATA 5400 TPM de 320 GO. Fermeture du boitier, branchement du bloc d'alimentation et du cable HDMI sur la télévision. Branchement du lecteur de DVD externe usb contenant le DVD CentOS. Allumage de la machine, quelques bips saluent son démarrage :)<br />
Installation minimale, mise à jour effectuées. Installation de cpuspeed et ntpd.<br />
Souci: lm_sensors ne reconnait pas tout le matériel. Après <del>beaucoup</del> quelques recherches sur l'internet, nous avons besoin d'une version plus récente du module it87, qui se trouve ici: http://khali.linux-fr.org/devel/misc/it87/ et d'ajouter à la fin de la ligne kernel du fichier /boot/grub/grub.conf le paramètre acpi_enforce_resources=lax. Il faut aussi ajouter les lignes suivantes au fichier /etc/rc.local: modprobe hwmon_vid et insmod /là/où/vous/avez/compilé/it87.ko . La version compilée par mes soins (x86_64 bien sûr) est <a href="https://www.quelquesmots.fr/public/it87.ko">ici</a>.<br />
C'est fait ! Le temps nous dira si dmesg a raison:</p>
<pre>
it87: Found IT8721F chip at 0xa00, revision 1
ACPI: resource it87 [io 0x0a05-0x0a06] conflicts with ACPI region RNTR [io 0xa00-0xa0f]
ACPI: This conflict may cause random problems and system instability
ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
</pre>
<p>J'ai aussi ajouté à la ligne kernel de grub.conf les paramètres suivants: pcie_aspm=force (supposé rendre au pci express ses fonctions d'économies d'énergie) et amd_iommu=on (activation des extentions AMD IOMMU pour la virtualisation).<br />
<a href="https://www.quelquesmots.fr/public/CentOS_install.jpg" title="Je n'ai jamais eu un si grand écran pour un ordinateur ;)"><img src="https://www.quelquesmots.fr/dotclear/public/.CentOS_install_m.jpg" alt="Je n'ai jamais eu un si grand écran pour un ordinateur ;)" title="Je n'ai jamais eu un si grand écran pour un ordinateur ;), nov. 2012" /></a><br /></p>