<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Admin on iMil.net</title>
    <link>http://imil.net/blog/categories/admin/</link>
    <description>Recent content in Admin on iMil.net</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 13 Dec 2025 11:05:02 +0100</lastBuildDate>
    <atom:link href="http://imil.net/blog/categories/admin/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>IVPN on NetBSD</title>
      <link>http://imil.net/blog/posts/2025/ivpn-on-netbsd/</link>
      <pubDate>Sat, 13 Dec 2025 11:05:02 +0100</pubDate>
      <guid>http://imil.net/blog/posts/2025/ivpn-on-netbsd/</guid>
      <description>&lt;p&gt;Last week, the &lt;a href=&#34;https://vpntunnel.com&#34;&gt;VPN provider&lt;/a&gt; I previously used went dark for days and went back with no explanation. They have an history of not communicating much and their support does suck but TBH I almost never used it, nevertheless I felt it was time for a change. I asked on &lt;a href=&#34;https://bsky.app&#34;&gt;BlueSky&lt;/a&gt; for feedback and one of the suggestions caught my eye: &lt;a href=&#34;https://www.ivpn.net&#34;&gt;IVPN&lt;/a&gt;.&lt;br&gt;&#xA;They have very good reviews, support &lt;a href=&#34;https://www.wireguard.com/&#34;&gt;WireGuard&lt;/a&gt; and an &lt;a href=&#34;https://openbsd.org&#34;&gt;OpenBSD&lt;/a&gt; developer worked there. Their documentation is very Linux-centric but very well put, yet -of course- it lacks examples for &lt;a href=&#34;https://NetBSD.org&#34;&gt;NetBSD&lt;/a&gt;. So here&amp;rsquo;s a simple way of setting up a &lt;a href=&#34;https://www.wireguard.com/&#34;&gt;WireGuard&lt;/a&gt; VPN with &lt;a href=&#34;https://www.ivpn.net&#34;&gt;IVPN&lt;/a&gt; on &lt;a href=&#34;https://NetBSD.org&#34;&gt;NetBSD&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LG-43SQ700S-W DPMS Wake</title>
      <link>http://imil.net/blog/posts/2024/lg-43sq700s-w-dpms-wake/</link>
      <pubDate>Mon, 16 Sep 2024 00:00:00 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2024/lg-43sq700s-w-dpms-wake/</guid>
      <description>&lt;p&gt;I got myself a brand new 43 inches monitor, it&amp;rsquo;s amazing, the visual comfort is life changing.&lt;br&gt;&#xA;It all worked pretty much immediately except one little annoying thing: 9 times out of 10, when putting the monitor to sleep with &lt;code&gt;xset dpms force off&lt;/code&gt; and waking it up by hitting a key, it would not detect the HDMI signal for about the 30 longest seconds ever.&lt;/p&gt;&#xA;&lt;p&gt;I finally found that if I change from &lt;em&gt;X11&lt;/em&gt; to the console (&lt;em&gt;Ctrl-Alt-F1&lt;/em&gt; then &lt;em&gt;Ctrl-Alt-F7&lt;/em&gt;), it would detect the signal instantly. I suspected that a simple resolution change would do the trick, but changing resolution would also mess the windows positions. Fortunately, here&amp;rsquo;s what &lt;code&gt;xrandr&lt;/code&gt; saw:&lt;/p&gt;</description>
    </item>
    <item>
      <title>NSD Slave DNS</title>
      <link>http://imil.net/blog/posts/2023/nsd-slave-dns/</link>
      <pubDate>Sat, 27 May 2023 09:02:31 +0200</pubDate>
      <guid>http://imil.net/blog/posts/2023/nsd-slave-dns/</guid>
      <description>&lt;p&gt;Ok this is possibly the easiest thing on earth but I didn&amp;rsquo;t see any clear documentation on the&#xA;topic apart from &lt;a href=&#34;https://nsrc.org/workshops/2014/menog-dns-dnssec/raw-attachment/wiki/Agenda/dns-nsd-config.txt&#34;&gt;a simple text file&lt;/a&gt; which actually helped.&lt;/p&gt;&#xA;&lt;p&gt;The server runs into a &lt;a href=&#34;https://docs.freebsd.org/en/books/handbook/jails/&#34;&gt;FreeBSD jail&lt;/a&gt;, I won&amp;rsquo;t cover this part as there are plenty of &lt;a href=&#34;https://ogris.de/howtos/freebsd-jails.html&#34;&gt;good documentation on this matter already&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The first step is obviously to install &lt;a href=&#34;https://www.nlnetlabs.nl/projects/nsd/about/&#34;&gt;nsd&lt;/a&gt;, for example using &lt;code&gt;pkg&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# pkg install nsd&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;My master DNS server runs &lt;a href=&#34;https://www.isc.org/bind/&#34;&gt;BIND&lt;/a&gt; so there&amp;rsquo;s no specifics regarding &lt;code&gt;nsd&lt;/code&gt;, here&amp;rsquo;s the most&#xA;basic configuration the slave needs:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generate An Ansible Report By Updating A Variable</title>
      <link>http://imil.net/blog/posts/2022/generate-ansible-report/</link>
      <pubDate>Sat, 29 Oct 2022 22:41:26 +0200</pubDate>
      <guid>http://imil.net/blog/posts/2022/generate-ansible-report/</guid>
      <description>&lt;p&gt;At &lt;em&gt;$(DAYJOB)&lt;/em&gt; I was asked to generate some kind of daily report, and I thought &lt;em&gt;ansible&lt;/em&gt; would do the job; we basically want to have a couple of key metrics like &lt;em&gt;load average, memory, disk&lt;/em&gt;… you see the deal. The result is to be send to &lt;em&gt;MatterMost&lt;/em&gt; using &lt;a href=&#34;https://docs.ansible.com/ansible/latest/collections/community/general/mattermost_module.html&#34;&gt;mattermost&amp;rsquo;s ansible module&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It took me way too much time to understand how to update a single variable in order to build a &lt;em&gt;mardown&lt;/em&gt; table that would be sent as a single request to the &lt;em&gt;MatterMost&lt;/em&gt; server, until &lt;a href=&#34;https://twitter.com/neith_speed&#34;&gt;neith_speed&lt;/a&gt; told me to use &lt;code&gt;hostvars&lt;/code&gt; in order to have access to the data gathered by the play for every host.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Kibana API as an Elasticsearch Proxy</title>
      <link>http://imil.net/blog/posts/2022/using-kibana-as-elasticsearch-proxy/</link>
      <pubDate>Fri, 26 Aug 2022 07:44:15 +0200</pubDate>
      <guid>http://imil.net/blog/posts/2022/using-kibana-as-elasticsearch-proxy/</guid>
      <description>&lt;p&gt;While searching for an &lt;em&gt;elasticsearch tail -f&lt;/em&gt;, I stumble upon this &lt;a href=&#34;https://lstail.org/en/latest/&#34;&gt;nice piece of software&lt;/a&gt; that does exactly that. Reading the configuration file I noticed the &lt;code&gt;server_kibana-proxy&lt;/code&gt; section and wondered if that meant that &lt;em&gt;elasticsearch&lt;/em&gt; could be queried via &lt;em&gt;kibana&lt;/em&gt;, and it turns out that yes, you don&amp;rsquo;t have to expose &lt;em&gt;ES&lt;/em&gt; port (&lt;code&gt;:9200&lt;/code&gt;), you can use &lt;em&gt;kibana&lt;/em&gt;&amp;rsquo;s &lt;em&gt;API&lt;/em&gt; instead, in particular the &lt;em&gt;console API&lt;/em&gt; to be able to query &lt;em&gt;ES&lt;/em&gt; directly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Single in Tree Linux Kernel Module (Debian &amp; Clones)</title>
      <link>http://imil.net/blog/posts/2022/build-a-single-in-tree-linux-kernel-module-debian--clones/</link>
      <pubDate>Sun, 21 Aug 2022 20:43:27 +0200</pubDate>
      <guid>http://imil.net/blog/posts/2022/build-a-single-in-tree-linux-kernel-module-debian--clones/</guid>
      <description>&lt;p&gt;How misleading and complicated this task should be that I&amp;rsquo;m writing such an article in 2022?&lt;br&gt;&#xA;Anyway, if you struggle compiling a simple, standalone Linux kernel module on Debian, Ubuntu, Mint and the like, here&amp;rsquo;s the recipe:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Fetch &lt;code&gt;linux-source-&amp;lt;version&amp;gt;&lt;/code&gt; and &lt;code&gt;linux-headers-&amp;lt;version&amp;gt;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt install linux-source-5.4.0 linux-headers-&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;uname -r&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Do &lt;strong&gt;not&lt;/strong&gt; use &lt;code&gt;apt-get source linux-source-&amp;lt;version&amp;gt;&lt;/code&gt;, &lt;em&gt;only pain will you find&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Untar the fetched archive where you&amp;rsquo;d like&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tar jxvf /usr/src/linux-source-5.4.0.tar.bz2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Copy your current kernel configuration&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cd linux-source-5.4.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cp /boot/config-&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;uname -r&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt; .config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Prepare the build environment&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ make oldconfig scripts prepare modules_prepare&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Copy current kernel exported symbols file&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cp /usr/src/linux-headers-&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;uname -r&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;/Module.symvers .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Build the module you need&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ make -C . M&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;arch/x86/kvm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Test it&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo insmod arch/x86/kvm/kvm-intel.ko&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Eventually backup the current loaded module (&lt;code&gt;modinfo &amp;lt;module&amp;gt;&lt;/code&gt;), replace it with your freshly built one and don&amp;rsquo;t forget to &lt;code&gt;depmod -a&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cleaner micro Kubernetes on OSX</title>
      <link>http://imil.net/blog/posts/2019/cleaner-micro-kubernetes-on-osx/</link>
      <pubDate>Mon, 04 Feb 2019 15:41:17 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2019/cleaner-micro-kubernetes-on-osx/</guid>
      <description>&lt;p&gt;While my main workstation is a &lt;em&gt;Linux Mint&lt;/em&gt; machine, I occasionally use my &lt;em&gt;OSX&lt;/em&gt; &lt;code&gt;${WORK}&lt;/code&gt; laptop for traveling and composing. I&amp;rsquo;m not really fond of the OS, but at least it&amp;rsquo;s an &lt;em&gt;UNIX-like&lt;/em&gt;, and &lt;code&gt;pkgin&lt;/code&gt; runs well with it ;)&lt;br&gt;&#xA;When I&amp;rsquo;m &amp;ldquo;on the go&amp;rdquo;, I like to try things and play along with technologies I&amp;rsquo;m currently obsessed with, among them &lt;em&gt;Kubernetes&lt;/em&gt;.&lt;br&gt;&#xA;On &lt;em&gt;OSX&lt;/em&gt;, the natural choice is to go with &lt;a href=&#34;https://kubernetes.io/docs/setup/minikube/&#34;&gt;minikube&lt;/a&gt;, it&amp;rsquo;s kind of integrated and does the job well, but if you tried it already and also happen to run &lt;code&gt;docker&lt;/code&gt; for &lt;code&gt;OSX&lt;/code&gt; you might have found yourself struggling with versions and consistency between the two. Added to this that I wanted to have a fully functional &lt;em&gt;Linux&lt;/em&gt; virtual machine, preferably &lt;em&gt;Debian GNU/Linux&lt;/em&gt;, there was way too much inconsistencies and wasted disk and CPU space to come. So I dug by myself and found a clean and &lt;strong&gt;fast&lt;/strong&gt; solution by spawning my own virtual machine using &lt;em&gt;OSX&lt;/em&gt; native hypervisor, which runs &lt;em&gt;Canonical&amp;rsquo;s&lt;/em&gt; &lt;a href=&#34;https://microk8s.io/&#34;&gt;microk8s&lt;/a&gt;, a nicely done &lt;code&gt;snap&lt;/code&gt; package to install a fully working and modular &lt;code&gt;Kubernetes&lt;/code&gt; cluster on a &lt;em&gt;Linux&lt;/em&gt; machine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Elasticsearch from the past</title>
      <link>http://imil.net/blog/posts/2018/an-elasticsearch-from-the-past/</link>
      <pubDate>Mon, 19 Nov 2018 14:47:32 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2018/an-elasticsearch-from-the-past/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a procedure I came up with in order to migrate an &lt;a href=&#34;https://www.elastic.co/products/elasticsearch&#34;&gt;elasticsearch&lt;/a&gt; 1.1 database to version 6 (actually 6.4 but probably any 6.x version).&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Fire up a temporary &lt;em&gt;elasticsearch&lt;/em&gt; version 1.1&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Fetch the &lt;code&gt;tar.gz&lt;/code&gt; version from &lt;a href=&#34;https://www.elastic.co/downloads/past-releases/filebeat-1-1-2&#34;&gt;https://www.elastic.co/downloads/past-releases/filebeat-1-1-2&lt;/a&gt; and untar it.&lt;/p&gt;&#xA;&lt;p&gt;Use the following basic configuration file&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ egrep -v &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;^[[:space:]]*(#|$)&amp;#39;&lt;/span&gt; ~/tmp/elasticsearch-1.1.2/config/elasticsearch.yml &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http.port: &lt;span style=&#34;color:#ae81ff&#34;&gt;9202&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;transport.tcp.port: &lt;span style=&#34;color:#ae81ff&#34;&gt;9302&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;path.conf: /home/imil/tmp/elasticsearch-1.1.2/config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;path.data: /var/db/elasticsearch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that I changed the standard ports to &lt;code&gt;$((standard_port + 2))&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;From the untarred directory, lauch &lt;code&gt;elasticsearch&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenVPN routes dynamic NATting</title>
      <link>http://imil.net/blog/posts/2018/openvpn-routes-dynamic-natting/</link>
      <pubDate>Sat, 10 Nov 2018 08:50:25 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2018/openvpn-routes-dynamic-natting/</guid>
      <description>&lt;p&gt;Assume the following scenario: your &lt;em&gt;{Open,Free}BSD&lt;/em&gt; &lt;a href=&#34;https://www.openbsd.org/faq/pf/index.html&#34;&gt;pf&lt;/a&gt;-enabled (yes, I know what&amp;rsquo;s missing and &lt;a href=&#34;https://wiki.netbsd.org/releng/netbsd9/&#34;&gt;it&amp;rsquo;s a pity&lt;/a&gt;, I am well aware of it) gateway connects to an &lt;a href=&#34;https://openvpn.net/&#34;&gt;OpenVPN&lt;/a&gt; server. This server pushes a couple of routes to your gateway that you&amp;rsquo;d like to be able to reach from within your own private network. As routers on the other end don&amp;rsquo;t have routes to your network(s), mandatory NAT is to be configured, but let&amp;rsquo;s also assume those routes are subject to change, and there&amp;rsquo;s more than a couple of them, some kind of dynamic rule adding should be considered.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes under my desk</title>
      <link>http://imil.net/blog/posts/2018/kubernetes-under-my-desk/</link>
      <pubDate>Tue, 16 Oct 2018 14:52:05 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2018/kubernetes-under-my-desk/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m diving into &lt;a href=&#34;https://kubernetes.io&#34;&gt;Kubernetes&lt;/a&gt; for a couple of months now. Discovering the possibilities and philosophy behind the hype definitely changed my mind. Yes, it is huge (in every sense ;) ) and it does change the way we, ex-sysops / ops / syasdmins do our work. Not tomorrow, not soon, now.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve had my hands on various managed &lt;a href=&#34;https://kubernetes.io/docs/setup/scratch/&#34;&gt;kubernetes clusters&lt;/a&gt; like &lt;em&gt;GKE (Google Container Engine)&lt;/em&gt;, &lt;em&gt;EKS (AWS Elastic Container Service)&lt;/em&gt; or the more humble &lt;a href=&#34;https://kubernetes.io/docs/setup/minikube/&#34;&gt;minikube&lt;/a&gt; but I&amp;rsquo;m not happy when I don&amp;rsquo;t understand what a technology is made of. So I &lt;em&gt;googled&lt;/em&gt; and &lt;em&gt;googled&lt;/em&gt; (yeah sorry &lt;em&gt;Qwant&lt;/em&gt; and &lt;em&gt;duckduckgo&lt;/em&gt; I needed actual answers), until I found &amp;gt;&lt;a href=&#34;https://github.com/salmanb/Kubernetes-HA-on-baremetal&#34;&gt;many&lt;/a&gt; &amp;gt;&lt;a href=&#34;https://github.com/kelseyhightower/kubernetes-the-hard-way&#34;&gt;incredibly&lt;/a&gt; &amp;gt;&lt;a href=&#34;http://nerdcoding.org/blog/2018/2018-05-08-Kubernetes-with-KVM-debian-host.html&#34;&gt;useful&lt;/a&gt; resources.&lt;/p&gt;</description>
    </item>
    <item>
      <title>date over HTTP</title>
      <link>http://imil.net/blog/posts/2018/date-over-http/</link>
      <pubDate>Sat, 05 May 2018 19:03:11 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2018/date-over-http/</guid>
      <description>&lt;p&gt;I always manage to get myself into weird issues&amp;hellip; I have this (pretty old) &lt;a href=&#34;https://en.wikipedia.org/wiki/Linksys_WRT54G_series&#34;&gt;wrt54g&lt;/a&gt; router that works well with &lt;a href=&#34;http://www.dd-wrt.com/&#34;&gt;dd-wrt&lt;/a&gt; &lt;em&gt;v3.0-r34311 vpn&lt;/em&gt; release. This router is installed in an apartment intended for rental where I happen to crash every now and then. It connects to an &lt;a href=&#34;https://openvpn.net/&#34;&gt;OpenVPN&lt;/a&gt; hub of mine so I can &lt;a href=&#34;https://mmonit.com/monit/&#34;&gt;monit&lt;/a&gt; it and be sure guests renting the apartment have working Internet access.&lt;/p&gt;&#xA;&lt;p&gt;The apartment is located on a small mountain and electricity is not exactly stable, from times to times power goes down and comes back up. And I noticed the &lt;em&gt;openvpn&lt;/em&gt; link sometimes fails to reconnect.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fetch RSVPs from Meetup for further processing</title>
      <link>http://imil.net/blog/posts/2018/fetch-rsvps-from-meetup-for-further-processing/</link>
      <pubDate>Mon, 23 Apr 2018 06:26:45 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2018/fetch-rsvps-from-meetup-for-further-processing/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m running a couple of demos on how and why to use &lt;a href=&#34;https://aws.amazon.com/athena/&#34;&gt;AWS Athena&lt;/a&gt; on a &lt;a href=&#34;https://www.meetup.com/AWS-Valencia/events/249290124/&#34;&gt;Meetup event&lt;/a&gt; tonight here at my hometown of &lt;a href=&#34;https://en.wikipedia.org/wiki/Valencia&#34;&gt;Valencia&lt;/a&gt;. Before you start arguing about &lt;em&gt;AWS&lt;/em&gt; services being closed source, note that &lt;a href=&#34;https://aws.amazon.com/athena/&#34;&gt;Athena&lt;/a&gt; is &amp;ldquo;just&amp;rdquo; an hosted version of &lt;a href=&#34;https://hive.apache.org/&#34;&gt;Apache Hive&lt;/a&gt;. Like pretty much every &lt;em&gt;AWS&lt;/em&gt; service is a hosted version of a famous &lt;em&gt;FOSS&lt;/em&gt; project.&lt;br&gt;&#xA;One of the demos is about fetching the &lt;a href=&#34;https://www.meetup.com/meetup_api/docs/rsvp/&#34;&gt;RSVP&lt;/a&gt; list and process it from a &lt;code&gt;JSON&lt;/code&gt; source to a basic &lt;code&gt;\t&lt;/code&gt; separated text file to be further read by &lt;a href=&#34;https://aws.amazon.com/athena/&#34;&gt;Athena&lt;/a&gt;.&lt;br&gt;&#xA;First thing is to get your &lt;a href=&#34;https://secure.meetup.com/meetup_api/key/&#34;&gt;Meetup API key&lt;/a&gt; in order to interact with &lt;a href=&#34;https://secure.meetup.com/meetup_api&#34;&gt;Meetup&amp;rsquo;s API&lt;/a&gt;. Once done, you can proceed using, for example, &lt;code&gt;curl&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running Debian from an USB stick on a MacBook Pro</title>
      <link>http://imil.net/blog/posts/2017/running-debian-from-an-usb-stick-on-a-macbook-pro/</link>
      <pubDate>Fri, 04 Aug 2017 12:53:12 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2017/running-debian-from-an-usb-stick-on-a-macbook-pro/</guid>
      <description>&lt;p&gt;Yeah well, it happened. In my &lt;a href=&#34;http://imil.net/blog/2017/07/31/Running-FreeBSD-from-an-USB-stick-on-a-MacBook-Pro/&#34;&gt;last post&lt;/a&gt; I was excited to get back to a BSD UNIX (FreeBSD) for my laptop, &lt;a href=&#34;https://twitter.com/iMilnb/status/892138918560374784&#34;&gt;I thought I had fought the worse&lt;/a&gt; when rebuilding kernel and world in order to have a working &lt;em&gt;DRM&lt;/em&gt; module for the Intel Iris 6100 that is bundled with this &lt;em&gt;MacBook Pro&lt;/em&gt; generation. But I was wrong. None of the BSDs around had support for the &lt;em&gt;BCM43602&lt;/em&gt; chip that provides WiFi to the laptop. What&amp;rsquo;s the point of a laptop without WiFi&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running FreeBSD from an USB stick on a MacBook Pro</title>
      <link>http://imil.net/blog/posts/2017/running-freebsd-from-an-usb-stick-on-a-macbook-pro/</link>
      <pubDate>Mon, 31 Jul 2017 16:03:14 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2017/running-freebsd-from-an-usb-stick-on-a-macbook-pro/</guid>
      <description>&lt;p&gt;It is possible to run &lt;a href=&#34;http://www.FreeBSD.org&#34;&gt;FreeBSD&lt;/a&gt; on a &lt;em&gt;MacBook Pro&lt;/em&gt; from an USB drive.&#xA;To achieve this, we will first prepare the USB drive from a &lt;em&gt;GNU/Linux&lt;/em&gt; machine and make it &lt;a href=&#34;https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface&#34;&gt;UEFI&lt;/a&gt; friendly:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# apt-get install parted&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# parted /dev/sdc&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;parted&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; mklabel gpt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;parted&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; mkpart ESP fat32 1MiB 513MiB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;parted&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; set &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; boot on&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;parted&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; quit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;From there, install &lt;em&gt;FreeBSD&lt;/em&gt; as you would for exmaple using the &lt;code&gt;kvm&lt;/code&gt; virtual machine &lt;em&gt;hypervisor&lt;/em&gt; on the GNU/Linux machine. Answer &amp;ldquo;yes&amp;rdquo; when the installer suggests to create a &lt;code&gt;freebsd-boot&lt;/code&gt; partition.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Launch the AWS Console from the CLI or a mobile phone</title>
      <link>http://imil.net/blog/posts/2017/launching-the-aws-management-console-from-the-cli/</link>
      <pubDate>Sat, 20 May 2017 15:48:47 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2017/launching-the-aws-management-console-from-the-cli/</guid>
      <description>&lt;p&gt;At &lt;em&gt;${DAYJOB}&lt;/em&gt; I happen to manipulate quite a few &lt;a href=&#34;https://aws.amazon.com/&#34;&gt;AWS&lt;/a&gt; accounts for different customers, and I find it really annoying to log out from one web console, to log into a new one, with the right credentials, account ids and &lt;a href=&#34;https://aws.amazon.com/iam/details/mfa/&#34;&gt;MFA&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console/&#34;&gt;Here&lt;/a&gt; you can read a good blog post on how to enable cross account access for third parties and use a basic script to open a web browser to switch from one account to the other.&lt;br&gt;&#xA;I liked this idea so I pushed it a bit further and wrote &lt;a href=&#34;https://github.com/iMilnb/awstools/tree/master/kriskross&#34;&gt;this small piece of code&lt;/a&gt; which allows you not only to switch accounts, but also to simply open any &lt;a href=&#34;https://aws.amazon.com/&#34;&gt;AWS&lt;/a&gt; account from the command line.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tricking bash HISTTIMEFORMAT</title>
      <link>http://imil.net/blog/posts/2017/tricking-bash-histtimeformat/</link>
      <pubDate>Sun, 30 Apr 2017 14:51:22 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2017/tricking-bash-histtimeformat/</guid>
      <description>&lt;p&gt;While trying to find a clean method to remove line numbers from the &lt;code&gt;history&lt;/code&gt; command, I found an interesting trick by using the &lt;code&gt;HISTTIMEFORMAT&lt;/code&gt; environment variable. Here&amp;rsquo;s what &lt;code&gt;bash&lt;/code&gt;&amp;rsquo;s &lt;code&gt;man&lt;/code&gt; says:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       HISTTIMEFORMAT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              If  this  variable  is  set and not null, its value is used as a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              format string &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; strftime&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;3&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; to print the time stamp associated&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              with  each  history  entry displayed by the history builtin.  If&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              this variable is set, time stamps are  written  to  the  history&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              file  so they may be preserved across shell sessions.  This uses&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              the history comment character  to  distinguish  timestamps  from&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              other history lines.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But it turns out you can actually put pretty much anything in there, and for example, an &lt;code&gt;ANSI&lt;/code&gt; escape sequence that does a line feed and erases the current line:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Extract data-bits from your Jenkins jobs</title>
      <link>http://imil.net/blog/posts/2017/extract-data-bits-from-your-jenkins-jobs/</link>
      <pubDate>Sun, 26 Mar 2017 10:44:50 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2017/extract-data-bits-from-your-jenkins-jobs/</guid>
      <description>&lt;p&gt;Another quicky.&lt;/p&gt;&#xA;&lt;p&gt;I read &lt;a href=&#34;http://mlawire.blogspot.com.es/2009/07/alias-for-quickly-encodingdecoding-html.html&#34;&gt;here&lt;/a&gt; that cool trick to convert &lt;em&gt;HTML entities&lt;/em&gt; to plain text:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;alias htmldecode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;perl -MHTML::Entities -pe &amp;#39;decode_entities(\$_)&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In a &lt;em&gt;Debian&lt;/em&gt; based system, this suppose to &lt;code&gt;apt-get install libhtml-parser-perl&lt;/code&gt;.&#xA;Why bother you may ask? Well because the (awful) &lt;a href=&#34;https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI&#34;&gt;Jenkins-cli&lt;/a&gt; outputs text areas content in encoded &lt;em&gt;HTML entities&lt;/em&gt;, and for example I like the idea of being able to test a standalone &lt;em&gt;packer&lt;/em&gt; template that&amp;rsquo;s failing.&lt;/p&gt;&#xA;&lt;p&gt;Finally, here&amp;rsquo;s the full usecase:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ansible playbook with packer in Jenkins</title>
      <link>http://imil.net/blog/posts/2017/ansible-playbook-with-packer-in-jenkins/</link>
      <pubDate>Sat, 25 Mar 2017 12:23:18 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2017/ansible-playbook-with-packer-in-jenkins/</guid>
      <description>&lt;p&gt;Quick one.&lt;/p&gt;&#xA;&lt;p&gt;While working on a build chain in order to register home-baked &lt;em&gt;AMIs&lt;/em&gt;, I wanted to use the &lt;code&gt;ansible-local&lt;/code&gt; &lt;a href=&#34;https://www.packer.io/&#34;&gt;packer&lt;/a&gt; &lt;em&gt;provisioner&lt;/em&gt; to setup the instance with a very basic &lt;em&gt;playbook&lt;/em&gt;. I needed to provide &lt;code&gt;ansible&lt;/code&gt; a playbook but didn&amp;rsquo;t find immediately how to achieve this within the &lt;a href=&#34;https://wiki.jenkins-ci.org/display/JENKINS/Packer+Plugin&#34;&gt;Jenkins-packer&lt;/a&gt; module. Turns out it&amp;rsquo;s tricky, in the &lt;em&gt;JSON Template Text&lt;/em&gt; (or the template file), declare the &lt;code&gt;playbook_file&lt;/code&gt; like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  [{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ansible-local&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;playbook_file&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{{ user `test_yml` }}&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PYTHONUNBUFFERED=1 ansible-playbook&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then in the &lt;em&gt;File Entries&lt;/em&gt; field, the &lt;em&gt;Variable Name&lt;/em&gt; must be &lt;code&gt;test_yml&lt;/code&gt; and &lt;em&gt;File Contents&lt;/em&gt; filled with the playbook.&lt;/p&gt;</description>
    </item>
    <item>
      <title>30 python lines Dynamic DNS</title>
      <link>http://imil.net/blog/posts/2017/20-lines-dynamic-dns-system/</link>
      <pubDate>Mon, 20 Feb 2017 09:00:11 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2017/20-lines-dynamic-dns-system/</guid>
      <description>&lt;p&gt;Here in Spain, I chose Movistar as my Internet provider, I must say I&amp;rsquo;m pretty happy with it, symmetric 300Mbps fiber optics and good service. The only annoying aspect is that they do not provide static IP for free, something I was used to and was very convenient.&lt;/p&gt;&#xA;&lt;p&gt;In order to reach my network from places where I can&amp;rsquo;t connect to my VPN, I wrote a very simple &lt;em&gt;Dynamic DNS&lt;/em&gt; system using &lt;a href=&#34;https://github.com/rthalley/dnspython&#34;&gt;dnspython&lt;/a&gt;, and it turned out to be fairly easy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CPU temperature collectd report on NetBSD</title>
      <link>http://imil.net/blog/posts/2017/collectd_netbsd_temperature/</link>
      <pubDate>Sun, 22 Jan 2017 12:09:00 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2017/collectd_netbsd_temperature/</guid>
      <description>&lt;p&gt;pkgsrc&amp;rsquo;s &lt;a href=&#34;https://collectd.org/&#34;&gt;collectd&lt;/a&gt; does  not support the &lt;code&gt;thermal&lt;/code&gt; plugin, so in order to publish thermal information I had to use the &lt;code&gt;exec&lt;/code&gt; plugin:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;LoadPlugin exec&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# more plugins&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;&amp;lt;Plugin exec&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;Exec &amp;#34;nobody:nogroup&amp;#34; &amp;#34;/home/imil/bin/temp.sh&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;&amp;lt;/Plugin&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And write this simple script that reads CPUs temperature from NetBSD&amp;rsquo;s &lt;code&gt;envstat&lt;/code&gt; command:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat bin/temp.sh &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/sh&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hostname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;hostname&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;interval&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; :&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        envstat|awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/cpu[0-9]/ {printf &amp;#34;%s %s\n&amp;#34;,$1,$3}&amp;#39;&lt;/span&gt;|&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; read c t&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PUTVAL &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;hostname&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/temperature/temperature-zone&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;c#cpu&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; interval=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;interval&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; N:&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;t%%.*&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sleep &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;interval&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I then send those values to an &lt;a href=&#34;https://www.influxdata.com/&#34;&gt;influxdb&lt;/a&gt; server:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ansible and AWS ASG, a (really) dynamic inventory</title>
      <link>http://imil.net/blog/posts/2016/ansible_and_aws_asg/</link>
      <pubDate>Fri, 05 Aug 2016 14:07:00 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2016/ansible_and_aws_asg/</guid>
      <description>&lt;p&gt;I found myself searching ridiculously too long to achieve what I believed was a simple task: to apply an &lt;a href=&#34;http://www.ansible.com&#34;&gt;Ansible&lt;/a&gt; &lt;em&gt;role&lt;/em&gt; to newly created  instances&amp;hellip; started by an &lt;a href=&#34;https://aws.amazon.com/autoscaling/&#34;&gt;Auto Scaling Group&lt;/a&gt;. If you&amp;rsquo;re used to &lt;a href=&#34;http://www.ansible.com&#34;&gt;Ansible&lt;/a&gt; you know that it relies on an &lt;em&gt;inventory&lt;/em&gt; to apply a &lt;code&gt;playbook&lt;/code&gt;, but obviously, when you&amp;rsquo;re firing up &lt;em&gt;EC2&lt;/em&gt; instances with the same &lt;code&gt;playbook&lt;/code&gt;, you are not able to know what will be your virtual machines IP addresses, nor can &lt;a href=&#34;http://docs.ansible.com/ansible/intro_dynamic_inventory.html&#34;&gt;ec2.py&lt;/a&gt;, the recommended method to deal with dynamic inventories.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Run CoreOS on FreeBSD&#39;s bhyve</title>
      <link>http://imil.net/blog/posts/2016/coreos_on_bhyve/</link>
      <pubDate>Tue, 21 Jun 2016 21:00:17 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2016/coreos_on_bhyve/</guid>
      <description>&lt;p&gt;No, I&amp;rsquo;m not following the hype, only I like to test things plus I feel there will be a growing demand for &lt;a href=&#34;https://www.docker.com/&#34;&gt;docker&lt;/a&gt; at &lt;em&gt;${DAYWORK}&lt;/em&gt;. I read here and there that &lt;a href=&#34;https://coreos.com/&#34;&gt;CoreOS&lt;/a&gt; was the Linux distribution of choice to play with &lt;a href=&#34;https://www.docker.com/&#34;&gt;docker&lt;/a&gt;, so  while at it, I picked up this one to dive into the container world.&#xA;Finally, I&amp;rsquo;ve been willing to put my hands on &lt;a href=&#34;http://bhyve.org/&#34;&gt;bhyve&lt;/a&gt; for quite a while, so I took this opportunity to learn all those new (to me) technologies at once.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrate FreeBSD root on UFS to ZFS</title>
      <link>http://imil.net/blog/posts/2016/migrate-freebsd-root-on-ufs-to-zfs/</link>
      <pubDate>Thu, 28 Apr 2016 17:24:17 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2016/migrate-freebsd-root-on-ufs-to-zfs/</guid>
      <description>&lt;p&gt;At &lt;em&gt;${DAYJOB}&lt;/em&gt; I&amp;rsquo;m using a &lt;em&gt;FreeBSD&lt;/em&gt; workstation &lt;a href=&#34;http://imil.net/blog/2014/07/02/back-to-2000-2005-freebsd-desktop-2/&#34;&gt;for quite a while&lt;/a&gt;. Everything goes smoothly except for the filesystem. When I first installed it, I chose &lt;a href=&#34;https://en.wikipedia.org/wiki/Unix_File_System&#34;&gt;UFS&lt;/a&gt; because &lt;em&gt;FreeBSD&lt;/em&gt; installer said that &lt;em&gt;root-on-ZFS&lt;/em&gt; was &amp;ldquo;experimental&amp;rdquo;. I later learned that nobody uses &lt;a href=&#34;https://en.wikipedia.org/wiki/Unix_File_System&#34;&gt;UFS&lt;/a&gt; anymore and that &lt;em&gt;root-on-ZFS&lt;/em&gt; is perfectly stable. Thing is, I chose &lt;a href=&#34;https://en.wikipedia.org/wiki/Unix_File_System&#34;&gt;UFS&lt;/a&gt; and I deeply regret it. Not because of &lt;a href=&#34;https://en.wikipedia.org/wiki/ZFS&#34;&gt;ZFS&lt;/a&gt;&amp;rsquo;s features that absolutely do not matter for me on the desktop, but because &lt;strong&gt;FreeBSD&lt;/strong&gt; implementation of &lt;a href=&#34;https://en.wikipedia.org/wiki/Unix_File_System&#34;&gt;UFS&lt;/a&gt; is terribly, terribly slow when it comes to manipulate big files. When I say slow, I mean that &lt;code&gt;pkg upgrade&lt;/code&gt; tends to &lt;strong&gt;FREEZE&lt;/strong&gt; the entire machine while extracting archives. That slow. And before you ask, yes, there&amp;rsquo;s been a lot of tuning on that side.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Letsencrypt friendly nginx configuration</title>
      <link>http://imil.net/blog/posts/2016/letsencrypt-friendly-nginx-configuration/</link>
      <pubDate>Sat, 12 Mar 2016 09:19:25 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2016/letsencrypt-friendly-nginx-configuration/</guid>
      <description>&lt;p&gt;So I use &lt;a href=&#34;https://gist.github.com/xrstf/581981008b6be0d2224f&#34;&gt;this great cheat sheet&lt;/a&gt; in order to use &lt;a href=&#34;https://letsencrypt.org/&#34;&gt;letsencrypt&lt;/a&gt; free Certificate authority on my own servers, but while this small doc is very straightforward it doesn&amp;rsquo;t explain much about &lt;a href=&#34;http://nginx.org&#34;&gt;nginx&lt;/a&gt;&amp;rsquo;s configuration. So I&amp;rsquo;ll drop my own right here so your journey through TLS is even simpler:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;$ cat /usr/pkg/etc/nginx/nginx.conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# this nginx installation comes from pkgsrc for both Linux and NetBSD&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# you might have to adapt paths to suit your needs... or switch to pkgsrc ;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;user   nginx  nginx;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;worker_processes  2;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;events {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;worker_connections  1024;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;http {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;include       /usr/pkg/etc/nginx/mime.types;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;default_type  application/octet-stream;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;sendfile        on;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;keepalive_timeout  65;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# a little bit of browser leverage doesn&amp;#39;t hurt :)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;gzip  on;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;gzip_vary on;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;gzip_proxied any;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;server {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# serve boths IPv4 and IPv6 FWIW&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;listen       [::]:80;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;listen       80;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;server_name  localhost example.com *.example.com;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# this is where letsencrypt will drop the callenge&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;location /.well-known/acme-challenge {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;default_type &amp;#34;text/plain&amp;#34;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;root /var/www/letsencrypt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# redirect everything else to HTTPS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;location / { return 302 https://$host$request_uri; }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;server {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;listen       [::]:443 ssl;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;listen       443 ssl;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# you&amp;#39;ll have to declare those domains accordingly in letsencrypt conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;server_name  localhost example.com *.example.com;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# here lies letsencrypt PEM files&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_certificate      /etc/letsencrypt/live/example.com/fullchain.pem;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_certificate_key  /etc/letsencrypt/live/example.com/privkey.pem;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# harden used protocols a little&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_session_cache    shared:SSL:1m;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_session_timeout  5m;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_ciphers &amp;#39;EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH&amp;#39;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl_prefer_server_ciphers  on;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# and then include actual locations&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;include sites/*;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A very basic &lt;code&gt;proxy_pass&lt;/code&gt; location would be:&lt;/p&gt;</description>
    </item>
    <item>
      <title>5 minutes collectd &#43; facette setup</title>
      <link>http://imil.net/blog/posts/2016/5-minutes-collectd-facette-setup/</link>
      <pubDate>Wed, 09 Mar 2016 13:19:46 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2016/5-minutes-collectd-facette-setup/</guid>
      <description>&lt;p&gt;I recently added a fantastic graphing tool named &lt;a href=&#34;http://facette.io&#34;&gt;facette&lt;/a&gt; to &lt;a href=&#34;http://pkgsrc.org&#34;&gt;pkgsrc&lt;/a&gt;.&#xA;&lt;a href=&#34;http://facette.io&#34;&gt;Facette&lt;/a&gt; knows how to pull data sources from various backends, and among them, the famous &lt;a href=&#34;https://collectd.org&#34;&gt;collectd&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In this article, we will see how to setup both on &lt;a href=&#34;http://NetBSD.org&#34;&gt;NetBSD&lt;/a&gt; but keep in mind it should also work for any platform supported by &lt;a href=&#34;http://pkgsrc.org&#34;&gt;pkgsrc&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;First up, &lt;a href=&#34;https://collectd.org&#34;&gt;collectd&lt;/a&gt; installation. It can be done either with &lt;a href=&#34;http://pkgin.net&#34;&gt;pkgin&lt;/a&gt; (binary installation) or &lt;code&gt;pkgsrc&lt;/code&gt; (source installation):&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;with &lt;code&gt;pkgin&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo pkgin in collectd collectd-rrdtool&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;with &lt;code&gt;pkgsrc&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; $ cd /usr/pkgsrc/sysutils/collectd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; $ sudo make install clean&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; $ cd ../collectd-rrdtool&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; $ sudo make install clean&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tune up a minimal &lt;code&gt;collectd&lt;/code&gt; configuration&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simpler postfix &#43; dspam</title>
      <link>http://imil.net/blog/posts/2016/simpler-postfix-dspam-procmail-setup/</link>
      <pubDate>Wed, 02 Mar 2016 15:52:03 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2016/simpler-postfix-dspam-procmail-setup/</guid>
      <description>&lt;p&gt;I have read a shitload of overcomplicated setups to bring up a &lt;a href=&#34;http://dspam.nuclearelephant.com/&#34;&gt;postfix&lt;/a&gt; / &lt;a href=&#34;http://www.postfix.org/&#34;&gt;dspam&lt;/a&gt; &lt;em&gt;SMTP&lt;/em&gt; + antispam server, and finally came to a much lighter and simpler configuration by basically reading documentation and real life examples.&#xA;Note this is suitable for a personnal and basic environment, no database, no virtual setup. Basic stuff.&lt;/p&gt;&#xA;&lt;p&gt;The target system is &lt;em&gt;NetBSD&lt;/em&gt; but this short doc should apply to pretty much any &lt;em&gt;UNIX / Linux&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Start pkgsrc&#39;s nginx with systemd</title>
      <link>http://imil.net/blog/posts/2016/start-pkgsrc-s-nginx-with-systemd/</link>
      <pubDate>Sun, 28 Feb 2016 08:17:20 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2016/start-pkgsrc-s-nginx-with-systemd/</guid>
      <description>&lt;p&gt;Not so long ago, I wrote about &lt;a href=&#34;https://imil.net/blog/2015/07/05/using-pkgsrc-on-debian-gnulinux/&#34;&gt;using pkgsrc on Debian GNU/Linux&lt;/a&gt;, and assumed you&amp;rsquo;d start an installed service using &lt;a href=&#34;https://www.netbsd.org/docs/guide/en/chap-rc.html&#34;&gt;rc.d&lt;/a&gt;. When I setup the new &lt;a href=&#34;//iMil.net&#34;&gt;iMil.net&lt;/a&gt; server, I decided to give a try to &lt;a href=&#34;http://www.linux-kvm.org/page/Main_Page&#34;&gt;kvm&lt;/a&gt; as it is easier to maintain, has good performances (&lt;a href=&#34;https://major.io/2014/06/22/performance-benchmarks-kvm-vs-xen/&#34;&gt;sometimes better than Xen&lt;/a&gt;), nice administration tools, plus &lt;a href=&#34;http://netbsd.gw.com/cgi-bin/man-cgi?virtio+4+NetBSD-7.0&#34;&gt;NetBSD now has a good VirtIO driver&lt;/a&gt; but no &lt;a href=&#34;http://wiki.xen.org/wiki/Xen_Linux_PV_on_HVM_drivers&#34;&gt;PVHVM&lt;/a&gt; support yet.&lt;/p&gt;&#xA;&lt;p&gt;The first thing I do when setting up a &lt;em&gt;Debian Jessie&lt;/em&gt; server is getting rid of &lt;code&gt;systemd&lt;/code&gt;, whose philosophy and quality don&amp;rsquo;t match my personnal taste; but in that case, I wanted to use &lt;code&gt;libvirtd&lt;/code&gt; so I could manage my virtual machines with &lt;code&gt;virt-manager&lt;/code&gt;, and as a matter of fact, &lt;code&gt;libvirtd&lt;/code&gt; has a hard dependency on &lt;code&gt;systemd&lt;/code&gt;. There was no escape this time, I had to learn and use it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NetBSD/amd64 7.0 on kvm</title>
      <link>http://imil.net/blog/posts/2016/netbsdamd64-7-0-kvm/</link>
      <pubDate>Fri, 29 Jan 2016 11:04:30 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2016/netbsdamd64-7-0-kvm/</guid>
      <description>&lt;p&gt;If you recently tried to install &lt;a href=&#34;https://www.netbsd.org/releases/formal-7/NetBSD-7.0.html&#34;&gt;NetBSD 7.0&lt;/a&gt; using &lt;a href=&#34;http://www.linux-kvm.org/page/Main_Page&#34;&gt;Linux KVM&lt;/a&gt; you might have encountered the following failure:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://imil.net/blog/stuff/NetBSD-7.0-kvm.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;This bug have been recently fixed on the 7-branch but the official ISO images are not yet updated, so you&amp;rsquo;ll have to use &lt;a href=&#34;http://nyftp.netbsd.org/pub/NetBSD-daily/netbsd-7/&#34;&gt;NetBSD daily builds&lt;/a&gt; mini-ISO which includes &lt;a href=&#34;https://releng.netbsd.org/cgi-bin/req-7.cgi?show=1011&#34;&gt;Christos fix to bus_dma.c&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;For the record, here&amp;rsquo;s the &lt;code&gt;virt-install&lt;/code&gt; command I use:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo virt-install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --virt-type kvm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --name korriban&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --ram &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; --disk path&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/dev/vms/korriban,bus&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;virtio&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --vcpus &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --network bridge:br0,model&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;virtio&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --graphics vnc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --accelerate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --noautoconsole&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --cdrom /home/imil/iso/boot.iso&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    --cpu host&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Performances are really good, the host is a &lt;em&gt;Debian GNU/Linux 8.0 amd64&lt;/em&gt; running on &lt;a href=&#34;https://www.online.net/fr/serveur-dedie/dedibox-classic&#34;&gt;Online&amp;rsquo;s Dedibox Classic 2015&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>t&#39;es trop VIP</title>
      <link>http://imil.net/blog/posts/2007/tes-trop-vip/</link>
      <pubDate>Mon, 28 May 2007 22:44:54 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2007/tes-trop-vip/</guid>
      <description>&lt;p&gt;waiii alors j&amp;rsquo;entend d&amp;rsquo;ici &amp;ldquo;haooon iMil il a cedé aux sirènes du web deux-zero toussaaaa, vla qu&amp;rsquo;il fait dla CSS et du PHP&amp;rdquo;. Bon ok ouais chu un peu tombé dans le hype-fashion, mais avouez, le ptit &amp;ldquo;Tags cloud&amp;rdquo; là, c&amp;rsquo;est pas convivial tout plein ? Pour réaliser cette petite mignonnerie, j&amp;rsquo;ai été piocher &lt;a href=&#34;http://sw-guide.de/wordpress/plugins/simple-tagging/simple-tagging-tag-cloud/&#34;&gt;ici&lt;/a&gt;, et pour réparer l&amp;rsquo;import de categories-toutes pas-fashion en Tags, il faut suivre ce que dit le monsieur &lt;a href=&#34;http://www.nextbigleap.com/blog/development/simple-tagging-categories-import-fix/&#34;&gt;ici&lt;/a&gt;. Le cas échéant, on se mange un joli :&lt;/p&gt;</description>
    </item>
    <item>
      <title>you must unLEaaarn what ou have leaaarned</title>
      <link>http://imil.net/blog/posts/2007/you-must-unleaaarn-what-ou-have-leaaarned/</link>
      <pubDate>Mon, 09 Apr 2007 03:29:44 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2007/you-must-unleaaarn-what-ou-have-leaaarned/</guid>
      <description>&lt;p&gt;alors voila, pardon. Y&amp;rsquo;a -fiou- 2 ans, &lt;a href=&#34;http://imil.net/wp/index.php?s=dspam&#34;&gt;je bavais&lt;/a&gt; comme un vilain sur &lt;a href=&#34;http://dspam.nuclearelephant.com/&#34;&gt;dspam&lt;/a&gt;, et là, là, eh bah je m&amp;rsquo;incline. In-cro-yable efficacité, je lui ai fait bouffer un millier de hams, un millier de spams, et pouf, le vla-t-y pas qu&amp;rsquo;il me catche un bon 96% de saloperies. Alors attention, c&amp;rsquo;est sur mon kimloli, c&amp;rsquo;est du perso, c&amp;rsquo;est pas mutualisé pour deux sous. Mais intégration à sendmail les doigts dans le nez (+ procmail):&lt;/p&gt;</description>
    </item>
    <item>
      <title>merde, j&#39;ai pas de backup...</title>
      <link>http://imil.net/blog/posts/2007/merde-jai-pas-de-backup/</link>
      <pubDate>Sat, 24 Mar 2007 16:28:15 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2007/merde-jai-pas-de-backup/</guid>
      <description>&lt;p&gt;Combien de fois cette phrase a retenti dans vos esprits imprudents ? dans mon esprit imprudent à moi, plein.&#xA;Alors, comme je viens de toper un &lt;a href=&#34;http://www.kimsufi.com/&#34;&gt;kimloli&lt;/a&gt; sur les conseils de mon bouquetin favori, je me suis dit que, pour une fois, j&amp;rsquo;y collerais bien une procedure de backup propre.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai déjà parlé et probablement pasté ici même un petit script gentil qui, grâce au couple &lt;em&gt;rsync / rsyncd&lt;/em&gt;, permettait de rendre cette opération relativement rapide assez simplement. J&amp;rsquo;y ai apporté quelques modifs et enrobé le tout d&amp;rsquo;un chouillat de sécu. Un chouillat j&amp;rsquo;ai dit, trépigne pas spoty.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Xen vs b44</title>
      <link>http://imil.net/blog/posts/2007/xen-vs-b44/</link>
      <pubDate>Sat, 10 Feb 2007 17:50:41 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2007/xen-vs-b44/</guid>
      <description>&lt;p&gt;Après moult heures passées à backporter des bouts de Xen 3.0.4 vers Xen 3.0.3 pour essayer de garder un peu de cohérence dans mon packaging, j&amp;rsquo;ai fini par choisir la solution de facilité et récupérer &lt;a href=&#34;http://www.xensource.com/download/index_3.0.4.html&#34;&gt;Xen 3.0.4 chez XenSource&lt;/a&gt;. Eh-bin-ça-marche. &lt;strong&gt;Enfin&lt;/strong&gt; cette saloperie de broadcom 4400 daigne faire transiter des lutins magiques depuis un dom0.&#xA;Bon leur quenelle est en 2.6.16, le boot est un peu chaotique, mais j&amp;rsquo;ai du link convivial.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LVM, Xen et snapshots</title>
      <link>http://imil.net/blog/posts/2007/lvm-xen-et-snapshots/</link>
      <pubDate>Fri, 26 Jan 2007 17:32:03 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2007/lvm-xen-et-snapshots/</guid>
      <description>&lt;p&gt;Alors que j&amp;rsquo;étais plein d&amp;rsquo;entrain et que je m&amp;rsquo;apprétais à utiliser les snapshots LVM avec mon Xen, je lance, confiant, un&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;et je me mange un&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Je cherche donc un peu, et je tombe sur ça &lt;a href=&#34;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=343671#msg20&#34;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=343671#msg20&lt;/a&gt;&#xA;Je m&amp;rsquo;empresse donc d&amp;rsquo;éditer le-dit udev-rules, comme mentionné dans le ticket, pis ça marche.&lt;/p&gt;</description>
    </item>
    <item>
      <title>rhaaa mais arrête de kiffer t&#39;en fous partouuuut</title>
      <link>http://imil.net/blog/posts/2007/rhaaa-mais-arrete-de-kiffer-ten-fous-partouuuut/</link>
      <pubDate>Sat, 20 Jan 2007 15:40:42 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2007/rhaaa-mais-arrete-de-kiffer-ten-fous-partouuuut/</guid>
      <description>&lt;p&gt;Je pouvais evidemment pas résister à transformer tatooine, ma ws ubuntu, en convi-Xen0. Muni d&amp;rsquo;une carte graphique à base de chipset nvidia, j&amp;rsquo;avais lu de-ci de-la qu&amp;rsquo;il existait des patches pour faire fonctionner les drivers du malin sur un domaine 0.Voici donc les quelques liens sur lesquels je me suis basé ainsi que quelques confs&lt;/p&gt;&#xA;&lt;p&gt;. &lt;a href=&#34;http://en.opensuse.org/Use_Nvidia_driver_with_Xen&#34;&gt;Procédure de chez OpenSUSE&lt;/a&gt; pour patcher les-dits drivers&lt;/p&gt;&#xA;&lt;p&gt;Perso, j&amp;rsquo;ai pas litteralement suivi la procédure, après patchage, j&amp;rsquo;ai simplement executé nvidia-installer, présent à la racine de l&amp;rsquo;archive &lt;em&gt;NVIDIA-Linux-x86-1.0-9631-pkg1&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MOI GNAIME PAS ÇA TOUS LES GNAGROUTS</title>
      <link>http://imil.net/blog/posts/2007/moi-gnaime-pas-ca-tous-les-gnagrouts/</link>
      <pubDate>Mon, 08 Jan 2007 18:57:25 +0000</pubDate>
      <guid>http://imil.net/blog/posts/2007/moi-gnaime-pas-ca-tous-les-gnagrouts/</guid>
      <description>&lt;p&gt;Si ton Xen t&amp;rsquo;insulte tout plein avec des phrases du genre :&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Pas de panique ami lutin, le pauvre Xen n&amp;rsquo;a juste tout plus de devices loopback à disposition. Rend leur heureux, et agrémente ton &lt;em&gt;/etc/modprobe.conf&lt;/em&gt; de cette petite ligne magique :&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Et tu pourras &lt;em&gt;xm create&lt;/em&gt; tout plein de domaines supplémentaires.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
