<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Remi Bergsma's blog</title><link>https://blog.remibergsma.com/</link><description>Recent content on Remi Bergsma's blog</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Thu, 19 Jan 2017 20:55:07 +0100</lastBuildDate><atom:link href="https://blog.remibergsma.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Inter-VPC connectivity made easy in Cosmic 5.3</title><link>https://blog.remibergsma.com/2017/01/19/inter-vpc-connectivity-made-easy-in-cosmic-5-3/</link><pubDate>Thu, 19 Jan 2017 20:48:50 +0100</pubDate><guid>https://blog.remibergsma.com/2017/01/19/inter-vpc-connectivity-made-easy-in-cosmic-5-3/</guid><description>&lt;p&gt;It’s been &lt;a href="https://www.cupfighter.net/2016/01/welcome-mission-critical-cloud"&gt;one year after Cosmic started&lt;/a&gt;, forked off of the &lt;a href="http://cloudstack.apache.org/"&gt;Apache CloudStack project&lt;/a&gt;. Cosmic 5.3 brings easy-to-use connectivity between VPCs. CloudStack users will recognise the Private Gateway functionality, which has been completely refactored in Cosmic 5.3. This blog shows what’s new.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The goal: connect VMs together that live in different VPCs&lt;br/&gt;&#10;&lt;/strong&gt;Basically, what you want is to setup a bunch of VPCs, create networks inside them where the VMs will live. Once you do that, there is no easy way to connect VMs from one VPC to another. Sure, you could make a VPN connection, and that is preferred in some cases. When you work in the same availability zone, and for example want Management VMs to access Acceptance or Production, there’s an easy alternative to get connectivity.&lt;/p&gt;</description></item><item><title>Workshop: Build Your Own Cloud In Record Time With Cosmic</title><link>https://blog.remibergsma.com/2016/07/03/workshop-build-your-own-cloud-in-record-time-with-cosmic/</link><pubDate>Sun, 03 Jul 2016 10:31:17 +0200</pubDate><guid>https://blog.remibergsma.com/2016/07/03/workshop-build-your-own-cloud-in-record-time-with-cosmic/</guid><description>&lt;p&gt;At &lt;a href="http://www.devopsdays.org/events/2016-amsterdam/welcome/"&gt;DevOpsDays Amsterdam 2016&lt;/a&gt; I hosted a &lt;a href="http://www.devopsdays.org/events/2016-amsterdam/workshops/remi-bergsma/"&gt;3 hour hands-on workshop&lt;/a&gt; with my colleague &lt;a href="https://twitter.com/neubauerf"&gt;Fred Neubauer&lt;/a&gt;. In these 3 hours we had 12 people build their own cloud based on &lt;a href="https://github.com/MissionCriticalCloud/cosmic"&gt;Cosmic Cloud&lt;/a&gt;. It was great fun!&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="DevOpsDays Amsterdam 2016 Cosmic workshop" class="alignnone size-large wp-image-25262" src="https://blog.remibergsma.com/wp-content/uploads/2016/07/devopsdaysamsterdam2016workshop.jpg"/&gt;&lt;/p&gt;&#10;&lt;p&gt;The slides are here:&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.slideshare.net/slideshow/embed_code/63541507" rel="noopener"&gt;View this presentation on SlideShare&lt;/a&gt;&lt;/div&gt;</description></item><item><title>Creating your own CloudStack release is easy!</title><link>https://blog.remibergsma.com/2016/03/14/creating-your-own-cloudstack-release-is-easy/</link><pubDate>Mon, 14 Mar 2016 21:21:56 +0100</pubDate><guid>https://blog.remibergsma.com/2016/03/14/creating-your-own-cloudstack-release-is-easy/</guid><description>&lt;p&gt;&lt;img alt="customuiversion" class="alignright wp-image-25245" height="172" src="https://blog.remibergsma.com/wp-content/uploads/2016/03/customuiversion.png" width="290"/&gt;I was the &lt;a href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/Release+principles+for+Apache+CloudStack+4.6+and+up"&gt;Release Manager&lt;/a&gt; for Apache CloudStack versions &lt;em&gt;4.6&lt;/em&gt;, &lt;em&gt;4.7&lt;/em&gt; and &lt;em&gt;4.8&lt;/em&gt; and during this time many people told me they thought it’s hard to build and package &lt;a href="http://cloudstack.apache.org/"&gt;Apache CloudStack&lt;/a&gt;. The truth is, it’s not that hard once you know the steps to take. 😉&lt;/p&gt;&#10;&lt;p&gt;Next to that there’s the release pace. You may want to move in a different pace than the project is. There’ve been lots of discussions for example on a fast release cycle, and also on LTS-releases on the other hand. In this blog post I’ll show you how easy it is to create your own CloudStack release to satisfy the demands of your organisation.&lt;/p&gt;</description></item><item><title>How Tomcat war drops drive continuous deployments of CloudStack to production</title><link>https://blog.remibergsma.com/2016/03/02/how-tomcat-war-drops-drive-continuous-deployments-of-cloudstack-to-production/</link><pubDate>Wed, 02 Mar 2016 11:25:42 +0100</pubDate><guid>https://blog.remibergsma.com/2016/03/02/how-tomcat-war-drops-drive-continuous-deployments-of-cloudstack-to-production/</guid><description>&lt;p&gt;&lt;img alt="300px-Tomcat-logo.svg" class="alignright size-thumbnail wp-image-25137" height="100" src="https://blog.remibergsma.com/wp-content/uploads/2016/03/300px-tomcat-logo-svg.png" width="150"/&gt;Upgrading &lt;a href="http://cloudstack.apache.org/"&gt;CloudStack&lt;/a&gt; can be tough at times. Some say therefore you should do as little upgrades as possible. My approach is to make it easy and make the number of changes as small as possible. The more upgrades, the better. The smallest unit is a single Pull Request with a single commit. That we should be able to deploy to production in an automated way with almost no effort. At &lt;a href="https://schubergphilis.com/"&gt;Schuberg Philis&lt;/a&gt;, our current deploy record to our &lt;a href="https://github.com/MissionCriticalCloud"&gt;Mission Critical Clouds&lt;/a&gt; is five times a day. Here’s how we do it.&lt;/p&gt;</description></item><item><title>Video: Operating CloudStack the Easy Way (Automation!)</title><link>https://blog.remibergsma.com/2015/11/12/video-operating-cloudstack-the-easy-way-automation/</link><pubDate>Thu, 12 Nov 2015 10:27:08 +0100</pubDate><guid>https://blog.remibergsma.com/2015/11/12/video-operating-cloudstack-the-easy-way-automation/</guid><description>&lt;p&gt;Watch my talk about how we do CloudStack Operations. It eas presented at the CloudStack Collaboration Conference in Dublin, on October 9th 2015.&lt;/p&gt;&#10;&lt;p&gt;The slides &lt;a href="https://blog.remibergsma.com/2015/10/09/slides-from-my-talk-operating-cloudstack-the-easy-way-at-the-cloudstack-collaboration-conference-2015-in-dublin/"&gt;can be found in this post&lt;/a&gt;, and the code &lt;a href="https://github.com/schubergphilis/cloudstackOps"&gt;can be found on Github&lt;/a&gt;.&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.youtube.com/watch?v=eDSsqyN_FH4" rel="noopener"&gt;Watch this video on YouTube&lt;/a&gt;&lt;p class="embed-note"&gt;This video is no longer available.&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Video of my CCCEU keynote: The Mission Critical Cloud</title><link>https://blog.remibergsma.com/2015/11/12/video-of-my-ccceu-keynote-the-mission-critical-cloud/</link><pubDate>Thu, 12 Nov 2015 10:21:54 +0100</pubDate><guid>https://blog.remibergsma.com/2015/11/12/video-of-my-ccceu-keynote-the-mission-critical-cloud/</guid><description>&lt;p&gt;Watch my keynote about the “The Mission Critical Cloud” at CloudStack Collaboration Conference in Dublin, on October 8th 2015.&lt;/p&gt;&#10;&lt;p&gt;The slides &lt;a href="https://blog.remibergsma.com/2015/10/08/keynote-at-the-cloudstack-collaboration-conference-in-dublin/"&gt;can be found in this post&lt;/a&gt;.&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.youtube.com/watch?v=arsCQyz06zs" rel="noopener"&gt;Watch this video on YouTube&lt;/a&gt;&lt;p class="embed-note"&gt;This video is no longer available.&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Slides from my talk: “Operating CloudStack: the easy way” at the CloudStack Collaboration Conference 2015 in Dublin</title><link>https://blog.remibergsma.com/2015/10/09/slides-from-my-talk-operating-cloudstack-the-easy-way-at-the-cloudstack-collaboration-conference-2015-in-dublin/</link><pubDate>Fri, 09 Oct 2015 09:45:29 +0200</pubDate><guid>https://blog.remibergsma.com/2015/10/09/slides-from-my-talk-operating-cloudstack-the-easy-way-at-the-cloudstack-collaboration-conference-2015-in-dublin/</guid><description>&lt;p&gt;Here are the slides from my talk about CloudStack automation, at the CloudStack Collaboration Conference in Dublin today.&lt;br/&gt;&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.slideshare.net/slideshow/embed_code/53725283" rel="noopener"&gt;View this presentation on SlideShare&lt;/a&gt;&lt;/div&gt;</description></item><item><title>My keynote at the CloudStack Collaboration Conference in Dublin</title><link>https://blog.remibergsma.com/2015/10/08/keynote-at-the-cloudstack-collaboration-conference-in-dublin/</link><pubDate>Thu, 08 Oct 2015 09:15:36 +0200</pubDate><guid>https://blog.remibergsma.com/2015/10/08/keynote-at-the-cloudstack-collaboration-conference-in-dublin/</guid><description>&lt;p class="p1"&gt;&lt;span class="s1"&gt;Here are the slides from my keynote presentation at the CloudStack Collaboration Conference in Dublin today.&lt;/span&gt;&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.slideshare.net/slideshow/embed_code/53671154" rel="noopener"&gt;View this presentation on SlideShare&lt;/a&gt;&lt;/div&gt;&#10;&lt;p class="p1"&gt;Tomorrow I’ll do another presentation and talk about automation cloud operations!&lt;/p&gt;</description></item><item><title>Rebooting a XenServer cluster while all VMs keep running</title><link>https://blog.remibergsma.com/2015/07/11/rebooting-a-xenserver-cluster-while-all-vms-keep-running/</link><pubDate>Sat, 11 Jul 2015 14:42:00 +0200</pubDate><guid>https://blog.remibergsma.com/2015/07/11/rebooting-a-xenserver-cluster-while-all-vms-keep-running/</guid><description>&lt;p&gt;At &lt;a href="http://www.schubergphilis.com"&gt;Schuberg Philis&lt;/a&gt;, we manage quite a farm of XenServer clusters. As the number of clusters we operate goes up, so goes the time it takes to manage them all. And, let’s be honest: patching and upgrading isn’t the most exciting work. We needed more automation and I took the challenge 😉&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The challenge&lt;br/&gt;&#10;&lt;/strong&gt;Patching itself is not a challenge, as we automated that already using Chef. The challenge comes when maintenance tasks require a hypervisor reboot in order to take effect. In such cases, some magic is needed to keep all VMs running, because we aim for zero down time due to maintenance. This blog describes how I automated rebooting full XenServer clusters while all VMs keep running.&lt;/p&gt;</description></item><item><title>Workshop: hands-on CloudStack at DevOpsDays Amsterdam</title><link>https://blog.remibergsma.com/2015/06/24/workshop-hands-on-cloudstack-at-devopsdays-amsterdam/</link><pubDate>Wed, 24 Jun 2015 21:08:27 +0200</pubDate><guid>https://blog.remibergsma.com/2015/06/24/workshop-hands-on-cloudstack-at-devopsdays-amsterdam/</guid><description>&lt;p&gt;&lt;img alt="dod-amsterdam" class="size-thumbnail wp-image-24975 alignleft" height="136" src="https://blog.remibergsma.com/wp-content/uploads/2015/06/dod-amsterdam.png" width="150"/&gt;Today I hosted a CloudStack hands-on workshop at &lt;a href="http://www.devopsdays.org/events/2015-amsterdam/"&gt;DevOpsDays Amsterdam&lt;/a&gt;, together with my colleague &lt;a href="https://twitter.com/neubauerf"&gt;Fred Neubauer&lt;/a&gt;. It was really awesome to see all attendees building their own CloudStack cloud. And succeeding!&lt;/p&gt;&#10;Here are the slides and instructions: &lt;div class="embed-fallback"&gt;&lt;a href="https://www.slideshare.net/slideshow/embed_code/49740905" rel="noopener"&gt;View this presentation on SlideShare&lt;/a&gt;&lt;/div&gt; We proposed the workshop to the &lt;a href="http://events.linuxfoundation.org/events/cloudstack-collaboration-conference-europe"&gt;CloudStack Collaboration Conference Europe&lt;/a&gt;, in Dublin next October so we might do it again!&#10;&lt;figure class="wp-caption alignnone"&gt;&lt;img alt="dod_fred" class="wp-image-24973 size-large" src="https://blog.remibergsma.com/wp-content/uploads/2015/06/dod_fred.png"/&gt;&lt;figcaption class="wp-caption-text"&gt;Fred in action!&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;figure class="wp-caption alignnone"&gt;&lt;img alt="That's me in action" class="size-large wp-image-24974" src="https://blog.remibergsma.com/wp-content/uploads/2015/06/dod_remi.png"/&gt;&lt;figcaption class="wp-caption-text"&gt;That’s me in action!&lt;/figcaption&gt;&lt;/figure&gt;</description></item><item><title>Slides from my talk: “The Mission Critical Cloud” at the Amsterdam CloudStack meetup</title><link>https://blog.remibergsma.com/2015/06/10/slides-from-my-talk-the-mission-critical-cloud-at-the-amsterdam-cloudstack-meetup/</link><pubDate>Wed, 10 Jun 2015 18:30:07 +0200</pubDate><guid>https://blog.remibergsma.com/2015/06/10/slides-from-my-talk-the-mission-critical-cloud-at-the-amsterdam-cloudstack-meetup/</guid><description>&lt;p&gt;Here are the slides from my presentation at the CloudStack meetup today in Amsterdam.&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.slideshare.net/slideshow/embed_code/49226312" rel="noopener"&gt;View this presentation on SlideShare&lt;/a&gt;&lt;/div&gt;&#10;&lt;p&gt;Get the code on Github.&lt;/p&gt;</description></item><item><title>Accepting pull requests: the easy way</title><link>https://blog.remibergsma.com/2015/05/24/accepting-pull-requests-the-easy-way/</link><pubDate>Sun, 24 May 2015 21:13:47 +0200</pubDate><guid>https://blog.remibergsma.com/2015/05/24/accepting-pull-requests-the-easy-way/</guid><description>&lt;p&gt;&lt;img alt="one-does-not-pull-request" class="wp-image-24500 size-full alignnone" height="204" src="https://blog.remibergsma.com/wp-content/uploads/2015/05/one-does-not-pull-request.jpg" width="493"/&gt;&lt;/p&gt;&#10;&lt;p&gt;Recently I &lt;a href="http://comments.gmane.org/gmane.comp.apache.cloudstack.devel/59332"&gt;became a committer&lt;/a&gt; in the &lt;a href="http://cloudstack.apache.org/"&gt;Apache CloudStack project&lt;/a&gt;. Last week when I was working with &lt;a href="https://twitter.com/_bhaisaab"&gt;Rohit Yadav&lt;/a&gt; from ShapeBlue he showed me how he had automated the process &lt;a href="https://github.com/bhaisaab/dotfiles/blob/master/git/gitconfig"&gt;with a Git alias&lt;/a&gt;. I really like it so I’ll share it here as well.&lt;/p&gt;&#10;&lt;p&gt;First of all, pull requests are created on &lt;a href="http://github.com"&gt;Github.com&lt;/a&gt;. Rohit created a git alias called simply ‘pr’. This is how it looks like (for the impatient: copy/paste the one-liner below). The command below is for easy reading, it will print a syntax error.&lt;/p&gt;</description></item><item><title>Making XenServer and CloudStack sing and dance together (again)</title><link>https://blog.remibergsma.com/2015/05/23/making-xenserver-and-cloudstack-sing-and-dance-together-again/</link><pubDate>Sat, 23 May 2015 15:37:29 +0200</pubDate><guid>https://blog.remibergsma.com/2015/05/23/making-xenserver-and-cloudstack-sing-and-dance-together-again/</guid><description>&lt;p&gt;&lt;img alt="xenserver" class="alignleft wp-image-24242 size-full" height="56" src="https://blog.remibergsma.com/wp-content/uploads/2015/05/xenserver.png" width="182"/&gt;XenServer and Apache CloudStack work nicely together and form an easy-to-go couple for many companies. However, not many people know that recent releases changed the cooperation between the two drastically.&lt;/p&gt;&#10;&lt;p&gt;I’m not only talking about the shiny new Apache CloudStack 4.5 release, but the change was back ported to recent releases of 4.3.x and 4.4.x as well. This means that if you run XenServer and CloudStack, you need the review the information below carefully.&lt;/p&gt;</description></item><item><title>Making a XenServer unique after cloning from template</title><link>https://blog.remibergsma.com/2015/05/07/making-a-xenserver-unique-after-cloning-from-template/</link><pubDate>Thu, 07 May 2015 21:39:42 +0200</pubDate><guid>https://blog.remibergsma.com/2015/05/07/making-a-xenserver-unique-after-cloning-from-template/</guid><description>&lt;p&gt;&lt;img alt="xenserver" class="alignleft wp-image-24242 size-full" height="56" src="https://blog.remibergsma.com/wp-content/uploads/2015/05/xenserver.png" width="182"/&gt;At work we’re creating a &lt;a href="http://cloudstack.apache.org"&gt;CloudStack&lt;/a&gt; development environment that can be created and destroyed as we go. One of the requirements is to quickly create a couple of hypervisors to run some tests. &lt;a href="http://www.linux-kvm.org/page/Main_Page"&gt;KVM&lt;/a&gt; is easy: they are just Linux boxes with some extra packages. &lt;a href="http://xenserver.org/"&gt;XenServer&lt;/a&gt; is a different story.&lt;/p&gt;&#10;&lt;p&gt;Imagine you create a XenServer by installing it from ISO, then saving it as a template. Then create two instances from it called xen1 and xen2. If you try to add them to CloudStack, you’ll notice only the first one succeeds.&lt;/p&gt;</description></item><item><title>CloudStack Day Austin Video: Operating CloudStack – Sharing my Tool Box</title><link>https://blog.remibergsma.com/2015/04/19/cloudstack-day-austin-video-operating-cloudstack-sharing-my-tool-box/</link><pubDate>Sun, 19 Apr 2015 20:10:22 +0200</pubDate><guid>https://blog.remibergsma.com/2015/04/19/cloudstack-day-austin-video-operating-cloudstack-sharing-my-tool-box/</guid><description>&lt;p&gt;Watch my talk “Operating CloudStack – Sharing my Tool Box” that I presented at CloudStack Day Austin, on April 16th 2015.&lt;/p&gt;&#10;&lt;p&gt;The talk was originally written for ApacheCon North America and I presented it there a few days earlier. It was great to be able to do the talk again and reach an even bigger audience!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.remibergsma.com/2015/04/13/apachecon-na15-slide-deck-operating-cloudstack-sharing-my-tool-box/" title="ApacheCon NA’15 slide deck: Operating CloudStack – Sharing my Tool Box"&gt;The slides can be found in this post&lt;/a&gt;, and &lt;a href="https://github.com/schubergphilis/cloudstackOps"&gt;the code can be found on Github&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>ApacheCon NA’15 slide deck: Operating CloudStack – Sharing my Tool Box</title><link>https://blog.remibergsma.com/2015/04/13/apachecon-na15-slide-deck-operating-cloudstack-sharing-my-tool-box/</link><pubDate>Mon, 13 Apr 2015 18:00:14 +0200</pubDate><guid>https://blog.remibergsma.com/2015/04/13/apachecon-na15-slide-deck-operating-cloudstack-sharing-my-tool-box/</guid><description>&lt;p&gt;Here are the slides from my presentation at both ApacheCon and CloudStack Day in Austin, TX.&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.slideshare.net/slideshow/embed_code/46908701" rel="noopener"&gt;View this presentation on SlideShare&lt;/a&gt;&lt;/div&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/schubergphilis/cloudstackOps"&gt;Get the code on Github.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Adding a KVM cluster with NSX networking to CloudStack</title><link>https://blog.remibergsma.com/2015/04/04/adding-a-kvm-cluster-with-nsx-networking-to-cloudstack/</link><pubDate>Sat, 04 Apr 2015 22:29:31 +0200</pubDate><guid>https://blog.remibergsma.com/2015/04/04/adding-a-kvm-cluster-with-nsx-networking-to-cloudstack/</guid><description>&lt;p&gt;&lt;img alt="kvm-logo-square" class="alignleft wp-image-21014 size-thumbnail" height="129" src="https://blog.remibergsma.com/wp-content/uploads/2015/04/kvm-logo-square.png" width="150"/&gt;As &lt;a href="http://www.linux-kvm.org/page/Main_Page"&gt;KVM&lt;/a&gt; seems more and more interesting, at work we wanted to do a Proof-of-Concept. The KVM hypervisor cluster had to be controlled by &lt;a href="http://cloudstack.apache.org"&gt;CloudStack&lt;/a&gt; and also integrate with &lt;a href="http://www.vmware.com/nl/products/nsx"&gt;NSX (formerly known as Nicira)&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;NSX is owned by VMware these days and is one of the first Software Defined Networking solutions. At Schuberg Philis we use this since early 2012.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Choosing an OS&lt;br/&gt;&#10;&lt;/strong&gt;To me, the most interesting part of KVM is the fact you only need a very basic Linux box with some tooling and you have a nice modern hypervisor ready to rock. Since we’re using CloudStack to orchestrate everything, we do not need cluster features. In fact, this prevents the “two captain” problem that we sometimes encounter with XenServer and VMware ESX. We compared Ubuntu with CentOS/RHEL and both work fine. It all depends on your needs.&lt;/p&gt;</description></item><item><title>Connecting two Open vSwitches to create a L2 connection between sites</title><link>https://blog.remibergsma.com/2015/03/26/connecting-two-open-vswitches-to-create-a-l2-connection/</link><pubDate>Thu, 26 Mar 2015 21:47:45 +0100</pubDate><guid>https://blog.remibergsma.com/2015/03/26/connecting-two-open-vswitches-to-create-a-l2-connection/</guid><description>&lt;p&gt;Recently I played with Open vSwitch and it’s awesome! Open vSwitch is a multilayer virtual switch and it brings a lot of flexibility in the way you can create interfaces and bridges in Linux. It’s also a Linux distribution independent way to configure these things. Switching in software!&lt;/p&gt;&#10;&lt;p&gt;To create a bridge, simply run:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;ovs-vsctl add-br remibr0&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;You can also create another bridge on top of it, to handle a VLAN for example:&lt;/p&gt;</description></item><item><title>Pointing XenServer to a new Open vSwitch Manager (Nicira/NSX)</title><link>https://blog.remibergsma.com/2015/02/17/pointing-xenserver-to-a-new-open-vswitch-manager-niciransx/</link><pubDate>Tue, 17 Feb 2015 19:52:44 +0100</pubDate><guid>https://blog.remibergsma.com/2015/02/17/pointing-xenserver-to-a-new-open-vswitch-manager-niciransx/</guid><description>&lt;p&gt;&lt;img alt="niciralogo" class="alignleft wp-image-4592 size-thumbnail" height="150" src="https://blog.remibergsma.com/wp-content/uploads/2015/02/niciralogo.jpg" width="150"/&gt;Our XenServer hypervisors use &lt;a href="http://www.vmware.com/products/nsx"&gt;Nicira/NSX&lt;/a&gt; for Software Defined Networking (orchestrated by &lt;a href="http://cloudstack.apache.org"&gt;CloudStack&lt;/a&gt;).&lt;/p&gt;&#10;&lt;p&gt;We had to migrate from one controller to another and that could easily be done by changing the Open vSwitch configuration on the hypervisors, like this:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;ovs-vsctl set-manager ssl:10.18.59.84:6632&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;It will then get a list of all nodes and use those to communicate.&lt;/p&gt;&#10;&lt;p&gt;Although this works, I found that when rebooting the hypervisor it would revert to the old setting. Also, when a pool master fail-over happened, Xapi ran a xe toolstack-restart and that caused the whole cluster to revert to the old setting. Oops.&lt;/p&gt;</description></item><item><title>CVE-2015-0235: Replacing the CloudStack systemvm template</title><link>https://blog.remibergsma.com/2015/01/28/cve-2015-0235-replacing-the-cloudstack-systemvm-template/</link><pubDate>Wed, 28 Jan 2015 23:59:58 +0100</pubDate><guid>https://blog.remibergsma.com/2015/01/28/cve-2015-0235-replacing-the-cloudstack-systemvm-template/</guid><description>&lt;p&gt;Due to the Ghost bug aka &lt;a href="http://www.openwall.com/lists/oss-security/2015/01/27/9"&gt;CVE-2015-0235&lt;/a&gt;, we had to upgrade 500+ system vm’s. We’re running &lt;a href="http://cloudstack.apache.org/"&gt;CloudStack&lt;/a&gt; 4.4.2. The version of the systemvm template it uses was 4.4.1 and so we created 4.4.2 and used that instead. It was quite some work to get it done so we thought it was worth sharing how we did it in this blog. I did this work together with my &lt;a href="https://www.schubergphilis.com"&gt;Schuberg Philis&lt;/a&gt; colleague &lt;a href="https://people.apache.org/keys/committer/dahn.asc"&gt;Daan Hoogland&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;1. Build new CloudStack RPM’s with MinVRVersion set to 4.4.2&lt;br/&gt;&#10;&lt;/strong&gt;Basically this was a single digit change in a single file (api/src/com/cloud/network/VirtualNetworkApplianceService.java).&lt;/p&gt;</description></item><item><title>HOWTO update a forked Git repo</title><link>https://blog.remibergsma.com/2014/12/15/howto-update-a-forked-git-repo/</link><pubDate>Mon, 15 Dec 2014 13:28:14 +0100</pubDate><guid>https://blog.remibergsma.com/2014/12/15/howto-update-a-forked-git-repo/</guid><description>&lt;p&gt;&lt;img alt="git_logo" class="alignleft wp-image-3481 size-thumbnail" height="150" src="https://blog.remibergsma.com/wp-content/uploads/2014/12/git_logo.png" width="150"/&gt;When contributing to open source projects, it’s pretty common these days to fork the project on Github, add your contribution, and then send your work as a so-called “pull request” to the project for inclusion. It’s nice, clean and fast. I did this last week to contribute to Apache CloudStack. When I wanted to contribute again today, I had to figure out how to get my “forked” repo up-to-date before I could send a new contribution.&lt;/p&gt;</description></item><item><title>Be the automator!</title><link>https://blog.remibergsma.com/2014/11/30/be-the-automator/</link><pubDate>Sun, 30 Nov 2014 19:11:15 +0100</pubDate><guid>https://blog.remibergsma.com/2014/11/30/be-the-automator/</guid><description>&lt;p class="p1"&gt;Today I saw an awesome video of a presentation by Glenn O’Donnell.&lt;/p&gt;&#10;&lt;p class="p1"&gt;In his presentation, Glenn states that it’s not about technology, it’s about services. Service design is modular with a logical structure. Approach it as a system and try to improve it as a whole, not just tiny pieces of it. To do that, you need systems engineers. Although most are lazy, or, as Glenn puts it: “Locally brilliant, globally stupid”.&lt;/p&gt;</description></item><item><title>CloudMonkey 5.3 on OSX Mavericks or OSX Yosemite</title><link>https://blog.remibergsma.com/2014/10/24/cloudmonkey-5-3-on-osx-mavericks-or-osx-yosemite/</link><pubDate>Fri, 24 Oct 2014 10:52:33 +0200</pubDate><guid>https://blog.remibergsma.com/2014/10/24/cloudmonkey-5-3-on-osx-mavericks-or-osx-yosemite/</guid><description>&lt;p&gt;CloudMonkey is an easy way to interact with the CloudStack API without the need to do any code writing. Think of it like a way to “query” the CloudStack infrastructure. Very useful in day-to-day operations to get a “quick look” at things.&lt;/p&gt;&#10;&lt;p&gt;Version 5.3 is on its way, and recently I had a look at it. I used my MacBook Pro for this, and it came with some challenges to get it working. So, I’m writing down here how to get CloudMonkey 5.3 working on either MacOSX Mavericks (10.9) or the new Yosemite (10.10).&lt;/p&gt;</description></item><item><title>CCCNA’14 Video: Start using Configuration Management in 5 steps</title><link>https://blog.remibergsma.com/2014/05/01/cccna14-video-start-using-configuration-management-in-5-steps-my-talk-at-the-cloudstack-collaboration-conference/</link><pubDate>Thu, 01 May 2014 08:07:10 +0200</pubDate><guid>https://blog.remibergsma.com/2014/05/01/cccna14-video-start-using-configuration-management-in-5-steps-my-talk-at-the-cloudstack-collaboration-conference/</guid><description>&lt;p&gt;Watch my talk “Start using Configuration Management in 5 steps”, at the CloudStack Collaboration Conference, Denver, Co, USA (April 9-11 2014).&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.youtube.com/watch?v=xOIZE-2_Cq8" rel="noopener"&gt;&lt;img alt="YouTube video player" class="thumb" src="https://blog.remibergsma.com/images/youtube/xOIZE-2_Cq8.jpg"/&gt;&lt;/a&gt; &lt;a href="https://www.youtube.com/watch?v=xOIZE-2_Cq8" rel="noopener"&gt;Watch this video on YouTube&lt;/a&gt;&lt;/div&gt;</description></item><item><title>CCCNA’14 slide deck: Start using Configuration Management in 5 steps</title><link>https://blog.remibergsma.com/2014/04/10/cccna14-slide-deck-start-using-configuration-management-in-5-steps/</link><pubDate>Thu, 10 Apr 2014 23:15:07 +0200</pubDate><guid>https://blog.remibergsma.com/2014/04/10/cccna14-slide-deck-start-using-configuration-management-in-5-steps/</guid><description>&lt;p&gt;Here are the slides from my presentation at the CloudStack Collaboration Conference in Denver:&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.slideshare.net/slideshow/embed_code/33343472" rel="noopener"&gt;View this presentation on SlideShare&lt;/a&gt;&lt;/div&gt;&#10;&lt;p&gt; &lt;/p&gt;</description></item><item><title>Deep-dive into CloudStack again!</title><link>https://blog.remibergsma.com/2014/04/05/deep-dive-into-cloudstack-again/</link><pubDate>Sat, 05 Apr 2014 12:47:52 +0200</pubDate><guid>https://blog.remibergsma.com/2014/04/05/deep-dive-into-cloudstack-again/</guid><description>&lt;p&gt;&lt;img alt="CloudStack Collaboration Conference" class="alignleft wp-image-2126 size-full" height="276" src="https://blog.remibergsma.com/wp-content/uploads/2014/04/ccc.png" width="252"/&gt;As you might have noticed, I switched jobs on Feb 1st and was quite busy after that. I joined &lt;a href="http://schubergphilis.com"&gt;Schuberg Philis&lt;/a&gt;, a Mission Critical Outsourcing company in The Netherlands. I met the folks on the CloudStack Collaboration Conference in Amsterdam, back in November. I have a very cool job, as I work with a bunch of very skilled colleagues on our Mission Critical Cloud, that is powered by Apache CloudStack.&lt;/p&gt;</description></item><item><title>Video recording of my talk at FOSDEM’14 in Brussels</title><link>https://blog.remibergsma.com/2014/02/07/video-recording-of-my-talk-at-fosdem14-in-brussels/</link><pubDate>Fri, 07 Feb 2014 19:23:59 +0100</pubDate><guid>https://blog.remibergsma.com/2014/02/07/video-recording-of-my-talk-at-fosdem14-in-brussels/</guid><description>&lt;p&gt;Configuration management in an Enterprise Linux Team — How I automated myself out of my job&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.youtube.com/watch?v=_ZZBhZKQq3M" rel="noopener"&gt;&lt;img alt="YouTube video player" class="thumb" src="https://blog.remibergsma.com/images/youtube/_ZZBhZKQq3M.jpg"/&gt;&lt;/a&gt; &lt;a href="https://www.youtube.com/watch?v=_ZZBhZKQq3M" rel="noopener"&gt;Watch this video on YouTube&lt;/a&gt;&lt;/div&gt;&#10;&lt;p&gt;Thanks to the FOSDEM video team for this video! It nicely integrates the slides and me talking! It’s just a pity the sound from the camera was used instead of the mic I was wearing. Therefore you hear a lot of noises from the people outside the room, on the hallway (there were &amp;gt;100 people that did not fit in the room anymore!). But anyway, enjoy the recording 🙂&lt;/p&gt;</description></item><item><title>FOSDEM’14 slide deck: Configuration management in an Enterprise Linux Team</title><link>https://blog.remibergsma.com/2014/02/01/fosdem14-slide-deck-configuration-management-usecase/</link><pubDate>Sat, 01 Feb 2014 12:22:00 +0100</pubDate><guid>https://blog.remibergsma.com/2014/02/01/fosdem14-slide-deck-configuration-management-usecase/</guid><description>&lt;p&gt;Here are the slides of the talk I just gave in the Configuration Management devroom at FOSDEM’14:&lt;/p&gt;&#10;&lt;div class="embed-fallback"&gt;&lt;a href="https://www.slideshare.net/slideshow/embed_code/30683250" rel="noopener"&gt;View this presentation on SlideShare&lt;/a&gt;&lt;/div&gt;</description></item><item><title>Arrived @Brussels for my FOSDEM talk tomorrow!</title><link>https://blog.remibergsma.com/2014/01/31/arrived-brussels-for-my-fosdem-talk-tomorrow/</link><pubDate>Fri, 31 Jan 2014 22:52:31 +0100</pubDate><guid>https://blog.remibergsma.com/2014/01/31/arrived-brussels-for-my-fosdem-talk-tomorrow/</guid><description>&lt;p&gt;&lt;a href="https://fosdem.org/2014/schedule/event/use_case_configuration_management_enterprise_linux_environment/"&gt;&lt;img alt="fosdem14_title_remi" class="alignnone size-full wp-image-2076" height="347" src="https://blog.remibergsma.com/wp-content/uploads/2014/01/fosdem14_title_remi.png" width="463"/&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>How I ensure CFEngine is always running while also allowing an easy way to disable it</title><link>https://blog.remibergsma.com/2014/01/14/how-i-ensure-cfengine-is-always-running-while-also-allowing-an-easy-way-to-disable-it/</link><pubDate>Tue, 14 Jan 2014 10:11:11 +0100</pubDate><guid>https://blog.remibergsma.com/2014/01/14/how-i-ensure-cfengine-is-always-running-while-also-allowing-an-easy-way-to-disable-it/</guid><description>&lt;p&gt;I’m currently finalizing the CFEngine 3 setup at my &lt;em&gt;$current_work&lt;/em&gt; because by the end of the month I will start a new job. In a little over a year, I fully automated the Linux sysadmin team. From now on, only 2 sysadmins are needed to keep everything running. Since almost everything is automated using CFEngine 3, it’s very important that CFEngine is running at all times so it can keep an eye on the systems and thus prevent problems from happening.&lt;/p&gt;</description></item><item><title>Linux one-liner example to quickly automate a boring task</title><link>https://blog.remibergsma.com/2014/01/04/linux-one-liner-example-to-quickly-automate-a-boring-task/</link><pubDate>Sat, 04 Jan 2014 09:20:51 +0100</pubDate><guid>https://blog.remibergsma.com/2014/01/04/linux-one-liner-example-to-quickly-automate-a-boring-task/</guid><description>&lt;p&gt;Recently a colleague came by and asked whether I could help him with finding out how much memory was already assigned to Oracle databases. It was fun to find out what was exactly he needed and to construct the one-liner bit by bit, as I detail below. When it seemed to work ok, I wrapped it in a small shell script to make it more flexible and reusable and deployed it to all Oracle database servers using CFEngine. &lt;a href="https://github.com/remibergsma/oracle-memory/blob/master/displayAllocatedOracleMemory.sh"&gt;You can find the final shell script on Github&lt;/a&gt;. I’d suggest you use the shell script instead of the one-liners below, as it is more accurate.&lt;/p&gt;</description></item><item><title>2013 in review: 733% increase in visitors and a challenging job done</title><link>https://blog.remibergsma.com/2013/12/31/2013-in-review-733-increase-in-visitors-and-a-challenging-job-done/</link><pubDate>Tue, 31 Dec 2013 11:17:43 +0100</pubDate><guid>https://blog.remibergsma.com/2013/12/31/2013-in-review-733-increase-in-visitors-and-a-challenging-job-done/</guid><description>&lt;p&gt;The WordPress.com stats helper monkeys prepared a 2013 annual report:&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="" src="https://blog.remibergsma.com/images/annual-reports/2012-emailteaser.png" width="100%"/&gt;&lt;/p&gt;&#10;&lt;p&gt;Here’s an excerpt:&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;My blog was viewed about &lt;strong&gt;220,000&lt;/strong&gt; times in 2013, which is a 733% increase over last year. On the last day of the year we even reached a quarter of a million&lt;strong&gt;&lt;/strong&gt; total views! 🙂&lt;/p&gt;&#10;&lt;p&gt;Visitors came from 199 different countries this year. The busiest day of the year was March 19th with &lt;strong&gt;1,640&lt;/strong&gt; views. The most popular post that day was &lt;a href="https://blog.remibergsma.com/2013/03/15/always-available-linux-terminal-shell-in-a-box-on-raspberry-pi/"&gt;Building an always available Linux terminal: Shell-In-A-Box on Raspberry Pi&lt;/a&gt;, that was featured on &lt;a href="http://www.linuxtoday.com/author/Remi+Bergsma/"&gt;Linux Today&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;</description></item><item><title>Monitoring disk space with CFEngine</title><link>https://blog.remibergsma.com/2013/11/04/monitoring-disk-space-with-cfengine/</link><pubDate>Mon, 04 Nov 2013 20:59:34 +0100</pubDate><guid>https://blog.remibergsma.com/2013/11/04/monitoring-disk-space-with-cfengine/</guid><description>&lt;p&gt;Now that I’m using CFEngine for some time, I’m exploring more and more possibilities. CFEngine is in fact a replacement of a big part of our Zenoss monitoring system. Since CFEngine does not only notice problems, but usually also fixes them, this makes perfect sense. &lt;/p&gt;&#10;&lt;p&gt;Recently I created a promise that monitors the disk space on our servers. Since we use &lt;a href="http://logstash.net/"&gt;Logstash&lt;/a&gt; to monitor our logs, all CFEngine needs to do is log a warning and our team will have a look. I will write about Logstash another time 😉&lt;/p&gt;</description></item><item><title>My tips for the Red Hat RHCE exam</title><link>https://blog.remibergsma.com/2013/10/07/my-tips-for-the-red-hat-rhcsa-rhce-exam/</link><pubDate>Mon, 07 Oct 2013 23:19:59 +0200</pubDate><guid>https://blog.remibergsma.com/2013/10/07/my-tips-for-the-red-hat-rhcsa-rhce-exam/</guid><description>&lt;p&gt;&lt;img alt="Red Hat Certified Engineer" class="size-medium wp-image-1939 alignleft" height="300" src="https://blog.remibergsma.com/wp-content/uploads/2013/10/rh_certifiedengineer_logo_rgb.jpg" width="185"/&gt;Last week I attended the &lt;a href="http://www.redhat.com/training/courses/rh300/"&gt;Red Hat RH300&lt;/a&gt; course (fast track) in Amsterdam and did the RHCSA and RHCE exams on the final day. I passed both RHCSA (283/300 points) and RHCE (300/300 points). I had a great teacher because, apart from technical stuff, I also learned how to approach the exams.&lt;/p&gt;&#10;&lt;p&gt;The objectives for both &lt;a href="http://www.redhat.com/training/courses/ex200/examobjective"&gt;RHCSA&lt;/a&gt; and &lt;a href="http://www.redhat.com/training/courses/ex300/examobjective"&gt;RHCE&lt;/a&gt; are well documented on Red Hat’s site. You should start to make sure you know everything inside out. Practise, practise, practise. Learn to use the documentation that ships with &lt;a href="http://www.redhat.com/products/enterprise-linux/server/"&gt;RHEL&lt;/a&gt;, as this is the only help available: no internet access is provided during the exam. There are several books available that help prepare and Red Hat has very good courses as well, that I really recommend. I assume you should be able to study this all one way or the other.&lt;/p&gt;</description></item><item><title>Managing hundreds of Linux servers with CFEngine and Git: full control over configuration</title><link>https://blog.remibergsma.com/2013/08/31/managing-hundreds-of-servers-with-cfengine-and-git-full-control-over-configuration/</link><pubDate>Sat, 31 Aug 2013 22:59:02 +0200</pubDate><guid>https://blog.remibergsma.com/2013/08/31/managing-hundreds-of-servers-with-cfengine-and-git-full-control-over-configuration/</guid><description>&lt;p&gt;Back in June, just before I went off for holiday, I attended &lt;a href="https://blog.remibergsma.com/2013/06/13/today-i-started-learning-cfengine-3/"&gt;a CFEngine training in Amsterdam&lt;/a&gt;. When I returned from holiday a few weeks later, me and my team started making plans to implement CFEngine in our environment. After two months of hard work, I’m proud to say we manage about 350 out of our 400 Linux servers with CFEngine!&lt;/p&gt;&#10;&lt;p&gt;The ride has been fun, although not always easy. In this post I’ll give a quick overview of our CFEngine implementation, where I found useful info, etc.&lt;/p&gt;</description></item><item><title>Improving data security: encrypting disks in Linux using LUKS and LVM</title><link>https://blog.remibergsma.com/2013/07/31/improving-data-security-encrypting-disks-in-linux-using-luks-and-lvm/</link><pubDate>Wed, 31 Jul 2013 22:40:15 +0200</pubDate><guid>https://blog.remibergsma.com/2013/07/31/improving-data-security-encrypting-disks-in-linux-using-luks-and-lvm/</guid><description>&lt;p&gt;Data security is getting more and more important these days. Imaging you work as a sysadmin, on a laptop, and it gets lost. Of course you might lose your work (but you have a backup, right?). The real problem: your sensible data (SSH private key for example) is no longer under your control. &lt;/p&gt;&#10;&lt;p&gt;In this blog I explain how you can add an encrypted partition to Linux. As long as you also use a password protected screensaver, with a decent password (to protect a running, logged in laptop), no one can access your data. Even rebooting into single user mode (to by-pass the login screen) won’t help. No access to the encrypted disk without a working passphrase. Wiping your disk and reinstall is an option, but your data is not unveiled.&lt;/p&gt;</description></item><item><title>Today I started learning CFEngine 3</title><link>https://blog.remibergsma.com/2013/06/13/today-i-started-learning-cfengine-3/</link><pubDate>Thu, 13 Jun 2013 22:41:37 +0200</pubDate><guid>https://blog.remibergsma.com/2013/06/13/today-i-started-learning-cfengine-3/</guid><description>&lt;p&gt;Me and two colleagues went to Amsterdam today, for a 1-day CFEngine-3 training. I’ve worked with configuration management before (Puppet), and my goal is to explore alternatives to be able to pick the right tool. Today’s quick overview training was a nice opportunity to get into CFEngine and meet some people behind the scenes.&lt;/p&gt;&#10;&lt;figure class="wp-caption alignnone"&gt;&lt;img alt="Impression of CFEngine training" class="size-large wp-image-1822" src="https://blog.remibergsma.com/wp-content/uploads/2013/06/img_1355.jpg"/&gt;&lt;figcaption class="wp-caption-text"&gt;Impression of CFEngine training&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;p&gt;Diego Zamboni, author of the book &lt;a href="http://www.amazon.com/books/dp/1449312209"&gt;Learning CFEngine 3&lt;/a&gt;, taught us what the concepts behind CFEngine are, how the language is build and how to get started. He demo’ed a lot of things and answered all of our questions. It was a very informative training that really inspired me.&lt;/p&gt;</description></item><item><title>Next step on the certification road: I am now LPIC-3 core certified!</title><link>https://blog.remibergsma.com/2013/06/12/next-step-on-the-certification-road-i-am-now-lpic-3-core-certified/</link><pubDate>Wed, 12 Jun 2013 19:12:48 +0200</pubDate><guid>https://blog.remibergsma.com/2013/06/12/next-step-on-the-certification-road-i-am-now-lpic-3-core-certified/</guid><description>&lt;p&gt;&lt;img alt="LPICLevel3_logo" class="size-medium wp-image-1800 alignleft" height="289" src="https://blog.remibergsma.com/wp-content/uploads/2013/06/lpiclevel3_logo.jpg" width="300"/&gt;Today I passed the senior level LPIC-301 core exam. I am now LPIC-3 certified!&lt;/p&gt;&#10;&lt;p&gt;The &lt;a href="http://www.lpi.org/linux-certifications/programs/lpic-3/exam-301"&gt;exam objectives&lt;/a&gt; are OpenLDAP and Capacity planning. Both of which I used in past projects, so I was already pretty familiar with them. In my current job I came across AD integration and Kerberos, and those were objectives as well.&lt;/p&gt;&#10;&lt;p&gt;In the past weeks I went through every detail of the objectives and learned some new stuff. My score on the exam was 690/800.&lt;/p&gt;</description></item><item><title>Playing with two-factor authentication in Linux using Google Authenticator</title><link>https://blog.remibergsma.com/2013/06/08/playing-with-two-facor-authentication-in-linux-using-google-authenticator/</link><pubDate>Sat, 08 Jun 2013 02:55:54 +0200</pubDate><guid>https://blog.remibergsma.com/2013/06/08/playing-with-two-facor-authentication-in-linux-using-google-authenticator/</guid><description>&lt;p&gt;As discussed &lt;a href="https://blog.remibergsma.com/2013/06/07/suggestions-for-a-strong-password-strategy/"&gt;in a previous post&lt;/a&gt;, multi-factor authentication really makes things more secure. Let’s see how we can secure services like SSH and the Gnome desktop with multi-factor authentication.&lt;/p&gt;&#10;&lt;p&gt;The &lt;a href="https://google-authenticator.googlecode.com/"&gt;Google Authenticator project&lt;/a&gt; provides a PAM module than can be integrated with your Linux server or desktop. This PAM module is designed for for home and other small environments. There is no central management of keys, and the configuration is saved in each users home folder. I’ve successfully deployed this on my home server (a Raspberry Pi) and on my work laptop.&lt;/p&gt;</description></item><item><title>Suggestions for a strong password strategy</title><link>https://blog.remibergsma.com/2013/06/07/suggestions-for-a-strong-password-strategy/</link><pubDate>Fri, 07 Jun 2013 23:53:48 +0200</pubDate><guid>https://blog.remibergsma.com/2013/06/07/suggestions-for-a-strong-password-strategy/</guid><description>&lt;p&gt;The recent article on Ars Technica, &lt;a href="http://arstechnica.com/security/2013/05/how-crackers-make-minced-meat-out-of-your-passwords/"&gt;Anatomy of a hack: How crackers ransack passwords like “qeadzcwrsfxv1331”&lt;/a&gt; made me realize &lt;a href="http://arstechnica.com/security/2012/08/passwords-under-assault"&gt;again&lt;/a&gt; how weak password authentication is. True, in this case the MD5 hashes were known, but still it’s only a single factor. Imagine what happens when you reuse a password on multiple sites, and one of them stores it as MD5 (or SHA-1, even plain-text) and gets comprimised.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Brute-force&lt;/strong&gt;&lt;br/&gt;&#10;What’s interesting in the above article, is that brute-force attacks only work up to 6 to 7 characters (depending on the hardware available) because of the so-called “exponential wall of brute-force cracking” caused by the exponentially increasing number of guesses each additional character creates. Although &lt;a href="http://ob-security.info/?p=546"&gt;project Erebus v 2.5&lt;/a&gt; already demonstrated brute-forcing any 8 character password in just 12 hours with a 8 GPU cluster. This, however, does not mean a 9+ character password is safe. In fact, passwords of 16 characters are easily cracked when using the right techniques.&lt;/p&gt;</description></item><item><title>Creating a multi hop SSH tunnel by chaining SSH commands and using a jump host</title><link>https://blog.remibergsma.com/2013/05/28/creating-a-multi-hop-ssh-tunnel-by-chaining-ssh-commands-and-using-a-jump-host/</link><pubDate>Tue, 28 May 2013 20:47:29 +0200</pubDate><guid>https://blog.remibergsma.com/2013/05/28/creating-a-multi-hop-ssh-tunnel-by-chaining-ssh-commands-and-using-a-jump-host/</guid><description>&lt;p&gt;When it not possible to reach a server you want to SSH to directly, you can make use of SSH’s built in capability to chain multiple commands. Suppose you have a network setup like in the image below.&lt;/p&gt;&#10;&lt;figure class="wp-caption alignnone"&gt;&lt;img alt="Network overview" class="size-full wp-image-1720" height="389" src="https://blog.remibergsma.com/wp-content/uploads/2013/05/ssh-jump-tunnel.jpg" width="439"/&gt;&lt;figcaption class="wp-caption-text"&gt;Network overview&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;Firewalls or ACL’s prevent direct access to the ‘web server’ in network #2. In between is a ‘jump host’ in network #1. A ‘jump host’ is a host you can SSH to, and from there reach the next hop. How to SSH to the web server?&lt;/p&gt;</description></item><item><title>How accurately can the Raspberry Pi keep time?</title><link>https://blog.remibergsma.com/2013/05/12/how-accurately-can-the-raspberry-pi-keep-time/</link><pubDate>Sun, 12 May 2013 22:53:22 +0200</pubDate><guid>https://blog.remibergsma.com/2013/05/12/how-accurately-can-the-raspberry-pi-keep-time/</guid><description>&lt;p&gt;Recently I was wondering if a Raspberry Pi would be able to run an accurate clock and provide a stable NTP service.&lt;/p&gt;&#10;&lt;p&gt;A virtual machine can’t do it, because its system clock has a changing drift factor. The clock compensation technique built into NTP was never designed to handle anything but a static drift factor. This is unfortunate because NTP is a light-wight protocol, so using physical hardware for it may sound wasteful. The Raspberry Pi &lt;em&gt;is&lt;/em&gt; physical hardware with a very small footprint. So, how accurately can the Raspberry Pi keep time?&lt;/p&gt;</description></item><item><title>Adding a hardware clock (RTC) to the Raspberry Pi</title><link>https://blog.remibergsma.com/2013/05/08/adding-a-hardware-clock-rtc-to-the-raspberry-pi/</link><pubDate>Wed, 08 May 2013 23:16:08 +0200</pubDate><guid>https://blog.remibergsma.com/2013/05/08/adding-a-hardware-clock-rtc-to-the-raspberry-pi/</guid><description>&lt;p&gt;The Raspberry Pi does not have a hardware clock on board. Instead, to keep track of time during reboots and downtime the ‘fake-hwclock’ package is used. It contains scripts to save the kernel’s current clock periodically (including at shutdown) and restore it at boot so that the system clock keeps at least close to realtime. Combined with NTP this is a simple, cheap and fairly accurate setup for most use-cases.&lt;/p&gt;</description></item><item><title>One-liner to remove an incorrect entry in the SSH known_hosts file</title><link>https://blog.remibergsma.com/2013/05/04/one-liner-to-remove-an-incorrect-entry-in-the-ssh-known_hosts-file/</link><pubDate>Sat, 04 May 2013 19:41:16 +0200</pubDate><guid>https://blog.remibergsma.com/2013/05/04/one-liner-to-remove-an-incorrect-entry-in-the-ssh-known_hosts-file/</guid><description>&lt;p&gt;When a SSH-key changed, this warning is displayed:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;ssh -l username 172.16.12.34&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Warning:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&#10;@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @&#10;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&#10;IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!&#10;Someone could be eavesdropping on you right now (man-in-the-middle attack)!&#10;It is also possible that a host key has just been changed.&#10;The fingerprint for the ECDSA key sent by the remote host is&#10;aa:bb:cc:a2:b6:87:bd:43:f9:ff:&amp;lt;wbr /&amp;gt;02:8e:a6:b8:29:42.&#10;Please contact your system administrator.&#10;Add correct host key in /home/remi/.ssh/known_hosts to get rid of this message.&#10;Offending ECDSA key in /home/remi/.ssh/known_hosts:6&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;In case you know the host identification has changed, you can safely discard this warning.&lt;/p&gt;</description></item><item><title>Forwarding a local MySQL socket to a remote MySQL server</title><link>https://blog.remibergsma.com/2013/05/03/forwarding-a-local-mysql-socket-to-a-remote-mysql-server/</link><pubDate>Fri, 03 May 2013 20:40:49 +0200</pubDate><guid>https://blog.remibergsma.com/2013/05/03/forwarding-a-local-mysql-socket-to-a-remote-mysql-server/</guid><description>&lt;p&gt;At times it can be very handy to be able to use a local MySQL socket, while the real MySQL server is in fact a remote one. I once used this technique to split a dozen LAMP servers into dedicated (clustered) web servers and MySQL servers. Without having all clients to update scripts, that is.&lt;/p&gt;&#10;&lt;p&gt;Today I ran into another use-case: while migrating an old 32bit MySQL Windows server to a modern Linux VM. We wanted to get some statistics from it. The famous ‘&lt;a href="http://mysqltuner.pl"&gt;mysqltuner.pl&lt;/a&gt;‘ script is designed to run from localhost. Well, let’s fake MySQL is on localhost then 😉&lt;/p&gt;</description></item><item><title>HOWTO discover the ip address of a Raspberry Pi</title><link>https://blog.remibergsma.com/2013/05/03/howto-discover-the-ip-address-of-a-raspberry-pi-on-dhcp/</link><pubDate>Fri, 03 May 2013 19:20:40 +0200</pubDate><guid>https://blog.remibergsma.com/2013/05/03/howto-discover-the-ip-address-of-a-raspberry-pi-on-dhcp/</guid><description>&lt;div&gt;When you boot your Raspberry Pi with &lt;a href="http://www.raspbian.org"&gt;Raspbian&lt;/a&gt;, it will get its ip address from a DHCP server. Most tutorials I’ve seen, ask you to login to a ‘router’ (that serves as DHCP server as well) to find the assigned ip address. When you haven’t access to the DHCP server, how do you find the Pi’s ip address?&lt;/div&gt;&#10;&lt;div&gt;&lt;/div&gt;&#10;&lt;div&gt;You should know the MAC address of a Raspberry Pi always has a ‘b8:27:eb’ prefix. Using a Linux utility called ‘&lt;em&gt;arp-scan&lt;/em&gt;‘ you can discover MAC addresses and their corresponding ip addresses. &lt;em&gt;Arp-scan&lt;/em&gt; sends ARP packets to hosts on the local network and displays any responses that are received.&lt;/div&gt;&#10;&lt;div&gt;&lt;/div&gt;&#10;&lt;div&gt;First, install arp-scan:&lt;/div&gt;&#10;&lt;div&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;apt-get install arp-scan&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;div&gt;&lt;/div&gt;&#10;&lt;div&gt;Then locate all Raspberry Pi’s on the local network using this command:&lt;/div&gt;&#10;&lt;div&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;arp-scan --interface=eth0 --localnet | grep b8:27:eb&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;div&gt;&lt;/div&gt;&#10;&lt;div&gt;You will need to be root, or arp-scan must be SUID root, in order to run arp-scan, because the functions that it uses to read and write  packets require root privilege.&lt;/div&gt;&#10;&lt;div&gt;&lt;/div&gt;&#10;&lt;div&gt;Result:&lt;/div&gt;&#10;&lt;pre&gt;&lt;code&gt;172.16.12.34 b8:27:eb:00:11:ab (Unknown)&lt;/code&gt;&lt;/pre&gt;&#10;&lt;div&gt;Using the ip address, it is now possible to SSH into your Raspberry Pi:&lt;/div&gt;&#10;&lt;div&gt;&lt;/div&gt;&#10;&lt;div&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;ssh -l pi 172.16.12.34&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;</description></item><item><title>Automatically adding and editing devices in Zenoss Core 4 using the API</title><link>https://blog.remibergsma.com/2013/04/26/automatically-adding-and-editing-devices-in-zenoss-core-4-using-the-api/</link><pubDate>Fri, 26 Apr 2013 20:54:54 +0200</pubDate><guid>https://blog.remibergsma.com/2013/04/26/automatically-adding-and-editing-devices-in-zenoss-core-4-using-the-api/</guid><description>&lt;p&gt;Today I figured out how to automatically add new devices (in my case those are mostly virtual machines) to the &lt;a href="http://www.zenoss.org"&gt;Zenoss&lt;/a&gt; monitoring system. This used to be done by hand, but no more 🙂&lt;/p&gt;&#10;&lt;p&gt;To add a new device (for example a Linux server called server001), simply call:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;curl -u apiUser:apiPass \&#10;'http://zenoss-server:8080/zport/dmd/DeviceLoader? \&#10;deviceName=server001&amp;amp;devicePath=/Server/Linux&amp;amp;\&#10;loadDevice:method=1'&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;It’s wise to create a dedicated Zenoss user just for these API calls, but you may use any account that has sufficient permissions to perform the action you’re calling.&lt;/p&gt;</description></item><item><title>Building an always available Linux terminal: Shell-In-A-Box on Raspberry Pi</title><link>https://blog.remibergsma.com/2013/03/15/always-available-linux-terminal-shell-in-a-box-on-raspberry-pi/</link><pubDate>Fri, 15 Mar 2013 22:53:07 +0100</pubDate><guid>https://blog.remibergsma.com/2013/03/15/always-available-linux-terminal-shell-in-a-box-on-raspberry-pi/</guid><description>&lt;p&gt;Recently I was looking for a way to SSH from a network that blocked my outgoing SSH connection. I’d be nice to have a way around firewalls and be able to access your private Linux terminal. To be able to debug a problem from an remote location, for example.&lt;/p&gt;&#10;&lt;p&gt;A collegue suggested a tool called ‘&lt;a href="http://shellinabox.com"&gt;Shell In A Box&lt;/a&gt;‘. &lt;em&gt;Shell In A Box&lt;/em&gt; implements a web server that can export arbitrary command line tools to a web based terminal emulator using just JavaScript and CSS without any additional browser plugins. This means: connecting your browser via HTTPS to your own hosted &lt;em&gt;Shell In A Box&lt;/em&gt; web site, and access a Linux terminal from there.&lt;/p&gt;</description></item><item><title>Secure browsing on iOS (iPhone/iPad) using OpenVPN and the Raspberry Pi</title><link>https://blog.remibergsma.com/2013/03/13/secure-browsing-on-ios-iphoneipad-using-openvpn-and-the-raspberry-pi/</link><pubDate>Wed, 13 Mar 2013 23:08:21 +0100</pubDate><guid>https://blog.remibergsma.com/2013/03/13/secure-browsing-on-ios-iphoneipad-using-openvpn-and-the-raspberry-pi/</guid><description>&lt;p&gt;A lot of people seem interested in &lt;a href="https://blog.remibergsma.com/2013/01/27/secure-browsing-via-untrusted-wifi-networks-using-openvpn-and-the-raspberry-pi/" title="Secure browsing via untrusted wifi networks using OpenVPN and the Raspberry Pi"&gt;safe browsing over untrusted wifi&lt;/a&gt; and using a &lt;a href="https://blog.remibergsma.com/2013/01/05/building-an-economical-openvpn-server-using-the-raspberry-pi/" title="Building an economical OpenVPN server using the Raspberry Pi"&gt;Raspberry Pi with an OpenVPN server&lt;/a&gt; to accomplish that. In this blog post, I’ll continue the series and explain how to set up secure browsing on mobile devices based on iOS.&lt;/p&gt;&#10;&lt;p&gt;When I’m not at home I use my iPhone or iPad and connect to the internet using either 3G or public wifi. I want to configure my mobile device to setup an encrypted VPN tunnel and route all traffic through it, so I have a safe browsing experience. Fortunately, there now is an &lt;a href="https://itunes.apple.com/nl/app/openvpn-connect/id590379981"&gt;OpenVPN app available&lt;/a&gt; on iOS that allows you to do that! Please install this app using the App Store, and continue reading to set it all up.&lt;/p&gt;</description></item><item><title>Improving OpenVPN security by revoking unneeded certificates</title><link>https://blog.remibergsma.com/2013/02/27/improving-openvpn-security-by-revoking-unneeded-certificates/</link><pubDate>Wed, 27 Feb 2013 15:30:57 +0100</pubDate><guid>https://blog.remibergsma.com/2013/02/27/improving-openvpn-security-by-revoking-unneeded-certificates/</guid><description>&lt;p&gt;&lt;img alt="openvpn" class="alignleft size-full wp-image-1390" height="256" src="https://blog.remibergsma.com/wp-content/uploads/2015/02/openvpn.png" width="256"/&gt;OpenVPN is great, it allows for easy access in a secure way. But how do you keep it secure? I mean, what if someone leaves your company? Do you disable access to the OpenVPN server? You should! In this blog I’ll show you how to do it.&lt;/p&gt;&#10;&lt;p&gt;A feature called &lt;em&gt;revoking&lt;/em&gt; exists in OpenVPN. Revoking a certificate means to invalidate a previously signed certificate so that it can no longer be used for authentication purposes. For this to work, we need to tell the OpenVPN server which certificates are no longer valid.&lt;/p&gt;</description></item><item><title>Passed the SUSE Certified Linux Engineer practicum (CLE)!</title><link>https://blog.remibergsma.com/2013/02/22/passed-the-suse-certified-linux-engineer-practicum-cle/</link><pubDate>Fri, 22 Feb 2013 23:20:08 +0100</pubDate><guid>https://blog.remibergsma.com/2013/02/22/passed-the-suse-certified-linux-engineer-practicum-cle/</guid><description>&lt;p&gt;&lt;img alt="suse-logo" class="alignleft wp-image-1306" height="92" src="https://blog.remibergsma.com/wp-content/uploads/2015/02/suse-logo.png" width="240"/&gt;A few weeks ago I attended a full week of SUSE training, which I really enjoyed. There were lots of highly skilled geeks and the course had a nice solid pace. By the end of the week I did the &lt;a href="http://www.novell.com/training/testinfo/objectives/cle11tobj.html"&gt;CLE practicum exam&lt;/a&gt; (to become a Certified Linux Engineer). Today I heard I passed! 🙂&lt;/p&gt;&#10;&lt;p&gt;I’ve been working with SUSE Linux Enterprise Server since I started my new job back in December and the training really helped me.&lt;/p&gt;</description></item><item><title>Automating persistent iptables rules on Red Hat, SUSE and Debian</title><link>https://blog.remibergsma.com/2013/02/12/automating-persistent-iptables-rules-on-red-hat-suse-and-debian/</link><pubDate>Tue, 12 Feb 2013 23:03:41 +0100</pubDate><guid>https://blog.remibergsma.com/2013/02/12/automating-persistent-iptables-rules-on-red-hat-suse-and-debian/</guid><description>&lt;p&gt;When you create firewall rules with &lt;em&gt;iptables&lt;/em&gt; on Linux, you want to make them persistent over reboot, because they are not by default. Different Linux distributions have different methods of achieving this, although the basics are similar. I’ve been working with Debian, Red Hat Enterprise Linux and SUSE Linux Enterprise Server and in this blog I’ll describe how to configure each of them to save your &lt;em&gt;iptables&lt;/em&gt; rules across reboots.&lt;/p&gt;</description></item><item><title>Secure browsing via untrusted wifi networks using OpenVPN and the Raspberry Pi</title><link>https://blog.remibergsma.com/2013/01/27/secure-browsing-via-untrusted-wifi-networks-using-openvpn-and-the-raspberry-pi/</link><pubDate>Sun, 27 Jan 2013 23:02:34 +0100</pubDate><guid>https://blog.remibergsma.com/2013/01/27/secure-browsing-via-untrusted-wifi-networks-using-openvpn-and-the-raspberry-pi/</guid><description>&lt;p&gt;The Raspberry Pi can easily be setup as an &lt;a href="https://blog.remibergsma.com/2013/01/05/building-an-economical-openvpn-server-using-the-raspberry-pi/"&gt;OpenVPN server&lt;/a&gt;. One common feature is to access servers or services on the remote network. Another use case is to provide a secure connection when you’re not at home.&lt;/p&gt;&#10;&lt;p&gt;You can do this by sending all traffic over the VPN connection, instead of only traffic for the remote servers. The idea is to connect your laptop to your OpenVPN server (this is encrypted by default) and access the internet from there. Whatever you send over the wifi connection, is encrypted by the VPN and thus safe. In the comments on the previous post there was someone trying to set this up. To help him solve the issue, I tested this myself, and decided to write a post showing how to do it because I really like the idea.&lt;/p&gt;</description></item><item><title>Using key-based ssh authentication with ssh-agent and GNU screen</title><link>https://blog.remibergsma.com/2013/01/23/using-key-based-ssh-authentication-with-ssh-agent-and-gnu-screen/</link><pubDate>Wed, 23 Jan 2013 12:25:26 +0100</pubDate><guid>https://blog.remibergsma.com/2013/01/23/using-key-based-ssh-authentication-with-ssh-agent-and-gnu-screen/</guid><description>&lt;p&gt;I’m using SSH’s key-based authentication to login to my servers using a SSH key pair. Of course my private key is protected with a password of its own. This has the consequence that even with key-based authentication, you still need to type a password: your private key passphrase. And you need to type it on every single connect. Although this is far more secure that having no passphrase on your private key, typing it so many times is a bit over done.&lt;/p&gt;</description></item><item><title>Passed LPIC-2 today!</title><link>https://blog.remibergsma.com/2013/01/16/passed-lpic-2-today/</link><pubDate>Wed, 16 Jan 2013 19:42:15 +0100</pubDate><guid>https://blog.remibergsma.com/2013/01/16/passed-lpic-2-today/</guid><description>&lt;p&gt;&lt;img alt="lpic2-logo-medium" class="wp-image-1226 alignleft" height="289" src="https://blog.remibergsma.com/wp-content/uploads/2013/01/lpic2-logo-medium.png" width="300"/&gt;About 2 weeks ago I wrote in &lt;a href="https://blog.remibergsma.com/2012/12/28/first-results-in-getting-my-linux-knowledge-certified-lpic-1-and-suse-novell-cla/" title="First results in getting my Linux knowledge certified: LPIC-1 and CLA"&gt;a previous post&lt;/a&gt; about LPIC, when I had just passed the LPIC-1 exams. In the mean time I studied the &lt;a href="http://lpi.org/linux-certifications/programs/lpic-2"&gt;objectives&lt;/a&gt;, read some man-pages and experimented with the things I wasn’t 100% familier with.&lt;/p&gt;&#10;&lt;p&gt;And today I completed LPIC-2! 🙂 There were two exams required to pass. I scored 740/800 on the 201 exam, and 730/800 on the 202 exam.&lt;/p&gt;</description></item><item><title>HOWTO connect to hosts on a remote network using OpenVPN and some routing</title><link>https://blog.remibergsma.com/2013/01/13/howto-connect-to-hosts-on-a-remote-network-using-openvpn-and-some-routing/</link><pubDate>Sun, 13 Jan 2013 22:06:26 +0100</pubDate><guid>https://blog.remibergsma.com/2013/01/13/howto-connect-to-hosts-on-a-remote-network-using-openvpn-and-some-routing/</guid><description>&lt;p&gt;&lt;a href="http://openvpn.net/index.php/open-source.html" rel="homepage" title="OpenVPN"&gt;OpenVPN&lt;/a&gt; is a very powerful tool to connect to a remote network in a secure and easy way. But while it’s quite easy to set it up (see my post about &lt;a href="https://blog.remibergsma.com/2013/01/05/building-an-economical-openvpn-server-using-the-raspberry-pi/" title="Building an economical OpenVPN server using the Raspberry Pi"&gt;OpenVPN on Raspberry Pi&lt;/a&gt;), getting all the pieces together takes some more network understanding and configuration. I created an image to show what’s going on when a OpenVPN client connects to the server.&lt;/p&gt;</description></item><item><title>Transforming a website into a static one that works off-line using wget</title><link>https://blog.remibergsma.com/2013/01/13/transforming-a-website-into-a-static-one-that-works-off-line-using-wget/</link><pubDate>Sun, 13 Jan 2013 15:50:36 +0100</pubDate><guid>https://blog.remibergsma.com/2013/01/13/transforming-a-website-into-a-static-one-that-works-off-line-using-wget/</guid><description>&lt;p&gt;Someone asked me if it were possible to download a web site and make it available offline. To some extend, this can be done. Interactive forms will not work (searching, ordering, etc), but you can use ‘&lt;a href="http://www.gnu.org/software/wget" rel="homepage" title="Wget"&gt;wget&lt;/a&gt;‘ to transform a website into a static version.&lt;/p&gt;&#10;&lt;p&gt;It goes like this:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;wget \&#10; --recursive \&#10; --no-clobber \&#10; --page-requisites \&#10; --html-extension \&#10; --convert-links \&#10; --restrict-file-names=windows \&#10; --domains example.org \&#10; --no-parent \&#10; --wait=1 \&#10; --limit-rate=500K \&#10; example.org/&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Let me explain:&lt;br/&gt;&#10;The ‘–recursive’ option downloads the entire web site and ‘–domains’ tells wget not to follow links outside example.org. Otherwise you will download far too many pages. ‘–page-requisites’ makes sure we’ll get all the elements that compose the page (images, CSS, etc), ‘–html-extension’ saves files with the .html extension so they will work on a stand-alone pc, ‘–convert-links’ converts links so they’ll work off-line and ‘–no-clobber’ prevents any existing files to be overwritten&lt;/p&gt;</description></item><item><title>Building an economical OpenVPN server using the Raspberry Pi</title><link>https://blog.remibergsma.com/2013/01/05/building-an-economical-openvpn-server-using-the-raspberry-pi/</link><pubDate>Sat, 05 Jan 2013 23:53:31 +0100</pubDate><guid>https://blog.remibergsma.com/2013/01/05/building-an-economical-openvpn-server-using-the-raspberry-pi/</guid><description>&lt;p&gt;The &lt;a href="http://www.raspberrypi.org"&gt;Raspberry Pi&lt;/a&gt; is a $35 credit-card sized computer, with an ARM-based CPU. It uses very little power (only 3 Watt), so it’s ideal for a server that’s always-on. I was thinking what’d be a nice task for my Raspberry Pi and came up with an OpenVPN server. This enables me to connect to my home from anywhere, for example to access some files or to access the internet from there.&lt;/p&gt;</description></item><item><title>2012 in review: my blog was read by people from 165 different countries</title><link>https://blog.remibergsma.com/2012/12/31/2012-in-review-my-blog-was-read-by-people-from-165-different-countries/</link><pubDate>Mon, 31 Dec 2012 14:34:21 +0100</pubDate><guid>https://blog.remibergsma.com/2012/12/31/2012-in-review-my-blog-was-read-by-people-from-165-different-countries/</guid><description>&lt;p&gt;The WordPress.com stats helper monkeys surprised me today with their 2012 annual report.&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="" src="https://blog.remibergsma.com/images/annual-reports/2012-emailteaser.png" width="100%"/&gt;&lt;/p&gt;&#10;&lt;p&gt;Here’s an excerpt:&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;My blog had &lt;strong&gt;33,000&lt;/strong&gt; views in 2012. The busiest day of the year was September 4th with &lt;strong&gt;644&lt;/strong&gt; views. The most popular post that day was &lt;a href="https://blog.remibergsma.com/2012/08/30/going-beyond-cloudstack-advanced-networking-how-i-replaced-the-virtual-router-with-my-own-physical-linux-router/"&gt;How I replaced the CloudStack Virtual Router with my own physical Linux router&lt;/a&gt; that was featured on &lt;a href="http://www.linuxtoday.com/author/Remi+Bergsma/"&gt;Linux Today&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Visitors came from 165 different countries.. wow! Most came from The United States, followed by The Netherlands and Germany. A lot of the visitors were searching on Google, some on Twitter, and found my blog that way.&lt;/p&gt;&lt;/blockquote&gt;</description></item><item><title>First results in getting my Linux knowledge certified: LPIC-1 and CLA</title><link>https://blog.remibergsma.com/2012/12/28/first-results-in-getting-my-linux-knowledge-certified-lpic-1-and-suse-novell-cla/</link><pubDate>Fri, 28 Dec 2012 23:04:58 +0100</pubDate><guid>https://blog.remibergsma.com/2012/12/28/first-results-in-getting-my-linux-knowledge-certified-lpic-1-and-suse-novell-cla/</guid><description>&lt;p&gt;After passing my &lt;em&gt;Bachelor of Computer Science&lt;/em&gt; I never took the time to take any specific Linux exam. But I’ve been working with Linux for about 14 years, so I know a lot about it. Now that I started my new job this month, I thought it was also time to get Linux certified.&lt;/p&gt;&#10;&lt;p&gt;I’ve been given the opportunity to get some training from SUSE (which is the distribution we use at work), and I’m really happy about that. Yes, I do have a nice employer 🙂&lt;/p&gt;</description></item><item><title>Using Exchange services on a Linux Desktop with DavMail</title><link>https://blog.remibergsma.com/2012/12/11/using-exchange-services-on-a-linux-desktop-with-davmail/</link><pubDate>Tue, 11 Dec 2012 22:43:39 +0100</pubDate><guid>https://blog.remibergsma.com/2012/12/11/using-exchange-services-on-a-linux-desktop-with-davmail/</guid><description>&lt;p&gt;Since I started my new job last week, I no longer work on a Mac desktop. I now use Ubuntu instead. Our company has an Exchange server and uses Active Directory for authentication. Using a Linux desktop in a Windows environment can be a bit challenging. While you can use Thunderbird to use imap, features like calandar and global address book are not available. Of course there’s Terminal Services using RDP but this is not ideal. My new colleagues pointed me to a little tool called DavMail.&lt;/p&gt;</description></item><item><title>Make the mouse wheel in Ubuntu behave like Mac OSX</title><link>https://blog.remibergsma.com/2012/11/30/make-the-mouse-wheel-in-ubuntu-behave-like-mac-osx/</link><pubDate>Fri, 30 Nov 2012 15:12:30 +0100</pubDate><guid>https://blog.remibergsma.com/2012/11/30/make-the-mouse-wheel-in-ubuntu-behave-like-mac-osx/</guid><description>&lt;p&gt;I’m used to my Mac where the direction of scrolling was changed to a more ‘natural’ way starting with OSX Lion. It’s the same way scrolling works on mobile devices. When working on Ubuntu, I want to have the same behaviour because I’m used to it.&lt;/p&gt;&#10;&lt;p&gt;To do so you need to edit (or create) the .Xmodmap file in your homedir.&lt;/p&gt;&#10;&lt;p&gt;This is the default:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;cat ~/.Xmodmap&#10;pointer = 1 2 3 4 5&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;I changed it to:&lt;/p&gt;</description></item><item><title>Fixing an out-of-sync or corrupt MySQL slave</title><link>https://blog.remibergsma.com/2012/11/20/fixing-an-out-of-sync-or-corrupt-mysql-slave/</link><pubDate>Tue, 20 Nov 2012 21:28:13 +0100</pubDate><guid>https://blog.remibergsma.com/2012/11/20/fixing-an-out-of-sync-or-corrupt-mysql-slave/</guid><description>&lt;p&gt;Sometimes a MySQL slave may get corrupted, or its data may otherwise be unreliable. Usually I clone the data from a slave that is still ok and fix it from there. However, today I run into an issue that made me doubt on the data of any slave. To be absolutely sure the data is consistent on both master and slave, I decided to deploy a new slave with a clone of the master and then redeploy the other slaves from the newly created slave like I normally do with a script.&lt;/p&gt;</description></item><item><title>Replacing both DRBD nodes while keeping the storage online</title><link>https://blog.remibergsma.com/2012/11/19/replacing-both-drbd-nodes-while-keeping-the-storage-online/</link><pubDate>Mon, 19 Nov 2012 22:34:04 +0100</pubDate><guid>https://blog.remibergsma.com/2012/11/19/replacing-both-drbd-nodes-while-keeping-the-storage-online/</guid><description>&lt;p&gt;&lt;a href="http://drbd.org"&gt;DRBD&lt;/a&gt; (Distributed Redundant Block Device) is an open source storage solution that is best compared with a RAID-1 (mirror) between two servers. I’ve implemented this for both our &lt;a href="https://blog.remibergsma.com/2012/09/09/building-a-redundant-pair-of-linux-storage-servers-using-drbd-and-heartbeat/" title="Building a redundant pair of Linux storage servers using DRBD and Heartbeat"&gt;cloud storage&lt;/a&gt; as our &lt;a href="https://blog.remibergsma.com/2012/05/02/high-availability-with-automatic-failover-for-cloudstack-management-servers/" title="High Availability with automatic failover for CloudStack management servers"&gt;cloud management&lt;/a&gt; servers.&lt;/p&gt;&#10;&lt;p&gt;We’re in the process of replacing both cloud storage nodes (that is: everything except the disks and its raid array) and of course no downtime is allowed. Although DRBD is made for redundancy (one node can be offline without impact), completely replacing a node is a bit tricky.&lt;/p&gt;</description></item><item><title>Securely connect an Advanced (private) CloudStack network by using a VLAN aware switch and a basic VPN device</title><link>https://blog.remibergsma.com/2012/11/18/securely-connect-an-advanced-private-cloudstack-network-by-using-a-vlan-aware-switch-and-a-basic-vpn-device/</link><pubDate>Sun, 18 Nov 2012 22:45:49 +0100</pubDate><guid>https://blog.remibergsma.com/2012/11/18/securely-connect-an-advanced-private-cloudstack-network-by-using-a-vlan-aware-switch-and-a-basic-vpn-device/</guid><description>&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/11/hangslot.jpg"&gt;&lt;img alt="" class="alignleft size-thumbnail wp-image-1005" height="150" src="https://blog.remibergsma.com/wp-content/uploads/2012/11/hangslot.jpg" title="hangslot" width="150"/&gt;&lt;/a&gt;I’ve been working a lot with CloudStack Advanced networking and find it very flexible. Recently, I had another opportunity to test its flexibility when a customer called: “We want VM’s in your CloudStack cloud, but these VM’s are only allowed be reachable from our office, and not from the public internet”. Firewalling? No, they required us to use their VPN solution.&lt;/p&gt;&#10;&lt;p&gt;Is CloudStack flexible enough for this to work? Yes, it is. In this blog I’ll tell you how we did it. And it doesn’t even matter what VPN device you use. This will work regardless of brand and features, as lang as it supports a public ip-address to connect over the internet to another VPN device, and has a private network behind it. All VPN devices I know of support these basic features.&lt;/p&gt;</description></item><item><title>Migrating an ip-address to another server: clear the arp cache of your neighbors</title><link>https://blog.remibergsma.com/2012/11/15/migrating-an-ip-address-to-another-server-clear-the-arp-cache-of-your-neighbors/</link><pubDate>Thu, 15 Nov 2012 20:31:40 +0100</pubDate><guid>https://blog.remibergsma.com/2012/11/15/migrating-an-ip-address-to-another-server-clear-the-arp-cache-of-your-neighbors/</guid><description>&lt;p&gt;When migrating an ip-address to another server, you will notice it will take anywhere between 1 and 15 minutes for the ip-address to work on the new server. This is caused by the arp cache of the switch or gateway on the network. But don’t worry: you don’t just have to wait for it to expire.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Why it happens&lt;br/&gt;&#10;&lt;/strong&gt;ARP (Address Resolution Protocol) provides a translation between ip-addresses and mac-addresses. Since the new server has another mac-address and the old one stays in the cache for some time, connections will not yet work. The cache usually only exists for some minutes and prevents asking for the mac-address of a certain ip-address over and over again.&lt;/p&gt;</description></item><item><title>Some handy Git commands I often use</title><link>https://blog.remibergsma.com/2012/11/10/some-handy-git-commands-i-often-use/</link><pubDate>Sat, 10 Nov 2012 23:15:13 +0100</pubDate><guid>https://blog.remibergsma.com/2012/11/10/some-handy-git-commands-i-often-use/</guid><description>&lt;p&gt;Push a specific commit (actually: everything up and including this commit):&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;git push origin dc97ad23ab79a2538d1370733aec984fc0dd83e1:master&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Push everything exept the last commit:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;git push origin HEAD~:master&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;The same, now the last two commits:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;git push origin HEAD~2:master&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Reorder commits, aka rebasing:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;git rebase -i origin&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Pulling commits from repo to local&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;git pull --rebase&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;When a conflict occurs, solve it, then continue:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;git rebase --continue&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Put local changes apart (shash them)&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;git stash save stashname&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Show all stashes&lt;/p&gt;</description></item><item><title>What a battery means for the performance of our raid array</title><link>https://blog.remibergsma.com/2012/11/02/what-a-battery-means-for-the-performance-of-our-raid-array/</link><pubDate>Fri, 02 Nov 2012 22:40:13 +0100</pubDate><guid>https://blog.remibergsma.com/2012/11/02/what-a-battery-means-for-the-performance-of-our-raid-array/</guid><description>&lt;p&gt;A few days ago we installed a ‘Battery Backup Unit’ in our secondary storage server. This allows us to turn on the ‘Write Back Cache’. The performance impact was impressive..&lt;/p&gt;&#10;&lt;p&gt;Enabling the Write Back Cache means writes are committed to the raid controler’s cache (which is much faster) so you don’t have to wait for the data to be written to disk. Normally, this is a risky operation because when the power goes down unexpectedly the data in the raid controller’s cache is lost. Thanks to the battery the raid controller can finish all of its writes to the disk even there is no more power.&lt;/p&gt;</description></item><item><title>Block web traffic based on ip-address and display an error message</title><link>https://blog.remibergsma.com/2012/10/23/block-web-traffic-based-on-ip-address-and-display-an-error-message/</link><pubDate>Tue, 23 Oct 2012 16:48:29 +0200</pubDate><guid>https://blog.remibergsma.com/2012/10/23/block-web-traffic-based-on-ip-address-and-display-an-error-message/</guid><description>&lt;p&gt;Sometimes it is necessary to block access from a certain ip-address. This can be done easily using route:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;route add -host 1.2.3.4/32 reject&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;While this works, it does not provide the best user experience because from 1.2.3.4 the website now seems down, while it isn’t. A better way is to display an error message instead of the website requested.&lt;/p&gt;&#10;&lt;p&gt;I’m using load balancing to distribute the load to different web servers. The software in use is Keepalived. To block a given ip-address, I have the firewall tag it and then make Keepalived forward it to another web server instead. It goes like this:&lt;/p&gt;</description></item><item><title>Backup MySQL and automatically compress the backup</title><link>https://blog.remibergsma.com/2012/10/23/backup-mysql-and-automatically-compress-the-backup/</link><pubDate>Tue, 23 Oct 2012 16:02:45 +0200</pubDate><guid>https://blog.remibergsma.com/2012/10/23/backup-mysql-and-automatically-compress-the-backup/</guid><description>&lt;p&gt;Here are three ways to backup your MySQL database(s) and compress the backup on the fly:&lt;/p&gt;&#10;&lt;p&gt;1. Dump database ‘dbname’ into a compressed file&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;mysqldump \&#10;-u user \&#10;-ppassword \&#10;--host=mysql-server \&#10;dbname | \&#10;gzip &amp;gt; dbname_backup.sql.gz&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;To dump multiple databases, you can either write a ‘for loop’ on a ‘SHOW DATABASES’ query result or use the next command to backup to a single file.&lt;/p&gt;&#10;&lt;p&gt;2. Dump all databases into a compressed file&lt;/p&gt;</description></item><item><title>Labelling cables the right and easy way using the Brady BMP21</title><link>https://blog.remibergsma.com/2012/10/10/labelling-cables-the-right-and-easy-way-using-the-brady-bmp21/</link><pubDate>Wed, 10 Oct 2012 15:20:53 +0200</pubDate><guid>https://blog.remibergsma.com/2012/10/10/labelling-cables-the-right-and-easy-way-using-the-brady-bmp21/</guid><description>&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/11/img_02771.jpg"&gt;&lt;img alt="" class="alignleft" height="300" src="https://blog.remibergsma.com/wp-content/uploads/2012/11/img_02771.jpg" title="Brady BMP21" width="178"/&gt;&lt;/a&gt;When building new computer infrastructure, I find it important to label and document everything properly. This will help you in an emergency, especially if you are not on site and need to instruct someone on the phone. Apart from that, todays infrastructure is quite complex and one cannot remember everything by head. This blog post describes what we used when building our Cloud infrastructure.&lt;/p&gt;&#10;&lt;p&gt;First of all, use a separate cable color for each type of connection. We used, for example, different colors for ‘storage’, ‘management’, ‘serial’ and ‘public’ traffic types. This gives a quick overview of the different cables that are in use. Make sure colors are unique, so don’t use black if you’re using black power cables.&lt;/p&gt;</description></item><item><title>Save your Linux shell commands and their output for later review</title><link>https://blog.remibergsma.com/2012/10/08/save-your-linux-shell-commands-and-their-output-for-later-review/</link><pubDate>Mon, 08 Oct 2012 22:46:07 +0200</pubDate><guid>https://blog.remibergsma.com/2012/10/08/save-your-linux-shell-commands-and-their-output-for-later-review/</guid><description>&lt;p&gt;Changes to production systems should be tested on a development system and then be deployed using configuration management (such as &lt;a href="https://blog.remibergsma.com/tag/puppet/"&gt;Puppet&lt;/a&gt;), if you ask me. Sometimes I first run commands by hand (on a test system) to find out the right ones, the right order, etc. In those cases I find it useful to automatically document what I type and be able to ‘replay’ it later on.&lt;/p&gt;&#10;&lt;p&gt;Why? Because when I write the Puppet configuration needed to deploy the change, I want to be sure all manual commands I ran make it to the Puppet manifest. Being able to replay what I did allows me to do so with ease.&lt;/p&gt;</description></item><item><title>Easy to fix but dangerous vulnerability in CloudStack API discovered</title><link>https://blog.remibergsma.com/2012/10/08/easy-to-fix-but-dangerous-vulnerability-in-cloudstack-api-discovered/</link><pubDate>Mon, 08 Oct 2012 21:38:13 +0200</pubDate><guid>https://blog.remibergsma.com/2012/10/08/easy-to-fix-but-dangerous-vulnerability-in-cloudstack-api-discovered/</guid><description>&lt;p&gt;It just came to my attention that a vulnerability in Apache CloudStack &lt;a href="http://markmail.org/thread/yfuxgymdqwg3kcg4"&gt;was discovered&lt;/a&gt;, as John Kinsella writes in his post to the Apache CloudStack dev-mailinglist.&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;A malicious user could, for example, delete all VMs in the system. Addressing this issue is especially important for anybody using CloudStack in a public environment.&lt;/p&gt;&lt;/blockquote&gt;&#10;&lt;p&gt;The vulnerability report has an easy work-around that I will mention here as well:&lt;/p&gt;&#10;&lt;pre class="language-sql"&gt;&lt;code class="language-sql"&gt;&#10;mysql -p -u cloud -h mgt-server-ip&#10;update cloud.user set password=RAND() where id=1;&#10;\q&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Hugo Trippaers of Schuberg Philis discovered this issue. Thanks for sharing!&lt;/p&gt;</description></item><item><title>One-liner: restore compressed MySQL backup</title><link>https://blog.remibergsma.com/2012/10/08/one-liner-restore-compressed-mysql-backup/</link><pubDate>Mon, 08 Oct 2012 20:35:56 +0200</pubDate><guid>https://blog.remibergsma.com/2012/10/08/one-liner-restore-compressed-mysql-backup/</guid><description>&lt;p&gt;One-liners are always fun. Linux has pipes, streams and redirects which you can combine to do many things in just one line. Today I had to restore a MySQL backup that was gzipped. Instead of typing:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;&#10;gunzip db-backup.sql.gz&#10;mysql -p -h db.example.com dbname &amp;lt; db-backup.sql&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;You can type this instead:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;&#10;gunzip &amp;lt; db-backup.sql.gz | mysql -p -h db.example.com dbname&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;The .sql.gz file is input to gunzip, the resulting (unzipped) data is piped to mysql and is used as input there.&lt;/p&gt;</description></item><item><title>Fixing MySQL replication after a faulty query</title><link>https://blog.remibergsma.com/2012/09/28/fixing-mysql-replication-after-a-faulty-query/</link><pubDate>Fri, 28 Sep 2012 19:23:24 +0200</pubDate><guid>https://blog.remibergsma.com/2012/09/28/fixing-mysql-replication-after-a-faulty-query/</guid><description>&lt;p&gt;Today I run into an issue with MySQL replication that prevented updates from the master to appear on the slaves. When checking the slave status, MySQL reports:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Slave_IO_State: Waiting for master to send event&#10;Slave_IO_Running: Yes&#10;Slave_SQL_Running: No&#10;Last_Error: Query caused different errors on master and slave.&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Apparently, an error occurred on the master (like a query that was wrong) and that failed on the slave as well. But since the error messages differ (a bit) the replication was stuck on this query. Manual intervention is required to tell MySQL what to do next.&lt;/p&gt;</description></item><item><title>Import your Bank Account transactions into the Account Tracker iPad app with ease</title><link>https://blog.remibergsma.com/2012/09/18/import-your-bank-account-transactions-into-the-account-tracker-ipad-app/</link><pubDate>Tue, 18 Sep 2012 19:40:59 +0200</pubDate><guid>https://blog.remibergsma.com/2012/09/18/import-your-bank-account-transactions-into-the-account-tracker-ipad-app/</guid><description>&lt;p&gt;To track my spendings, I started using the &lt;a href="http://itunes.apple.com/artist/graham-haley/id315200686"&gt;Account Tracker&lt;/a&gt; iPad app by&lt;a href="http://grahamhaley.co.uk/"&gt; Graham Haley&lt;/a&gt;. It’s a very solid and well written app that I’ve been using for some weeks now. I really like it, especially because it has a clearly designed gui and rich feature set. Another big plus is that the developer responds very quickly.&lt;/p&gt;&#10;&lt;p&gt;But, entering all transactions by hand for me was a no-go. I just don’t want to do that because it’s a lot of work and we might also forget to enter some. Furthermore, almost all transactions we do are done electronically. That’s when I started to think about importing transactions from our Bank Account into the iPad app. Fortunately the app has a feature that let’s you import a csv file. Our bank’s website also has an export feature so that should be doable!&lt;/p&gt;</description></item><item><title>Sed inline editing different on Mac OSX?</title><link>https://blog.remibergsma.com/2012/09/18/sed-inline-editing-different-on-mac-osx/</link><pubDate>Tue, 18 Sep 2012 10:48:38 +0200</pubDate><guid>https://blog.remibergsma.com/2012/09/18/sed-inline-editing-different-on-mac-osx/</guid><description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Sed" rel="wikipedia" title="Sed"&gt;Sed&lt;/a&gt; is very powerful, I use it a lot on Linux servers I manage. Today I was working on a local git repository on Mac OSX Mountain Lion when I run into some trouble.&lt;/p&gt;&#10;&lt;p&gt;Usually, to replace text in a file with new text I run:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;sed -i 's/Find this text/Replace with this/' file_to_replace_in.txt&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;While this works on Linux, it does not on Mac OSX:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sed: -i may not be used with stdin&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;The manpage on OSX says:&lt;/p&gt;</description></item><item><title>Building a redundant pair of Linux storage servers using DRBD and Heartbeat</title><link>https://blog.remibergsma.com/2012/09/09/building-a-redundant-pair-of-linux-storage-servers-using-drbd-and-heartbeat/</link><pubDate>Sun, 09 Sep 2012 22:20:16 +0200</pubDate><guid>https://blog.remibergsma.com/2012/09/09/building-a-redundant-pair-of-linux-storage-servers-using-drbd-and-heartbeat/</guid><description>&lt;p&gt;I’ve been building redundant storage solutions for years. At first, I used it for our webcluster storage. Nowadays it’s the base of our &lt;a href="https://blog.remibergsma.com/2012/06/28/meet-our-shiny-new-cloudstack-cloud/"&gt;CloudStack Cloud&lt;/a&gt;-storage. If you ask me, the best way to create a redundant pair of Linux storage servers using Open Source software, is to use &lt;a href="http://drbd.org"&gt;DRBD&lt;/a&gt;. Over the years it has proven to be rock solid to me.&lt;/p&gt;&#10;&lt;p&gt;DRBD is a &lt;em&gt;Distributed Replicated Block Device&lt;/em&gt;. You can think of DRBD as RAID-1 between two servers. Data is mirrored from the primary to the secondary server. When the primary fails, the secondary takes over and all services remain online. DRBD provides tools for failover but it does not handled the actual failover. Cluster management software like Heartbeat and PaceMaker are made for this.&lt;/p&gt;</description></item><item><title>How I replaced the CloudStack Virtual Router with my own physical Linux router</title><link>https://blog.remibergsma.com/2012/08/30/going-beyond-cloudstack-advanced-networking-how-i-replaced-the-virtual-router-with-my-own-physical-linux-router/</link><pubDate>Thu, 30 Aug 2012 23:52:32 +0200</pubDate><guid>https://blog.remibergsma.com/2012/08/30/going-beyond-cloudstack-advanced-networking-how-i-replaced-the-virtual-router-with-my-own-physical-linux-router/</guid><description>&lt;p&gt;Back in March I wrote a blog on &lt;a href="https://blog.remibergsma.com/2012/03/10/howto-create-a-network-in-cloudstack-without-a-virtual-router/" title="HOWTO create a network in CloudStack without a Virtual Router"&gt;how to create a network without a Virtual Router&lt;/a&gt;.  I received a lot of questions about it. It’s also a question that pops up now and then on the CloudStack forums. In the meanwhile I’ve worked hard to implement this setup at work. In this blog I’ll describe the concept of working with a CloudStack setup that has no Virtual Router.&lt;/p&gt;</description></item><item><title>How do you think I can improve my blog?</title><link>https://blog.remibergsma.com/2012/08/17/how-do-you-think-i-can-improve-my-blog/</link><pubDate>Fri, 17 Aug 2012 20:31:25 +0200</pubDate><guid>https://blog.remibergsma.com/2012/08/17/how-do-you-think-i-can-improve-my-blog/</guid><description>&lt;p&gt;Now that I have some time off, I enjoy spending some of it on my blog. I played with some WordPress settings and redesigned the right column. My most important goal here is to make sharing easy.&lt;/p&gt;&#10;&lt;p&gt;Why? Because I benefit a lot from what others post and want to give back a bit. That’s why I write my blogs. If you find them useful, it’s now easy to share them on Twitter, Facebook, Linked-In and others. The more people benefit, the better, don’t you think?&lt;/p&gt;</description></item><item><title>Enabling Zimbra auto responder for multiple e-mail addresses</title><link>https://blog.remibergsma.com/2012/08/16/enabling-zimbra-auto-responder-for-multiple-e-mail-addresses/</link><pubDate>Thu, 16 Aug 2012 13:11:58 +0200</pubDate><guid>https://blog.remibergsma.com/2012/08/16/enabling-zimbra-auto-responder-for-multiple-e-mail-addresses/</guid><description>&lt;p&gt;After all the hard work in the past months it’s now time for some weeks off 🙂 One last thing to solve was the Zimbra auto responder: I had enabled it through the web interface but while testing it, I found it only replied mails sent to my main e-mail address. There is no way to fix this in the web interface, so I had a look at the command line options and found a way to add extra e-mail addresses. Ssh to the machine, become user ‘zimbra’ and run this command: &lt;/p&gt;</description></item><item><title>HOWTO remove null characters from a file</title><link>https://blog.remibergsma.com/2012/08/15/howto-remove-null-characters-from-a-file/</link><pubDate>Wed, 15 Aug 2012 21:12:57 +0200</pubDate><guid>https://blog.remibergsma.com/2012/08/15/howto-remove-null-characters-from-a-file/</guid><description>&lt;p&gt;Sometimes files may be filled up with null characters that look like ^@ when you open them in a text editor. This may happen when a disk becomes full, or when you rename a logfile while an application is still writing to it.&lt;/p&gt;&#10;&lt;p&gt;I ran into this problem today, and I fixed it using a command called ‘tr’. This is a utility capable of translating or deleting characters from standard input/output. It means you can use it to ‘pipe’ input to it, and send the output to a new file. For example:&lt;/p&gt;</description></item><item><title>Stopping spam sent by botnets effectively: combining Passive OS Fingerprinting, Greylisting and Spamassassin</title><link>https://blog.remibergsma.com/2012/08/14/stopping-spam-sent-by-botnets-effectively-combining-passive-os-fingerprinting-greylisting-and-spamassassin/</link><pubDate>Tue, 14 Aug 2012 17:02:00 +0200</pubDate><guid>https://blog.remibergsma.com/2012/08/14/stopping-spam-sent-by-botnets-effectively-combining-passive-os-fingerprinting-greylisting-and-spamassassin/</guid><description>&lt;p&gt;At work, it is of my tasks to make sure we keep the mailboxes of our clients free of spam. Some weeks ago the number of spam mails went up massively and we worked hard to update the filters to keep unwanted mails out. In this blog I’ll describe a few of the things we did.&lt;/p&gt;&#10;&lt;p&gt;Using the famous&lt;a href="http://spamassassin.apache.org/"&gt; SpamAssassin&lt;/a&gt; tool it is possible to score e-mails. One can score on the contents of subject, body, headers etcetera. A lot of good rules are already supplied and it’s possible to write your own. When a new spam run comes in, we used to create new rules for the spam mails that slipped trough. That works, and afterwards the mails are tagged as spam.&lt;/p&gt;</description></item><item><title>Sorting Apache2 logfiles from multiple webservers by date so AWStats processes them correctly</title><link>https://blog.remibergsma.com/2012/08/11/sorting-apache2-logfiles-from-multiple-webservers-by-date-so-awstats-processes-them-correctly/</link><pubDate>Sat, 11 Aug 2012 10:54:07 +0200</pubDate><guid>https://blog.remibergsma.com/2012/08/11/sorting-apache2-logfiles-from-multiple-webservers-by-date-so-awstats-processes-them-correctly/</guid><description>&lt;p&gt;I had an interesting problem lately regarding &lt;a href="http://awstats.sourceforge.net/"&gt;AWStats&lt;/a&gt;. Due to some delay, the log files weren’t processed in the right order and then AWStats ignored all old logs. This resulted in some days being blank in the stats and of course this is not something we want. Since we also have multiple web servers in our cluster, things started to get a bit complicated.&lt;/p&gt;&#10;&lt;p&gt;The log files from each of the web servers were concatenated and then split to a separate log file for each virtual host using the Apache2 split-logfile script.&lt;/p&gt;</description></item><item><title>Restoring iPhone after repair very easy with iCloud</title><link>https://blog.remibergsma.com/2012/08/04/restoring-iphone-after-repair-very-easy-with-icloud/</link><pubDate>Sat, 04 Aug 2012 21:02:18 +0200</pubDate><guid>https://blog.remibergsma.com/2012/08/04/restoring-iphone-after-repair-very-easy-with-icloud/</guid><description>&lt;p&gt; &lt;/p&gt;&#10;&lt;p&gt;My mother’s iPhone had issues and was replaced by a new one. That did Apple handle very well 🙂 The down side of a new iPhone is, of course, that all settings and photo’s were lost. Fortunately, I was smart enough to enable iCloud backups last year when I setup her iPhone.&lt;/p&gt;&#10;&lt;p&gt;So, when the new iPhone came in today, all I did was restore the iCloud backup in a few swipes and clicks. An hour or so later (due to downloading) everything was as before. Very cool!&lt;/p&gt;</description></item><item><title>OpenVPN on Mountain Lion: Tunnelblick alternative Viscosity to the rescue?</title><link>https://blog.remibergsma.com/2012/08/03/openvpn-on-mountain-lion-tunnelblick-alternative-viscosity-to-the-rescue/</link><pubDate>Fri, 03 Aug 2012 20:21:21 +0200</pubDate><guid>https://blog.remibergsma.com/2012/08/03/openvpn-on-mountain-lion-tunnelblick-alternative-viscosity-to-the-rescue/</guid><description>&lt;p&gt;Last week I &lt;a href="https://blog.remibergsma.com/2012/07/28/fixing-openvpntunnelblick-dns-issues-in-osx-mountain-lion/"&gt;wrote a small blog&lt;/a&gt; about OpenVPN on OSX Mountain Lion using Tunnelblick. I managed to get things to work using the latest Tunnelblick beta. But after a week working with it, I’m not too happy how it works right now. The two issues I have are:&lt;/p&gt;&#10;&lt;p&gt;1. DNS servers do not &lt;em&gt;always&lt;/em&gt; get set properly, it feels unstable to me. I’ve seen /etc/resolv.conf with the right content, but still the old DNS servers were used by Mountain Lion. This is annoying: while connected to the vpn, hosts behind it do not resolve because the DNS server advertised by the OpenVPN server is not being used. This happened a few times last week, although most of the time it works ok. What goes wrong more often is the opposite: when disconnecting the connection, the OpenVPN advertised DNS server is still being used; but since we’re disconnected, it doesn’t resolve anymore and so nothing works. I’ve then to manually restore the right DNS servers. No fun, but I accepted it for now. I thought there’d be an update soon enough that’d solve this.&lt;/p&gt;</description></item><item><title>Overriding default keyboard shortcuts in Mac OSX (Mountain Lion)</title><link>https://blog.remibergsma.com/2012/07/29/overriding-default-keyboard-shortcuts-in-mac-osx-mountain-lion/</link><pubDate>Sun, 29 Jul 2012 12:16:21 +0200</pubDate><guid>https://blog.remibergsma.com/2012/07/29/overriding-default-keyboard-shortcuts-in-mac-osx-mountain-lion/</guid><description>&lt;p&gt;I’ve upgraded my 3 year old MBP with a fast SSD. I decided to install from scratch instead of migrating or cloning the old disk. The good thing is that everything is now fast and clean. The downside is that all customisations I did over the past years are also gone.&lt;/p&gt;&#10;&lt;p&gt;One thing I customised was shortcuts. I forgot how easy this can be done in OSX, so I’ll describe it below so others can benefit as well.&lt;/p&gt;</description></item><item><title>Fixing OpenVPN/Tunnelblick DNS issues on OSX Mountain Lion</title><link>https://blog.remibergsma.com/2012/07/28/fixing-openvpntunnelblick-dns-issues-in-osx-mountain-lion/</link><pubDate>Sat, 28 Jul 2012 12:59:24 +0200</pubDate><guid>https://blog.remibergsma.com/2012/07/28/fixing-openvpntunnelblick-dns-issues-in-osx-mountain-lion/</guid><description>&lt;p&gt;I just upgraded to OSX Mountain Lion and had some trouble this morning getting my OpenVPN connection (using Tunnelblick) to work. It would connect, but the DNS resolving was unstable. I managed to get it to work on the latest stable by changing the DNS-server setting to ‘set nameserver 3.0b10’ but then internet traffic would not work. The best solution for me at the moment is to upgrade to Beta release&lt;del&gt; &lt;a href="http://code.google.com/p/tunnelblick/downloads/detail?name=Tunnelblick_3.3beta16.dmg"&gt;3.3beta16&lt;/a&gt; &lt;/del&gt;&lt;a href="http://code.google.com/p/tunnelblick/downloads/detail?name=Tunnelblick_3.3beta18.dmg"&gt;3.3beta18&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Removing old equipment from datacenter</title><link>https://blog.remibergsma.com/2012/07/21/removing-old-equipment-from-datacenter/</link><pubDate>Sat, 21 Jul 2012 22:57:46 +0200</pubDate><guid>https://blog.remibergsma.com/2012/07/21/removing-old-equipment-from-datacenter/</guid><description>&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/10/old-equipment.jpg"&gt;&lt;img alt="" class="alignnone size-medium wp-image-702" height="300" src="https://blog.remibergsma.com/wp-content/uploads/2012/10/old-equipment.jpg" title="old-equipment" width="224"/&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;We’ve virtualized many servers already this year. Last month we &lt;a href="https://blog.remibergsma.com/2012/07/01/video-impression-of-md-datacenter-move-2012/"&gt;moved the MD equipment&lt;/a&gt; that still needs to be virtualized. Today we removed the old MN servers that are no longer needed due to our new private cloud. All our main equipment is now together in the DC-2 datacenter in Amsterdam!&lt;/p&gt;</description></item><item><title>Moving a MySQL slave to a new replication master</title><link>https://blog.remibergsma.com/2012/07/10/moving-a-mysql-slave-to-a-new-replication-master/</link><pubDate>Tue, 10 Jul 2012 22:28:09 +0200</pubDate><guid>https://blog.remibergsma.com/2012/07/10/moving-a-mysql-slave-to-a-new-replication-master/</guid><description>&lt;p&gt;I’m upgrading our MySQL master/slave setup and am moving it to new (virtual) hardware in our cloud environment. One of the things I did last night was moving the MySQL slaves to a new master that I had prepared in the new environment. This post describes how I connected the slaves to their new master in the cloud.&lt;/p&gt;&#10;&lt;p&gt;First, you’ll need to make sure the new master has the same data as the old one.&lt;br/&gt;&#10;1. Make sure no more updates occur on the old master&lt;br/&gt;&#10;2. Create a sql dump of the master using &lt;em&gt;mysqldump&lt;/em&gt;&lt;br/&gt;&#10;3. Import that dump into the new master using &lt;em&gt;mysql&lt;/em&gt; cmd line tool&lt;/p&gt;</description></item><item><title>Setting locales correctly on Mac OSX Terminal application</title><link>https://blog.remibergsma.com/2012/07/10/setting-locales-correctly-on-mac-osx-terminal-application/</link><pubDate>Tue, 10 Jul 2012 21:51:58 +0200</pubDate><guid>https://blog.remibergsma.com/2012/07/10/setting-locales-correctly-on-mac-osx-terminal-application/</guid><description>&lt;p&gt;I’ve had some trouble when using the Mac OSX Terminal app for some time now. Until today, it just gave me some annoying warnings from time to time. Like when installing an application with apt-get in Debian:&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;perl: warning: Setting locale failed.&lt;br/&gt;&#10;perl: warning: Please check that your locale settings:&lt;br/&gt;&#10;LANGUAGE = (unset),&lt;br/&gt;&#10;LC_ALL = (unset),&lt;br/&gt;&#10;LC_CTYPE = “UTF-8”,&lt;br/&gt;&#10;LANG = “en_US.UTF-8”&lt;br/&gt;&#10;are supported and installed on your system.&lt;br/&gt;&#10;perl: warning: Falling back to the standard locale (“C”).&lt;br/&gt;&#10;locale: Cannot set LC_CTYPE to default locale: No such file or directory&lt;br/&gt;&#10;locale: Cannot set LC_ALL to default locale: No such file or directory&lt;/p&gt;&lt;/blockquote&gt;</description></item><item><title>Video impression of MD datacenter move 2012</title><link>https://blog.remibergsma.com/2012/07/01/video-impression-of-md-datacenter-move-2012/</link><pubDate>Sun, 01 Jul 2012 22:46:52 +0200</pubDate><guid>https://blog.remibergsma.com/2012/07/01/video-impression-of-md-datacenter-move-2012/</guid><description>&lt;p&gt;After many weeks of preparation we moved MD’s equipment from the EUNetworks datacenter in Amsterdam, to Gyrocenter DC-2. This is also our new datacenter where we’ve built a CloudStack cloud.&lt;/p&gt;&#10;&lt;p&gt;Most servers were virtualized before this migration and only had to be removed during this operation. Others will be virtualized in the coming months. Fortunately most services had only some downtime during the night.&lt;/p&gt;&#10;&lt;p&gt;We also moved MD’s backup location (Redbus) and integrated it with our equipment in Global Switch.&lt;/p&gt;</description></item><item><title>High cpu load on CloudStack management servers after leap second 30/6/2012@23:59:60 UTC</title><link>https://blog.remibergsma.com/2012/07/01/high-cpu-load-on-cloudstack-management-servers-after-leap-second-3062012235959-utc/</link><pubDate>Sun, 01 Jul 2012 07:46:53 +0200</pubDate><guid>https://blog.remibergsma.com/2012/07/01/high-cpu-load-on-cloudstack-management-servers-after-leap-second-3062012235959-utc/</guid><description>&lt;p&gt;After the leap second insert last night, my CloudStack 3.0 servers (or its Java processes actually) started to use a lot of CPU. Here’s how to fix it (sets the date):&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;date ; date -s "`date -u`" ; date&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Just run this on your management- or compute node. &lt;del&gt;On my CloudStack system it only occurred on the management servers.&lt;/del&gt; Confirmed: it occurred both on management- and compute nodes on our CloudStack system. No restart required afterwards . The load will drop immediately.&lt;/p&gt;</description></item><item><title>Meet our shiny new CloudStack Cloud</title><link>https://blog.remibergsma.com/2012/06/28/meet-our-shiny-new-cloudstack-cloud/</link><pubDate>Thu, 28 Jun 2012 14:24:56 +0200</pubDate><guid>https://blog.remibergsma.com/2012/06/28/meet-our-shiny-new-cloudstack-cloud/</guid><description>&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/10/cloudstack_dashboard.png"&gt;&lt;img alt="" class="alignnone size-medium wp-image-821" height="225" src="https://blog.remibergsma.com/wp-content/uploads/2012/10/cloudstack_dashboard.png" title="cloudstack_dashboard" width="300"/&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;This is what our Cloud looks like in the CloudStack Dashboard. Pretty powerful 🙂&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/10/boxes.jpg"&gt;&lt;img alt="" class="alignnone size-medium wp-image-825" height="300" src="https://blog.remibergsma.com/wp-content/uploads/2012/10/boxes.jpg" title="boxes" width="223"/&gt;&lt;br/&gt;&#10;&lt;/a&gt;These are the boxes the hardware was in.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/10/cloud_hardware.jpg"&gt;&lt;img alt="" class="alignnone size-medium wp-image-826" height="222" src="https://blog.remibergsma.com/wp-content/uploads/2012/10/cloud_hardware.jpg" title="cloud_hardware" width="300"/&gt;&lt;br/&gt;&#10;&lt;/a&gt;This image is taken in our lab while testing CloudStack.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/06/spares.jpg"&gt;&lt;img alt="" height="300" src="https://blog.remibergsma.com/wp-content/uploads/2012/06/spares.jpg" title="spares" width="224"/&gt;&lt;/a&gt;&lt;br/&gt;&#10;Very handy: a tray for spares in your rack!&lt;/p&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/06/img_0266.jpg"&gt;&lt;img alt="" height="300" src="https://blog.remibergsma.com/wp-content/uploads/2012/06/img_0266.jpg" title="Front of CloudStack rack" width="224"/&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;This is the front: 6 compute nodes, 2 management servers and 2 Linux routers that manage all traffic. We also have 2 big storage servers that you cannot see on this image.&lt;/p&gt;</description></item><item><title>Upgrading Keepalived in Debian Squeeze</title><link>https://blog.remibergsma.com/2012/06/16/upgrading-keepalived-in-debian-squeeze/</link><pubDate>Sat, 16 Jun 2012 23:26:04 +0200</pubDate><guid>https://blog.remibergsma.com/2012/06/16/upgrading-keepalived-in-debian-squeeze/</guid><description>&lt;p&gt;I’m running &lt;a href="http://keepalived.org/"&gt;Keepalived&lt;/a&gt; on our loadbalancers for many years and I’m really happy with it. Today I run into an issue that took me some time to solve. I thought I’d share it 🙂&lt;/p&gt;&#10;&lt;p&gt;In my current setup I have a pair of Debian Squeeze boxes running version 1.1.20. Since I’m rolling out ipv6 at the moment, I need to upgrade to 1.2.2. Fortunately, Debian provides this version in &lt;a href="http://packages.debian.org/squeeze-backports/keepalived"&gt;Squeeze-Backports&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;So, I decided to upgrade the Backup loadbalancer first (lb-1). It was a simple ‘apt-get’ procedure to get it installed. But soon these errors popped up in my syslog:&lt;/p&gt;</description></item><item><title>High Availability with automatic failover for CloudStack management servers</title><link>https://blog.remibergsma.com/2012/05/02/high-availability-with-automatic-failover-for-cloudstack-management-servers/</link><pubDate>Wed, 02 May 2012 14:14:11 +0200</pubDate><guid>https://blog.remibergsma.com/2012/05/02/high-availability-with-automatic-failover-for-cloudstack-management-servers/</guid><description>&lt;p&gt;I’m using &lt;a href="http://cloudstack.org"&gt;CloudStack&lt;/a&gt; for some months now and our cloud is close to going live. It’s an awesome piece of software that is just rock solid :-). One thing I couldn’t really find is how to create high available management servers with &lt;em&gt;automatic&lt;/em&gt; failover. I’ve come up with a solution that I’ll share in this blog post.&lt;/p&gt;&#10;&lt;p&gt;From the &lt;a href="http://download.cloud.com/releases/3.0.0/CloudStack3.0AdminGuide.pdf"&gt;CloudStack manual&lt;/a&gt;:&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;The CloudStack Management Server should be deployed in a multi-node configuration such that it is not susceptible to individual server failures. (…) MySQL may be configured to use replication to provide for a manual failover in the event of database loss.&lt;/p&gt;&lt;/blockquote&gt;</description></item><item><title>RRDtool: moving data between 32bit and 64bit architectures</title><link>https://blog.remibergsma.com/2012/04/30/rrdtool-moving-data-between-32bit-and-64bit-architectures/</link><pubDate>Mon, 30 Apr 2012 13:15:49 +0200</pubDate><guid>https://blog.remibergsma.com/2012/04/30/rrdtool-moving-data-between-32bit-and-64bit-architectures/</guid><description>&lt;p&gt;When you mix architectures (or are moving from 32bit to 64bit like me) and use RRDtool for statistics, you might run into this problem:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;ERROR: This RRD was created on another architecture&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;You can solve this, to dump the RRD file on the server that created it to XML, like this:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;rrdtool dump stats.rrd &amp;gt; stats.xml&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Then transfer it to the new server, and convert it back to RRD:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;rrdtool restore -f stats.xml stats.rrd&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;The  other server can now read the file. You can test it with the info command:&lt;/p&gt;</description></item><item><title>Using GNU Screen to manage terminal sessions</title><link>https://blog.remibergsma.com/2012/04/29/using-gnu-screen-to-manage-terminal-sessions/</link><pubDate>Sun, 29 Apr 2012 11:55:05 +0200</pubDate><guid>https://blog.remibergsma.com/2012/04/29/using-gnu-screen-to-manage-terminal-sessions/</guid><description>&lt;p&gt;Whether you’re using Mac OSX, Windows or Linux, we’re all using a so-called “window manager”. Most are graphical user interfaces; and that’s a good thing 🙂 But as a sysadmin I need to manage many servers. Servers without a graphical user interface. So, how to handle that?&lt;/p&gt;&#10;&lt;p&gt;One could just ssh into a server when you need to do work on a given server. Depending on the terminal program you use, you might be able to have multiple sessions at the same time, preferably in tabs. It looks like this when 3 tabs are open:&lt;/p&gt;</description></item><item><title>HOWTO enable RPMForge repository in CentOS</title><link>https://blog.remibergsma.com/2012/04/18/howto-enable-rpmforge-repository-in-centos/</link><pubDate>Wed, 18 Apr 2012 21:56:56 +0200</pubDate><guid>https://blog.remibergsma.com/2012/04/18/howto-enable-rpmforge-repository-in-centos/</guid><description>&lt;p&gt;Since I’m working with CloudStack I’m also working with CentOS. As I’ve been working with Debian for over 10 years, it sometimes takes some extra time to get things done. Like when you want to install a package that is not in the default repo’s.&lt;/p&gt;&#10;&lt;p&gt;This is how to enable the RPMForge repository:&lt;/p&gt;&#10;&lt;p&gt;Start to import the key:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Then download the RPMForge release file:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Then all you need to do is install this rpm:&lt;/p&gt;</description></item><item><title>HOWTO create php5-PECL Debian packages</title><link>https://blog.remibergsma.com/2012/04/05/howto-create-php5-pecl-debian-packages/</link><pubDate>Thu, 05 Apr 2012 20:01:07 +0200</pubDate><guid>https://blog.remibergsma.com/2012/04/05/howto-create-php5-pecl-debian-packages/</guid><description>&lt;p&gt; &lt;/p&gt;&#10;&lt;p&gt;The PHP Extension Community Library (PECL) has many great extensions for php5. Unfortunately, most are not packaged for Debian. Of course it is pretty easy to install it by hand. For example the ‘pecl_http’ extension:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;pecl install pecl_http&#10;echo "extension=http.so" &amp;gt; /etc/php5/conf.d/http.ini&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;For this to work you need some -dev packages to be installed. php5-dev and build-essential are the minimum required.&lt;/p&gt;&#10;&lt;p&gt;I have two problems with this method:&lt;br/&gt;&#10;1. Too many -dev packages will be installed on production servers. I want to have as less packages installed as possible;&lt;br/&gt;&#10;2. The software is not easily installable and upgradable;&lt;/p&gt;</description></item><item><title>The power of coding your infrastructure – CloudStack and Puppet in action!</title><link>https://blog.remibergsma.com/2012/03/25/the-power-of-coding-your-infrastructure-cloudstack-and-puppet-in-action/</link><pubDate>Sun, 25 Mar 2012 23:37:47 +0200</pubDate><guid>https://blog.remibergsma.com/2012/03/25/the-power-of-coding-your-infrastructure-cloudstack-and-puppet-in-action/</guid><description>&lt;p&gt;Lately I’ve been coding to automate the deployment of Virtual Machines that will run in our cloud. It’s inspired by blogs and code from &lt;a href="http://geek.jasonhancock.com/"&gt;Jason Hancock&lt;/a&gt; but implemented in a different way to meet our specific needs. Since CloudStack has a very flexible API, you can make it do anything you want. It works pretty cool so far.&lt;/p&gt;&#10;&lt;p&gt;From a command line script we can deploy a new VM with a certain “role”. This role has a name, like “web server” or “test-vm-db” and contains the OS template name, the datacenter name, the networks to connect to, the hardware offering (CPU/Memory/Disk) and the account and domain to use. These are all CloudStack specific settings. When calling the deployVirtualMachine() API command, CloudStack will create a VM with exactly these specs. We use a simple php cli script to add a new server, like this:&lt;/p&gt;</description></item><item><title>DevOps: The new way of doing sysadmin and development</title><link>https://blog.remibergsma.com/2012/03/25/devops-the-new-way-of-doing-sysadmin-and-development/</link><pubDate>Sun, 25 Mar 2012 22:38:53 +0200</pubDate><guid>https://blog.remibergsma.com/2012/03/25/devops-the-new-way-of-doing-sysadmin-and-development/</guid><description>&lt;p&gt;Today while I was running I realized I’ve been doing a lot of coding lately. Coding our new infrastructure to be exact. I remembered &lt;a href="http://www.krisbuytaert.be/blog/"&gt;Kris Buytaert’s&lt;/a&gt; talk about DevOps back in February when I was in Antwerp. One of the key statements is that there are ‘sysadmin coders’ and not ‘sysadmins’ and ‘coders’. The only way to achieve great results, is when these two work together and communicate with each other. The idea’s behind this are called DevOps. IT Operations starts using code to manage configurations and infrastructure instead of doing it by hand over and over again. Thanks to CloudStack and Puppet this is now possible. Ideally, you would not have two groups, but one. Stephen Nelson-Smith from jedi.be describes it like this:&lt;/p&gt;</description></item><item><title>HOWTO automatically reboot a Linux system after a kernel panic</title><link>https://blog.remibergsma.com/2012/03/21/howto-automatically-reboot-a-linux-system-after-a-kernel-panic/</link><pubDate>Wed, 21 Mar 2012 21:18:02 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/21/howto-automatically-reboot-a-linux-system-after-a-kernel-panic/</guid><description>&lt;p&gt;Remote Linux systems usually have to be available all the time. Although Linux is rock solid and stable, an occasional crash can occur. For example when there’s a problem with hardware or software. The last thing you want, is that a Linux server got a kernel panic and then waits forever for someone to reboot it.&lt;/p&gt;&#10;&lt;p&gt;Of course there’s monitoring, and there are APC’s too, which can reboot the server. This is like pulling the plug. It usually takes some time for monitoring to notify a sysadmin and then for the sysadmin to reboot the server. And, when using IPMI devices (especially the older ones that share a network connection with the server), a kernel panic could make them unavailable, too. I’ve had that on many occasions. Then you end up driving to the data center or call someone to reset the server. I hate that 😉&lt;/p&gt;</description></item><item><title>Great run, great weather!</title><link>https://blog.remibergsma.com/2012/03/21/great-run-great-weather/</link><pubDate>Wed, 21 Mar 2012 12:55:54 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/21/great-run-great-weather/</guid><description>&lt;p&gt;Today is a very nice day with a lot of sun shine. This morning I decided to go for a run, to get rid of the stress and to enjoy being outside. Just running for some time makes me calm and relax again. I love that feeling!&lt;/p&gt;&#10;&lt;p&gt;I haven’t been running for almost a year. Today I took my &lt;a href="https://buy.garmin.com/shop/shop.do?pID=349&amp;amp;ra=true"&gt;Garmin Forerunner 305&lt;/a&gt; with me. The nice thing is that the device has a GPS chip and can track many things, like distance, pace, heartbeat, calories etc. When I got home, I uploaded the run data to the &lt;a href="http://www.mapmyrun.com"&gt;MapMyRun&lt;/a&gt; website. It produces these nice images:&lt;/p&gt;</description></item><item><title>HOWTO enable color for PHP and Bash scripts in Nano</title><link>https://blog.remibergsma.com/2012/03/15/howto-enable-color-for-php-and-bash-scripts-in-nano/</link><pubDate>Thu, 15 Mar 2012 22:48:03 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/15/howto-enable-color-for-php-and-bash-scripts-in-nano/</guid><description>&lt;p&gt;When working in shells, it’s very useful to have syntax highlighting. In &lt;a href="http://vim.org"&gt;vim&lt;/a&gt; it’s just ‘:sy on’ and you’re done. For those of you using &lt;a href="http://www.nano-editor.org/"&gt;GNU Nano&lt;/a&gt;, I’ll show you how to enable syntax highlighting as well.&lt;/p&gt;&#10;&lt;p&gt;To start, we’ll need some files which tell nano what to display in what color. Here is an example of such a file for PHP:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;nano /usr/share/nano/php.nanorc&#10;&lt;p&gt;syntax &amp;ldquo;php&amp;rdquo; &amp;ldquo;.php|.inc$&amp;rdquo;&#10;color white start=&amp;quot;&amp;lt;?(php)?&amp;quot; end=&amp;quot;?&amp;gt;&amp;quot;&#10;color magenta start=&amp;quot;&amp;lt;[^?]&amp;quot; end=&amp;quot;[^?]&amp;gt;&amp;quot;&#10;color magenta &amp;ldquo;$[a-zA-Z_0-9]&lt;em&gt;&amp;rdquo;&#10;color brightblue &amp;ldquo;-&amp;gt;[a-zA-Z_0-9]&lt;/em&gt;&amp;rdquo;&#10;color cyan &amp;ldquo;([)|(])&amp;rdquo;&#10;color brightyellow &amp;ldquo;(var|class|function|echo|case|break|default|exit|switch|if|else|elseif|@|while|return|public|private|proteted|static)\s&amp;rdquo;&#10;color brightyellow &amp;ldquo;&amp;amp;lt;(try|throw|catch|operator|new)&amp;amp;gt;&amp;rdquo;&#10;color white &amp;ldquo;=&amp;rdquo;&#10;color green &amp;ldquo;[,{}()]&amp;rdquo;&#10;color green &amp;ldquo;==&amp;rdquo;&#10;color brightgreen &amp;ldquo;(&amp;rsquo;[^&amp;rsquo;]&lt;em&gt;&amp;rsquo;)|(&amp;quot;[^&amp;rdquo;]&lt;/em&gt;&amp;quot;)&amp;quot;&#10;color yellow start=&amp;quot;&lt;!--" end="--&gt;&amp;quot;&#10;color yellow start=&amp;quot;/*&amp;quot; end=&amp;quot;*/&amp;quot;&#10;color yellow start=&amp;quot;#&amp;quot; end=&amp;quot;$&amp;quot;&#10;color yellow &amp;ldquo;//.*&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;</description></item><item><title>Tweak the OSX Terminal to display colors</title><link>https://blog.remibergsma.com/2012/03/15/tweak-the-osx-terminal-to-display-colors/</link><pubDate>Thu, 15 Mar 2012 22:17:06 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/15/tweak-the-osx-terminal-to-display-colors/</guid><description>&lt;p&gt;Today I came across a nice post by Tod Werth, who created &lt;a href="http://blog.toddwerth.com/entries/13"&gt;a nice theme for the OSX Terminal program&lt;/a&gt; called IR_Black.&lt;/p&gt;&#10;&lt;p&gt;All you have to do is download his schema and open in it Terminal. Then tweak the colors a bit to fully meet our needs.&lt;/p&gt;&#10;&lt;p&gt;Last step: enable colors in your profile:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;vim ~/.bash_profile&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Add this line:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;export CLICOLOR=1;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;When you open a  new window and enter a simple ‘ls’ command, it looks like this:&lt;/p&gt;</description></item><item><title>HOWTO create a network in CloudStack without a Virtual Router</title><link>https://blog.remibergsma.com/2012/03/10/howto-create-a-network-in-cloudstack-without-a-virtual-router/</link><pubDate>Sat, 10 Mar 2012 21:49:20 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/10/howto-create-a-network-in-cloudstack-without-a-virtual-router/</guid><description>&lt;p&gt;Networking in CloudStack 3.0 is awesome; the Virtual Router provides many cool features like LoadBalancing, PortForwarding, (s)NAT, DHCP, VPN and so on. When a new network is created and being used, a Virtual Router is automatically launched to support these features. Since the Virtual Router is a Single Point of Failure, you should turn on the HA (High Available) option; which actually addes a 2nd Virtual Router on each network. While this is pretty cool, it makes the number of System VM’s go up and when you don’t need them it’s kind of wasting resources.&lt;/p&gt;</description></item><item><title>Fixing ‘Clocksource tsc unstable’ warnings on older hardware that result in a system crash</title><link>https://blog.remibergsma.com/2012/03/10/fixing-clocksource-tsc-unstable-warnings-on-older-hardware-that-result-in-a-system-crash/</link><pubDate>Sat, 10 Mar 2012 16:02:00 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/10/fixing-clocksource-tsc-unstable-warnings-on-older-hardware-that-result-in-a-system-crash/</guid><description>&lt;p&gt;We still have some older hardware running for non-critical and lightweight operations. Since upgrading these old boxes to Debian Squeeze weird things started to happen. After some time, the system clock stops working and that results in processes to crash and new ones unable to start. Of course, nothing works properly on any computer without a working system clock. Here you see how that looks like:&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/03/notime.png"&gt;&lt;img alt="" class="alignnone size-full wp-image-208" height="97" src="https://blog.remibergsma.com/wp-content/uploads/2012/03/notime.png" title="notime" width="405"/&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;First thought was to replace the CMOS battery, but that didn’t help and it occurred on multiple machines around the same time. Rebooting solves the problem for a while but 24-36 hours later the system clock stops again. Sometimes the problem stays away much longer. Also, some servers with the same hardware do not seem to have the problem. It seems hardware related. But is that really true?&lt;/p&gt;</description></item><item><title>HOWTO backup an OpenLDAP server</title><link>https://blog.remibergsma.com/2012/03/07/howto-backup-an-openldap-server/</link><pubDate>Wed, 07 Mar 2012 18:49:51 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/07/howto-backup-an-openldap-server/</guid><description>&lt;p&gt;In a previous post I described&lt;a href="https://blog.remibergsma.com/2012/03/05/howto-restore-an-openldap-server-from-backup/" title="HOWTO restore an OpenLDAP server from backup"&gt; howto restore a OpenLDAP server from backup&lt;/a&gt; . But how to backup Open LDAP?&lt;/p&gt;&#10;&lt;p&gt;The backups I make consist of two parts:&lt;/p&gt;&#10;&lt;p&gt;1. First backup the LDAP database itself using a program called ‘slapcat.’ Slapcat  is  used  to generate an LDAP Directory Interchange Format (LDIF) output based upon the contents of a given LDAP database. This is a text version of your database which can be imported later. Think of it as a SQL-backup for relational databases. Anyway, here’s how to run slapcat on the OpenLDAP server:&lt;/p&gt;</description></item><item><title>Loads of sleeping MySQL connections?</title><link>https://blog.remibergsma.com/2012/03/05/loads-of-sleeping-mysql-connections/</link><pubDate>Mon, 05 Mar 2012 16:08:24 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/05/loads-of-sleeping-mysql-connections/</guid><description>&lt;p&gt;Then probably the code is not properly disconnecting the MySQL connection. The time MySQL waits for the next command to be send, can be controlled by the ‘wait_timeout’ parameter. The default is a massive 28800 seconds (8h). Setting this value too low gives ‘MySQl server has gone away’ errors, so be careful.&lt;/p&gt;&#10;&lt;p&gt;Debugging scripts that create many ‘sleeping’ connections is challenging. An easy solution is setting the ‘wait_timeout’ parameter to something low after the MySQL connection is started. This setting is then valid only for this current session.&lt;/p&gt;</description></item><item><title>HOWTO solve OpenLDAP bdb_equality_candidates errors</title><link>https://blog.remibergsma.com/2012/03/05/howto-solve-openldap-bdb_equality_candidates-errors/</link><pubDate>Mon, 05 Mar 2012 11:33:18 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/05/howto-solve-openldap-bdb_equality_candidates-errors/</guid><description>&lt;p&gt;After restoring an OpenLDAP server I found these lines in the logs:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Mar  5 06:50:03 ldap slapd[4815]: &amp;lt;= bdb_equality_candidates: (uidNumber) index_param failed (13)&#10;Mar  5 06:50:04 ldap slapd[4815]: &amp;lt;= bdb_equality_candidates: (uid) index_param failed (13)&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;This means OpenLDAP is query’ing its database, but found no index for fields it often uses. In this case ‘uid’ and ‘uidNumber’. It seems due to restoring the backup, these indexes got lost. Here is how to add the indexes again:&lt;/p&gt;</description></item><item><title>HOWTO restore an OpenLDAP server from backup</title><link>https://blog.remibergsma.com/2012/03/05/howto-restore-an-openldap-server-from-backup/</link><pubDate>Mon, 05 Mar 2012 11:32:01 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/05/howto-restore-an-openldap-server-from-backup/</guid><description>&lt;p&gt;Just a quick instruction on howto restore an OpenLDAP server using a ‘ldif’-backup-file:&lt;/p&gt;&#10;&lt;p&gt;1. Setup the server&lt;/p&gt;&#10;&lt;p&gt;2. Configure the ‘slapd’ package, be sure to use the right database name. It’s a bit confusing: you enter it as ldaptree.company.com, but this will be used to create an empty database. Make sure it matches your backup ldif structure.&lt;/p&gt;&#10;&lt;p&gt;3. Make sure OpenLDAP is stopped&lt;/p&gt;&#10;&lt;p&gt;4. Read the backupdata into the OpenLDAP database using slapadd program&lt;/p&gt;</description></item><item><title>Allowing user processes to run for 10 minutes max on Linux – a first approach</title><link>https://blog.remibergsma.com/2012/03/04/allowing-user-processes-to-run-for-10-minutes-max-on-linux-a-first-approach/</link><pubDate>Sun, 04 Mar 2012 19:19:23 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/04/allowing-user-processes-to-run-for-10-minutes-max-on-linux-a-first-approach/</guid><description>&lt;p&gt;Perl processes that got stock kept me from sleep last night. I’m not sure what happened, but probably they were waiting for the database that reached a max_connections limit for this particular user. When Apache reached its max processes, monitoring paged me. Fortunately this is all running in a cluster, so no service was interrupted.&lt;/p&gt;&#10;&lt;p&gt;A few days ago I found myself killing Apache processes from a user that created an endless loop. Also, some scripts our users upload generate a lot of load (which is ok for a while, but not too long). So I thought I’d write something in bash to help me with all this 🙂&lt;/p&gt;</description></item><item><title>HOWTO quickly add a route in Mac OSX</title><link>https://blog.remibergsma.com/2012/03/04/howto-quickly-add-a-route-in-mac-osx/</link><pubDate>Sun, 04 Mar 2012 17:27:03 +0100</pubDate><guid>https://blog.remibergsma.com/2012/03/04/howto-quickly-add-a-route-in-mac-osx/</guid><description>&lt;p&gt;Adding a route manually can be necessary sometimes. When on Linux, I know the command by head:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;sudo route add -net 10.67.0.0/16 gw 192.168.120.254&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;On the Mac the command is similar, but a bit different 🙂 Just as a note to myself and anyone else interested:&lt;/p&gt;&#10;&lt;pre class="language-bash"&gt;&lt;code class="language-bash"&gt;sudo route -n add -net 10.67.0.0/16  192.168.120.254&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;This sets up a route to the 10.67.0.0/16 net through gateway 192.168.120.254. First one on Linux, second one on Mac OSX.&lt;/p&gt;</description></item><item><title>CloudStack 3.0 released today!</title><link>https://blog.remibergsma.com/2012/02/28/cloudstack-3-0-released-today/</link><pubDate>Tue, 28 Feb 2012 23:05:53 +0100</pubDate><guid>https://blog.remibergsma.com/2012/02/28/cloudstack-3-0-released-today/</guid><description>&lt;p&gt;Good news today when I came home from the office: &lt;a href="http://cloudstack.org/blog/117-cloudstack-acton-released.html"&gt;CloudStack 3.0 stable has been released&lt;/a&gt;! I’d really been looking forward to this, because we’ll be using it in a big cloud project at work. With this release, we can finalize our cloud design and proof-of-concept setup. More about that later.&lt;/p&gt;&#10;&lt;p&gt;Thanks to the &lt;a href="http://cloudstack.org"&gt;CloudStack&lt;/a&gt; team for this great release! 🙂&lt;/p&gt;</description></item><item><title>Redirecting incoming tcp connections with redir</title><link>https://blog.remibergsma.com/2012/02/28/redirecting-incoming-tcp-connections-with-redir/</link><pubDate>Tue, 28 Feb 2012 22:58:27 +0100</pubDate><guid>https://blog.remibergsma.com/2012/02/28/redirecting-incoming-tcp-connections-with-redir/</guid><description>&lt;p&gt;Sometimes you need an easy way to redirect incoming connections to another system. For example when migrating an old box to a new one. Today I came across an old note from myself explaining this. I thought it might be worth sharing 🙂&lt;/p&gt;&#10;&lt;p&gt;You’ll need the ‘redir’ program for this to work:&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;apt-get install redir&lt;/p&gt;&lt;/blockquote&gt;&#10;&lt;p&gt;Redir redirects tcp connections coming in to a local port to a specified address/port combination like this:&lt;/p&gt;</description></item><item><title>CloudStack from an end-user’s point of view</title><link>https://blog.remibergsma.com/2012/02/25/cloudstack-from-an-end-users-point-of-view/</link><pubDate>Sat, 25 Feb 2012 00:17:03 +0100</pubDate><guid>https://blog.remibergsma.com/2012/02/25/cloudstack-from-an-end-users-point-of-view/</guid><description>&lt;p&gt;For a Cloud project at work, I made some screenshots of CloudStack to show our management. They wanted to know what an end-user will see in CloudStack 3.0. This is CloudStack from an end-user’s point-of-view:&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/02/1-login.png"&gt;&lt;img alt="" class="size-medium wp-image-107 alignnone" height="182" src="https://blog.remibergsma.com/wp-content/uploads/2012/02/1-login.png" title="1 login" width="300"/&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;The login screen is where it all starts..&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/02/2-dashboard.png"&gt;&lt;img alt="" class="wp-image-108 alignnone" height="181" src="https://blog.remibergsma.com/wp-content/uploads/2012/02/2-dashboard.png" title="2 dashboard" width="300"/&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;After logging in, users are presented with a Dashboard. Here is a nice and clear overview of what VM’s are running and stopped. As you can see, there is a nice menu at the right.&lt;/p&gt;</description></item><item><title>Backuping using rsnapshot made my life easier</title><link>https://blog.remibergsma.com/2012/02/18/backuping-using-rsnapshot-made-my-life-easier/</link><pubDate>Sat, 18 Feb 2012 13:18:25 +0100</pubDate><guid>https://blog.remibergsma.com/2012/02/18/backuping-using-rsnapshot-made-my-life-easier/</guid><description>&lt;p&gt;As a sysadmin I’ve many things to take care of. One of the most important is backups. As websites and mailarchives become larger and lager, it is an ongoing challenge to fit as many backups in the available backup space.&lt;/p&gt;&#10;&lt;p&gt;In the early days we’re backupping using &lt;a href="http://nl.wikipedia.org/wiki/Rsync"&gt;rsync&lt;/a&gt;, tar and &lt;a href="http://nl.wikipedia.org/wiki/Gzip"&gt;gzip&lt;/a&gt;. The biggest drawback was it takes a lot of space. On the bright side, it’s plain simple and just always works. All you’ve to do is untar an archive and everything is there again (i.e.: happy customer!). It helped me on many occasions. So I kept this old method for a long time and looked around for alternatives.&lt;/p&gt;</description></item><item><title>Home-key in OSX-Terminal</title><link>https://blog.remibergsma.com/2012/02/18/home-key-in-osx-terminal/</link><pubDate>Sat, 18 Feb 2012 12:27:33 +0100</pubDate><guid>https://blog.remibergsma.com/2012/02/18/home-key-in-osx-terminal/</guid><description>&lt;p&gt;I’m working in Terminal a lot. Lately I more and more use my MacBook Pro instead of my Ubuntu desktop. I’d to overcome some small issues. One was the missing Home-key, which allows you to jump all the way to the left on the current line.&lt;/p&gt;&#10;&lt;p&gt;Although the Mac doesn’t have a Home key, its function is available by pressing Fn+Shift+Left Arrow. And even better: Fn+Shift+Right Arrow jumps all the way to the right.&lt;/p&gt;</description></item><item><title>Impressed by upcoming CloudStack 3.0</title><link>https://blog.remibergsma.com/2012/02/12/impressed-by-upcoming-cloudstack-3-0/</link><pubDate>Sun, 12 Feb 2012 13:35:23 +0100</pubDate><guid>https://blog.remibergsma.com/2012/02/12/impressed-by-upcoming-cloudstack-3-0/</guid><description>&lt;p&gt;For about 6 weeks we’ve been working on finding out if -and how- it’d be possible to create our own cloud. My colleague &lt;a href="http://pommi.nethuis.nl/"&gt;Pim&lt;/a&gt; did a very good job on sorting out all the different software solutions (of course Open Source) and came up with &lt;a href="http://cloudstack.org"&gt;CloudStack&lt;/a&gt; as the one we’d definitely to test with. So we did!&lt;/p&gt;&#10;&lt;p&gt;We’ve tested both the current stable 2.2 release and the upcoming 3.0 release, which is currently in beta. It took us quite some time to get the right hardware to test with. At first we used Ubuntu as OS but that turned out to be the wrong choice – for now. Ubuntu just isn’t very well supported and CloudStack more or less wants you to use RHEL or one of its free alternatives, like CentOS. We wanted to use Ubuntu at first because we had a lot of Debian experience. Although Google was our friend in helping sorting out differences between Debian-style and RedHat-style (for example in the networking setup). Looking back, moving to CentOS was no problem at all. We even have Kickstart running to be able to do quick unattended installs for the compute nodes. Cool! By the way, this is about the OS on the Compute nodes and Management-server. VM’s can of course be of any kind. In our case they definitely will run Debian.&lt;/p&gt;</description></item><item><title>This is what I’ve learned @ “Build an Open Source Cloud Day”</title><link>https://blog.remibergsma.com/2012/02/04/this-is-what-ive-learned-at-build-an-open-source-cloud-day-in-antwerp/</link><pubDate>Sat, 04 Feb 2012 21:14:50 +0100</pubDate><guid>https://blog.remibergsma.com/2012/02/04/this-is-what-ive-learned-at-build-an-open-source-cloud-day-in-antwerp/</guid><description>&lt;figure class="wp-caption alignleft"&gt;&lt;a href="https://blog.remibergsma.com/wp-content/uploads/2012/02/train.jpg"&gt;&lt;img alt="Goint to Antwerp by train" class="wp-image-48" height="152" src="https://blog.remibergsma.com/wp-content/uploads/2012/02/train.jpg" title="Going to Antwerp by train" width="204"/&gt;&lt;/a&gt;&lt;figcaption class="wp-caption-text"&gt;Going to Antwerp by train&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;Thursday February 2nd me and colleague Pim went to Antwerp by train to attend “&lt;em&gt;&lt;a href="http://cloudstack.org/about-cloudstack/cloudstack-events/viewevent/42-build-an-open-source-cloud-day-antwerp-.html"&gt;Build an Open Source Cloud&lt;/a&gt;“&lt;/em&gt;-Day, hosted by &lt;a href="http://www.inuits.be"&gt;INUITS&lt;/a&gt; the following day.&lt;/p&gt;&#10;&lt;p&gt;The programme looked promising and I really looked forward to meeting &lt;a href="http://twitter.com/ke4qqq"&gt;David Nalley&lt;/a&gt; and &lt;a href="http://twitter.com/mrhinkle"&gt;Mark Hinkle&lt;/a&gt; from Citrix’ CloudStack. The last months we kept an eye on  &lt;a href="http://cloudstack.org"&gt;CloudStack&lt;/a&gt;: tested their current 2.2 release, and the 3.0 beta’s. Although we had CloudStack more or less up and running, there were still many questions to ask and many things to learn. This was a perfect opportunity for that.&lt;/p&gt;</description></item><item><title>Alt-key in OSX-Terminal</title><link>https://blog.remibergsma.com/2012/01/30/alt-key-aan-de-praat-in-osx-terminal/</link><pubDate>Mon, 30 Jan 2012 21:42:02 +0100</pubDate><guid>https://blog.remibergsma.com/2012/01/30/alt-key-aan-de-praat-in-osx-terminal/</guid><description>&lt;p&gt;By default, the Alt-key doesn’t work in Mac OSX-Terminal. Today I found a simple solution for this problem:&lt;/p&gt;&#10;&lt;p&gt;Terminal &amp;gt; Preferences &amp;gt; Settings &amp;gt; Keyboard&lt;br/&gt;&#10;Just check ‘Use option as meta key’ at the bottom and you’re good to go 🙂&lt;/p&gt;</description></item><item><title>Voorbereiding op zonnepanelen: 40% besparing op stroom door Wattcher en energiemeter</title><link>https://blog.remibergsma.com/2011/12/02/voorbereiding-op-zonnepanelen-40-besparing-op-stroom-door-wattcher-en-energiemeter/</link><pubDate>Fri, 02 Dec 2011 20:22:27 +0100</pubDate><guid>https://blog.remibergsma.com/2011/12/02/voorbereiding-op-zonnepanelen-40-besparing-op-stroom-door-wattcher-en-energiemeter/</guid><description>&lt;p&gt;In augustus 2011 was het stroomverbruik van ons gezin (2 volwassenen en een zoon van bijna 1) 297kWh. Al enige tijd was ik de standen aan het bijhouden en zo’n 300kWh per maand vond ik simpelweg teveel. Twee dingen hebben geholpen om dit verbruik in 3 maanden tijd terug te brengen naar zo’n 180kWh: een besparing van 40%!&lt;/p&gt;&#10;&lt;p&gt;Dit is hoe we dat gedaan hebben:&lt;br/&gt;&#10;&lt;strong&gt;1. Inzicht krijgen in hoeveel “sluipverbruik” er is&lt;/strong&gt;&lt;br/&gt;&#10;Hiervoor hebben we een &lt;a href="http://shop.wattcher.nl"&gt;Wattcher&lt;/a&gt; aangeschaft: dit apparaat geeft op 10 watt nauwkeurig aan hoeveel stroom er op een bepaald moment gebruikt wordt. Dus wordt er ‘s avonds als je op het punt staat naar bed te gaan nog 400 watt gebruikt dan weet je dat als je 7 uur slaapt je ‘s ochtends 7×400 = 2,8kWh verder bent. En dan heb je alleen geslapen 😉&lt;/p&gt;</description></item><item><title>Collectd met Collectd Graph Panel: mooi en overzichtelijke performance statistieken</title><link>https://blog.remibergsma.com/2011/11/29/collectd-met-collectd-graph-panel-mooi-en-overzichtelijke-performance-statistieken-2/</link><pubDate>Tue, 29 Nov 2011 15:08:41 +0100</pubDate><guid>https://blog.remibergsma.com/2011/11/29/collectd-met-collectd-graph-panel-mooi-en-overzichtelijke-performance-statistieken-2/</guid><description>&lt;p&gt;Het leuke van publiceren waar je mee bezig bent is dat je feedback krijgt. Dat gebeurde ook met mijn &lt;a href="https://blog.remibergsma.com/2011/11/28/dstat-statistieken-en-grafieken-van-performance-van-linux-systemen/"&gt;korte stukje over Dstat&lt;/a&gt; gisteren. Reacties van een oud collega en collega beheerder hier uit Leiden. Leuk!&lt;/p&gt;&#10;&lt;p&gt;Pim tipte me &lt;a href="http://collectd.org/"&gt;Collectd&lt;/a&gt;: een daemon die allerlei statistieken verzamelt over een systeem en dit opslaat in &lt;a href="http://oss.oetiker.ch/rrdtool/"&gt;RRD files&lt;/a&gt;. Helemaal leuk werd het toen hij erbij vertelde dat hij er zelf een front-end bij gemaakt heeft: &lt;a href="http://pommi.nethuis.nl/category/cgp"&gt;Collectd Graph Panel&lt;/a&gt; (OpenSource). Gaaf!&lt;/p&gt;</description></item><item><title>About Remi Bergsma</title><link>https://blog.remibergsma.com/about/</link><pubDate>Mon, 28 Nov 2011 10:08:28 +0000</pubDate><guid>https://blog.remibergsma.com/about/</guid><description>&lt;p&gt;&lt;img alt="remi" class="size-thumbnail wp-image-2069 alignleft" height="150" src="https://blog.remibergsma.com/wp-content/uploads/2014/01/remi.jpg" width="150"/&gt;I’m a Linux Engineer since 1997 with expertise in building and managing infrastructure (based on Open Source software) and Linux environments. I’ve broad experience in Debian, CentOS, Red Hat and SUSE Linux distributions and are certified for most of them as well (RHCE/CLE/LPIC-3).&lt;/p&gt;&#10;&lt;p&gt;My goal is to automate what can be automated, so that everything works rock solid and I have the time to explore new techniques and tools (that might result in even better automation).&lt;/p&gt;</description></item></channel></rss>