<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title/><link>https://serverbooter.com/</link><description>Recent content on</description><generator>Hugo</generator><language>en-us</language><managingEditor>raravena80@gmail.com (Ricardo Aravena)</managingEditor><webMaster>raravena80@gmail.com (Ricardo Aravena)</webMaster><lastBuildDate>Wed, 04 Mar 2026 23:58:30 +0000</lastBuildDate><atom:link href="https://serverbooter.com/index.xml" rel="self" type="application/rss+xml"/><item><title>From Ideas to Impact: Cloud Native AI and TOC Highlights Post-KubeCon EU 2025</title><link>https://serverbooter.com/post/cncf-cloud-native-ai-and-toc-highlights-post-kubecon-eu-2-25/</link><pubDate>Sat, 19 Apr 2025 14:17:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/cncf-cloud-native-ai-and-toc-highlights-post-kubecon-eu-2-25/</guid><description>&lt;h2 id="from-ideas-to-impact-cloud-native-ai-and-toc-highlights-post-kubecon-eu-2025"&gt;&lt;strong&gt;From Ideas to Impact: Cloud Native AI and TOC Highlights Post-KubeCon EU 2025&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;When &lt;a href="https://www.serverbooter.com/post/cncf-cloud-native-ai-working-group-innovation-from-edge-to-core/"&gt;we previewed&lt;/a&gt; the CNCF Cloud Native AI Working Group&amp;rsquo;s efforts ahead of KubeCon EU 2025, the tone was of curiosity and anticipation. Some still viewed AI as an outlier in the cloud-native world. But if KubeCon EU proved anything, AI has now fully arrived—and the community is building it &lt;em&gt;in a cloud native way&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This year&amp;rsquo;s event didn&amp;rsquo;t just validate the momentum around AI; it showcased a CNCF community that&amp;rsquo;s actively rethinking its foundations—from how Technical Advisory Groups (TAGs) work to how the community serves end users to how projects grow and graduate. The CNCF Technical Oversight Committee (TOC) had a visible and influential role throughout the week, laying down a clear marker: the next wave of cloud native isn&amp;rsquo;t just about orchestration—it&amp;rsquo;s about intelligence, usability, and sustainable growth.&lt;/p&gt;</description></item><item><title>CNCF Cloud Native AI Working Group: Innovation from Edge to Core!</title><link>https://serverbooter.com/post/cncf-cloud-native-ai-working-group-innovation-from-edge-to-core/</link><pubDate>Thu, 27 Mar 2025 14:17:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/cncf-cloud-native-ai-working-group-innovation-from-edge-to-core/</guid><description>&lt;p&gt;Over the past six months, the Cloud Native Computing Foundation&amp;rsquo;s (CNCF) &lt;a href="https://docs.google.com/document/d/1tS6gL5qjGLaHDtAChssqJhBVm8BIpopUA3Ddzm9LHwg/edit?tab=t.0#heading=h.tprh9feizr4r"&gt;Cloud Native AI (CNAI) Working Group&lt;/a&gt; has been at the forefront of integrating artificial intelligence (AI) and machine learning (ML) with cloud-native technologies. This is a moment to discuss the working group&amp;rsquo;s initiatives and opportunities for contributors and enthusiasts as we prepare for KubeCon Europe 2025 in London.&lt;/p&gt;
&lt;p&gt;The group has been making strides in galvanizing the community around the needs of AI/ML workloads on top of cloud native environments. A significant deliverable was the publication of the &amp;ldquo;Cloud Native AI&amp;rdquo; whitepaper in March 2024.&lt;/p&gt;</description></item><item><title>Consulting</title><link>https://serverbooter.com/page/consulting/</link><pubDate>Tue, 04 Mar 2025 00:00:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/page/consulting/</guid><description>&lt;h1 id="consulting-services"&gt;Consulting Services&lt;/h1&gt;
&lt;p&gt;I offer specialized consulting services for organizations looking to build, optimize, and scale their GPU infrastructure on Kubernetes. With my experience as Engineering Lead at Snowflake, Cloud Native Lead at Truera, and Senior Engineering Kubernetes Manager at Rakuten, I bring deep technical expertise and practical insights to help you succeed.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="services"&gt;Services&lt;/h2&gt;
&lt;h3 id="gpu-infrastructure-design--architecture"&gt;GPU Infrastructure Design &amp;amp; Architecture&lt;/h3&gt;
&lt;p&gt;Design a robust GPU infrastructure strategy tailored to your AI/ML workloads:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Multi-GPU Kubernetes Architecture&lt;/strong&gt;: Design scalable K8s clusters with GPU pooling and scheduling&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIG (Multi-Instance GPU) Strategy&lt;/strong&gt;: Optimize GPU utilization with NVIDIA MIG technology&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hybrid Cloud GPU Deployments&lt;/strong&gt;: Architect GPU solutions across on-premises, GCP, AWS, and Microsoft Azure&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure GPU Expertise&lt;/strong&gt;: AKS GPU support, Azure Machine Learning, and Azure Batch AI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vendor-Agnostic GPU Support&lt;/strong&gt;: Design for NVIDIA, AMD, and ARM GPU compatibility&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="kubernetes-for-aiml-workloads"&gt;Kubernetes for AI/ML Workloads&lt;/h3&gt;
&lt;p&gt;Optimize your Kubernetes platform for machine learning and AI workloads:&lt;/p&gt;</description></item><item><title>Fun Times at The Kubernetes Forum Seoul and Sydney 2019</title><link>https://serverbooter.com/post/kubernetes-forum-seoul-sydney/</link><pubDate>Wed, 18 Dec 2019 14:17:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/kubernetes-forum-seoul-sydney/</guid><description>&lt;p&gt;Hello everyone! I&amp;rsquo;m excited to write this post about my experience at the Kubernetes Forum Seoul and Sydney 2019. My journey started in San Francisco on Friday evening, December 6th, 2019, on a flight to Seoul.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/7659560/71111562-8f2e6600-217e-11ea-82b8-b5b0bad78d14.jpg" alt="SFO-ICN"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/7659560/71111890-3b704c80-217f-11ea-89b3-2214675f29c3.jpg" alt="SFO-ICN-Map"&gt;&lt;/p&gt;
&lt;p&gt;I arrived in Seoul on Sunday, December 8th, in the morning and had plenty of time during the day to rest in the hotel at the venue, &lt;a href="https://www.seouldragoncity.com/"&gt;The Seoul Dragon City&lt;/a&gt;. As speakers, we were invited along with the organizers and community leaders to an event dinner in the &lt;a href="https://sdc-club.com/en/convention/room-goguryeo.php"&gt;Goguryeo room&lt;/a&gt;. During that time, we had a great start networking with fellow industry leaders with an opportunity to connect. In my opinion, the number of people was just right to talk to most of the guests at dinner.&lt;/p&gt;</description></item><item><title>Speaking</title><link>https://serverbooter.com/page/speaking/</link><pubDate>Sat, 30 Nov 2019 14:17:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/page/speaking/</guid><description>&lt;h1 id="speaking-engagements"&gt;Speaking Engagements&lt;/h1&gt;
&lt;p&gt;A curated collection of talks and presentations I&amp;rsquo;ve given from 2018-2026, covering cloud-native technologies, container runtimes, security, and AI infrastructure.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="upcoming-talks"&gt;Upcoming Talks&lt;/h2&gt;
&lt;h3 id="observing-chaos-real-time-monitoring-of-ai-driven-kubernetes-destruction"&gt;&lt;strong&gt;Observing Chaos: Real-Time Monitoring of AI-Driven Kubernetes Destruction&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;📅 &lt;em&gt;KubeCon + CloudNativeCon EU 2026&lt;/em&gt; | Amsterdam, Netherlands
🎤 &lt;em&gt;with Josh Halley, Cisco&lt;/em&gt;
🔗 &lt;a href="https://sched.co/2CW1T"&gt;Event Details&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2025"&gt;2025&lt;/h2&gt;
&lt;h3 id="in-ai-we-trust-securing-the-future-one-agent-at-a-time"&gt;&lt;strong&gt;In AI We Trust? Securing the Future, One Agent at a Time&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;📅 &lt;em&gt;KubeCon + CloudNativeCon NA 2025&lt;/em&gt; | Atlanta, Georgia
🎤 &lt;em&gt;Panel Discussion&lt;/em&gt;
🎥 &lt;a href="https://youtu.be/AWajuymQH-A"&gt;Video&lt;/a&gt; | 🔗 &lt;a href="https://sched.co/27FWu"&gt;Event Details&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Speaking</title><link>https://serverbooter.com/post/speaking/</link><pubDate>Sat, 30 Nov 2019 14:17:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/speaking/</guid><description>&lt;p&gt;&lt;a href="https://serverbooter.com/page/speaking/"&gt;This page has been moved&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Running Scylla in Kata Containers</title><link>https://serverbooter.com/post/scylla-in-kata-containers/</link><pubDate>Mon, 16 Apr 2018 14:17:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/scylla-in-kata-containers/</guid><description>&lt;p&gt;The Kata community has been busy getting the first release out the door.&lt;/p&gt;
&lt;p&gt;Virtual Machines have been around in the industry for over 20 years. One of the most attractive features of Kata is that it runs containers in VMs and VMs are very stable and provide very good isolation of your compute resources hardware. Furthermore, virtualization systems like KVM, Xen and VMware provide multiple ways to attach to dedicated storage. VMware takes this step even further by providing things like Storage VMotion.&lt;/p&gt;</description></item><item><title>The Boom of Container Runtimes</title><link>https://serverbooter.com/post/container-runtimes-cncf/</link><pubDate>Sun, 04 Mar 2018 14:17:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/container-runtimes-cncf/</guid><description>&lt;p&gt;It has been about 4 years since Docker exploded into the scene of Cloud Infrastructure.
With that came a shift in cloud applications from monolithic to microservices. Containers
made it easy for developers to deploy directly to production mostly caring about the scope of
her/his microservice.&lt;/p&gt;
&lt;p&gt;Enter container orchestration tools such as Kubernetes, Mesos, AWS ECS, GKE, Azure Container Service which
allow cloud operations to manage containers at scale. Setup these tools with a redundant masters as
quorum systems (k8s, mesos) and add hundreds of nodes or slaves and automatically scale your
containers up and down depending on demand.&lt;/p&gt;</description></item><item><title>Working At Branch</title><link>https://serverbooter.com/post/working-at-branch/</link><pubDate>Wed, 04 Oct 2017 14:17:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/working-at-branch/</guid><description>&lt;p&gt;It has been about 4 months since I started working at &lt;a href="https://branch.io"&gt;Branch&lt;/a&gt; and wanted
to reflect on what it&amp;rsquo;s been like.&lt;/p&gt;
&lt;p&gt;I can truly say that I&amp;rsquo;m enjoying everything about it. The environment is
fantastic, my co-workers are awesome, and we all come from various backgrounds.&lt;/p&gt;
&lt;p&gt;I like the fact that the company takes their values seriously and the founding team is
focused on making working at Branch the best experience you&amp;rsquo;ve ever had
in your career. There&amp;rsquo;s also a very strong focus on diversity as the
founding team puts it: The more diverse we are, the better we will
be positioned in the long run. Being more diverse allow us to bring in
different points of view and experiences that in the end help us
progress more efficiently. I can&amp;rsquo;t say that there are many places like that.&lt;/p&gt;</description></item><item><title>Kubernetes on GCP</title><link>https://serverbooter.com/post/kubernetes-on-gcp/</link><pubDate>Sat, 13 May 2017 16:28:29 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/kubernetes-on-gcp/</guid><description>&lt;p&gt;Kubernetes has come a long way over the last 2 years and I was so excited to learn about during &lt;a href="https://serverbooter.com/post/cloudnativecon-kubecon-europe/"&gt;CloudNativeCon/Kubecon Berlin&lt;/a&gt; this year.&lt;/p&gt;
&lt;p&gt;As of Today &lt;a href="https://github.com/kubernetes/kops"&gt;Kops&lt;/a&gt; the standard tool for installing Kubernetes on AWS doesn&amp;rsquo;t support GCP yet (it&amp;rsquo;s in the works). However you can still setup your cluster using good old &lt;a href="https://github.com/kubernetes/kubernetes/blob/master/cluster/kube-up.sh"&gt;kube-up.sh&lt;/a&gt;. There&amp;rsquo;s also a pretty good explanation on the &lt;a href="https://kubernetes.io/docs/getting-started-guides/gce/"&gt;k8s docs&lt;/a&gt;. Make sure you install the &lt;a href="https://cloud.google.com/sdk/"&gt;Google Cloud SDK&lt;/a&gt; with gcloud and all their utils.&lt;/p&gt;</description></item><item><title>DC/OS on GCP</title><link>https://serverbooter.com/post/dcos-on-gcp/</link><pubDate>Thu, 11 May 2017 16:28:29 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/dcos-on-gcp/</guid><description>&lt;p&gt;DC/OS is the commercialized &lt;a href="http://mesos.apache.org/"&gt;Mesos&lt;/a&gt; distribution + extras maintained by Mesosphere. I found it very straight forward to setup in GCP with the out of the box &lt;a href="https://github.com/raravena80/dcos-gce"&gt;Ansible scripts&lt;/a&gt; provided by Mesosphere.&lt;/p&gt;
&lt;p&gt;For starters I followed everything described in the &lt;a href="https://github.com/raravena80/dcos-gce/blob/master/README.md"&gt;README&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Then, I had to modify the &lt;code&gt;group_vars/all&lt;/code&gt; file in the playbook&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;---
project: &amp;lt;my-gcp-project-id&amp;gt;
subnet: default
login_name: &amp;lt;my-gcp-login-id-with-no-email&amp;gt;
bootstrap_public_ip: 10.128.0.10 # This IP need to match the network in the zone
zone: us-central1-c

master_boot_disk_size: 200 # 200 is the recommended in GCP as of 05-2017
master_machine_type: n1-standard-1
master_boot_disk_type: pd-standard

agent_boot_disk_size: 200
agent_machine_type: n1-standard-1
agent_boot_disk_type: pd-standard
agent_instance_type: &amp;#34;MIGRATE&amp;#34;
agent_type: private
start_id: 0001
end_id: 0001

gcloudbin: gcloud
image: &amp;#39;centos-7-v20161027&amp;#39;
image_project: &amp;#39;centos-cloud&amp;#39;
bootstrap_public_port: 8080
cluster_name: cluster_name
scopes: &amp;#34;default=https://www.googleapis.com/auth/cloud-platform&amp;#34;
dcos_installer_filename: dcos_generate_config.sh
dcos_installer_download_path: &amp;#34;https://downloads.dcos.io/dcos/stable/{{ dcos_installer_filename }}&amp;#34;
home_directory: &amp;#34;/home/{{ login_name }}&amp;#34;
downloads_from_bootstrap: 2
dcos_bootstrap_container: dcosinstaller
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then to create the master I ran:&lt;/p&gt;</description></item><item><title>Parsing Deeply Nested JSON in Go</title><link>https://serverbooter.com/post/parsing-nested-json-in-go/</link><pubDate>Fri, 28 Apr 2017 16:28:29 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/parsing-nested-json-in-go/</guid><description>&lt;p&gt;Parsing deeply nested json in Go is a bit challenging due to the fact that the language doesn&amp;rsquo;t provide many helpers to do so. If you do that in Ruby or Python it&amp;rsquo;s pretty straight forward running some like this in Python &lt;code&gt;j = json.load(jsonstring)&lt;/code&gt; or in Ruby &lt;code&gt;j = JSON.load(jsonstring)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In go generally you have to prefine your structs and run through an &lt;code&gt;Unmarshal&lt;/code&gt; function which means that most of the times you need to know ahead of time what the nest level and structure of your target json is to parse it. For example:&lt;/p&gt;</description></item><item><title>CloudNativeCon KubeCon Europe</title><link>https://serverbooter.com/post/cloudnativecon-kubecon-europe/</link><pubDate>Tue, 25 Apr 2017 16:28:29 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/cloudnativecon-kubecon-europe/</guid><description>&lt;p&gt;This same blog entry is &lt;a href="https://www.cncf.io/blog/2017/04/18/diversity-scholarship-series-berlin-eyes-cloud-infrastructure-fanatic/"&gt;here&lt;/a&gt;. Thanks to the cncf folks who helped me put this together.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I’ve attended many conferences before, but I was happy to get the diversity scholarship to attend CloudNativeCon + KubeCon Europe 2017 in Berlin as there is always so much more to learn. It was my first time attending an event organized by the Linux Foundation, and I hope to attend more in the future.
I loved all the insights and advances that I obtained through all of the highlighted Cloud Native projects including Kubernetes, gRPC, OpenTracing, Prometheus, Linkerd, Fluentd and OpenDNS from the variety of industry leaders. The keynotes were quite memorable as well, including the Kubernetes 1.6 updates by Aparna Sinha (Google), Federation from Kelsey Hightower (Google), Kubernetes Security Updates from Clayton Coleman (Red Hat), Helm from Michelle Noorali (Deis), Scaling Kubernetes from Joe Beda (Heptio) and Quay from Brandon Phillips (CoreOS).&lt;/p&gt;</description></item><item><title>About Me</title><link>https://serverbooter.com/page/about/</link><pubDate>Tue, 25 Apr 2017 16:24:50 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/page/about/</guid><description>&lt;p&gt;Ricardo is a Cloud Native AI Lead. He&amp;rsquo;s an open-source enthusiast, currently serving on the CNCF TOC and as Lead for the CNCF Cloud Native AI Initiatives. He has also co-chaired the CNCF TAG-Runtime. Recently, he led the publication of the Cloud Native AI Whitepaper and is currently leading various initiatives within the Cloud Native AI Working Group.&lt;/p&gt;
&lt;p&gt;He has worked in tech and software engineering roles for over 25 years. He comes from a diverse professional background, having held various roles at large companies such as Rakuten, Cisco, and VMware, as well as at startups like Truera, Branch Metrics, and Coupa.&lt;/p&gt;</description></item><item><title>LXC Playing</title><link>https://serverbooter.com/post/lxc-playing/</link><pubDate>Sat, 29 Oct 2016 16:28:29 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/lxc-playing/</guid><description>&lt;p&gt;Over the last couple of years Docker has seen incredible growth across the tech industry. Its use ties together with deployment of Microservices in most Cloud based companies. Docker is easy to use and its in constant development.
In the last month I decided to venture and try something different that has been around even before Docker but in a more primitive form. You see containers have been around before Docker for a long time and even before that with the introduction of chroot in 1979. Containers were first introduced in Solaris in 2005 with the introduction of Solaris Containers, described as &amp;lsquo;chroot&amp;rsquo; on steroids. Then later in 2008 with adoption of the Containers name by LXC. (what Docker was based on initially) and also the inclusion of user namespaces in the Linux Kernel 3.8.&lt;/p&gt;</description></item><item><title>Docker First Impressions</title><link>https://serverbooter.com/post/docker-first-impressions/</link><pubDate>Fri, 07 Mar 2014 16:28:29 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/docker-first-impressions/</guid><description>&lt;p&gt;For the last few days I&amp;rsquo;ve been taking at crack at using the recent &lt;a href="https://www.docker.io/"&gt;Docker&lt;/a&gt; container deployment tool that I&amp;rsquo;ve been
hearing a lot buzz about.
In essence, it&amp;rsquo;s a wrapper on top of Linux &lt;a href="https://linuxcontainers.org/"&gt;LXC containers&lt;/a&gt;, writen in the new friendly and not so popular yet &lt;a href="http://golang.org/"&gt;Go&lt;/a&gt; language developed at Google.&lt;/p&gt;
&lt;p&gt;Just a little bit of background, for those of you not familiar with LXC containers,
they are pretty much defined as &lt;code&gt;chroot&lt;/code&gt; on steroids. Basically, you can run isolated virtual
environments in a single Linux machine and make it look like that they are different machines.
These environments give you the advantage of being isalated and at the same they are able to use
the same Linux exectutables and memory space to improve speed and footprint size.&lt;/p&gt;</description></item><item><title>Ansible Playbook for PaperTrail on Ubuntu</title><link>https://serverbooter.com/post/ansible-playbook-for-papertrail-on-ubuntu/</link><pubDate>Tue, 29 Oct 2013 11:54:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/ansible-playbook-for-papertrail-on-ubuntu/</guid><description>&lt;p&gt;This posts describes how to create a simple
&lt;a href="http://www.ansible.com"&gt;Ansible&lt;/a&gt; task
on how to setup &lt;a href="https://www.papertrailapp.com"&gt;PaperTrail&lt;/a&gt; on Ubuntu.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a follow up to a previous
&lt;a href="https://serverbooter.com/post/how-to-create-an-ansible-playbook-to-configure-haproxy/"&gt;blog&lt;/a&gt;
describing an Ansible Playbook to setup an HAProxy system. This Ansible &lt;code&gt;task&lt;/code&gt; can
be included in the HAProxy playbook as well as any other playbooks with something
like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;PLAYBOOK&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install papertrail on Ubuntu&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;scout&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hosts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;all&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;&amp;lt;user-with-sudo&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sudo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;include&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;tasks/papertrail.yml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next, we define the &lt;code&gt;task&lt;/code&gt; that includes installing the dependencies
rsyslog and libssl-dev. Also we copy a specific rsyslog configuration
for papertrail.&lt;/p&gt;</description></item><item><title>Simple Clouformation With Multiple AWS Accounts</title><link>https://serverbooter.com/post/simple-clouformation-with-multiple-aws-accounts/</link><pubDate>Thu, 24 Oct 2013 16:28:29 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/simple-clouformation-with-multiple-aws-accounts/</guid><description>&lt;p&gt;In this post I&amp;rsquo;ll describe how to create a simple AWS CloudFormation template
so that we can deploy stack using multiple AWS accounts. In other words a common
JSON CloudFormation template that can be use to bring
up a stack in multiple accounts. The way we are able to do this is by
having exact copies of the &lt;a href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html"&gt;EC2 AMIs&lt;/a&gt;
on all the accounts and regions where we are deploying our stack.&lt;/p&gt;</description></item><item><title>Ansible Playbook for Scout on Ubuntu</title><link>https://serverbooter.com/post/ansible-playbook-for-scout-on-ubuntu/</link><pubDate>Tue, 22 Oct 2013 00:00:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/ansible-playbook-for-scout-on-ubuntu/</guid><description>&lt;p&gt;This is a sample Ansible task (&lt;a href="http://www.ansibleworks.com"&gt;http://www.ansibleworks.com&lt;/a&gt;)
on how to setup Scout (&lt;a href="https://www.scoutapp.com"&gt;https://www.scoutapp.com&lt;/a&gt;) on Ubuntu.
It needs to be included in an ansible playbook.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a follow up to a previous
[blog]({% post_url 2013-10-21-how-to-create-an-ansible-playbook-to-configure-haproxy %})
describing an Ansible Playbook to setup an HAProxy system. This Ansible task can
be included in the HAProxy playbook as well as any other playbooks with something
like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;PLAYBOOK&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install scout on Ubuntu&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;scout&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hosts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;all&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;user-with-sudo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sudo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;vars&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;scout_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;YourScoutAPIKeyFromTheirWebsite&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;include&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;tasks/scout.yml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We start by defining a &amp;ldquo;task&amp;rdquo; file:&lt;/p&gt;</description></item><item><title>Upgrade Linux Kernel on Chromebook</title><link>https://serverbooter.com/post/upgrade-linux-kernel-on-chromebook/</link><pubDate>Mon, 21 Oct 2013 22:15:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/upgrade-linux-kernel-on-chromebook/</guid><description>&lt;p&gt;So after installing ChrUbuntu on my Acer C7 Chromebook,
I&amp;rsquo;m very pleased that with the help of this
&lt;!-- raw HTML omitted --&gt;blog&lt;!-- raw HTML omitted --&gt;
I was able to upgrade the Linux Kernel to 3.8.11&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;raravena@chromebook:~/git/blog-src$ uname -a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Linux chromebook 3.8.11 &lt;span class="c1"&gt;#3 SMP Thu Oct 17 07:41:20 PDT 2013 x86_64 x86_64 x86_64 GNU/Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;These are the modified steps:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; -x
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Grab verified boot utilities from ChromeOS.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /usr/share/vboot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o ro /dev/sda3 /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /mnt/usr/bin/vbutil_* /usr/bin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /usr/bin/old_bins
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /mnt/usr/bin/old_bins/vbutil_* /usr/bin/old_bins/.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /mnt/usr/bin/dump_kernel_config /usr/bin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rsync -avz /mnt/usr/share/vboot/ /usr/share/vboot/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;umount /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# On the Acer C7, ChromeOS is 32-bit, so the verified boot binaries need a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# few 32-bit shared libraries to run under ChrUbuntu, which is 64-bit.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt-get install libc6:i386 libssl1.0.0:i386
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Fetch ChromeOS kernel sources from the Git repo.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt-get install git-core
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /usr/src
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://git.chromium.org/git/chromiumos/third_party/kernel-next.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; kernel-next
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git checkout origin/chromeos-3.8
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Configure the kernel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# First we patch ``base.config`` to set ``CONFIG_SECURITY_CHROMIUMOS``&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# to ``n`` ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp ./chromeos/config/base.config ./chromeos/config/base.config.orig
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -e &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;s/CONFIG_SECURITY_CHROMIUMOS=y/CONFIG_SECURITY_CHROMIUMOS=n/&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ./chromeos/config/base.config.orig &amp;gt; ./chromeos/config/base.config
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./chromeos/scripts/prepareconfig chromeos-intel-pineview
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ... and then we proceed as per Olaf&amp;#39;s instructions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yes &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; make oldconfig
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Build the Ubuntu kernel packages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt-get install kernel-package
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;make-kpkg kernel_image kernel_headers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Backup current kernel and kernel modules&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;tstamp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;date +%Y-%m-%d-%H%M&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dd &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/sda6 &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/kernel-backup-&lt;span class="nv"&gt;$tstamp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp -Rp /lib/modules/3.4.0 /lib/modules/3.4.0-backup-&lt;span class="nv"&gt;$tstamp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Install kernel image and modules from the Ubuntu kernel packages we&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# just created.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dpkg -i /usr/src/linux-*.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Extract old kernel config&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vbutil_kernel --verify /dev/sda6 --verbose &lt;span class="p"&gt;|&lt;/span&gt; tail -1 &amp;gt; /config-&lt;span class="nv"&gt;$tstamp&lt;/span&gt;-orig.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add ``disablevmx=off`` to the command line, so that VMX is enabled (for VirtualBox &amp;amp; Co)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -e &lt;span class="s1"&gt;&amp;#39;s/$/ disablevmx=off/&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /config-&lt;span class="nv"&gt;$tstamp&lt;/span&gt;-orig.txt &amp;gt; /config-&lt;span class="nv"&gt;$tstamp&lt;/span&gt;.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Wrap the new kernel with the verified block and with the new config.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vbutil_kernel --pack /newkernel &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --keyblock /usr/share/vboot/devkeys/kernel.keyblock &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --version &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --config&lt;span class="o"&gt;=&lt;/span&gt;/config-&lt;span class="nv"&gt;$tstamp&lt;/span&gt;.txt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --vmlinuz /boot/vmlinuz-3.8.11 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --arch x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Make sure the new kernel verifies OK.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vbutil_kernel --verify /newkernel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Copy the new kernel to the KERN-C partition.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dd &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/newkernel &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/sda6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I ran into an error while compiling the kernel, but gladly was able to fix it&lt;/p&gt;</description></item><item><title>How To Create an Ansible Playbook to Configure HAProxy</title><link>https://serverbooter.com/post/how-to-create-an-ansible-playbook-to-configure-haproxy/</link><pubDate>Mon, 21 Oct 2013 00:00:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/how-to-create-an-ansible-playbook-to-configure-haproxy/</guid><description>&lt;p&gt;This is the continuation for &lt;a href="https://serverbooter.com/post/setup-a-simple-haproxy-config/"&gt;Setup a simple HAproxy config&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It explains how to create an Ansible playbook to automate the haproxy
configuration.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d like to find out more about Ansible you can read up on it on
their website: &lt;a href="http://www.ansible.com"&gt;http://www.ansible.com&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Set up and configure an HaProxy server (Ubuntu flavor)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;haproxy&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hosts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;all&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;userwithsudoaccess&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sudo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;haproxy&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;vars_files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;vars/main.yml&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# haproxy package for Ubuntu&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;include&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;tasks/haproxy-apt.yml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Specific haproxy tasks follow here&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Copy haproxy logrotate file&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; copy src=files/haproxy.logrotate dest=/etc/logrotate.d/haproxy
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; mode=0644 owner=root group=root&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Create haproxy rsyslog configuration&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; copy src=files/haproxy-rsyslog.conf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; dest=/etc/rsyslog.d/49-haproxy.conf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; mode=0644 owner=root group=root&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;notify&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;restart rsyslog&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Configure system rsyslog&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; copy src=files/rsyslog.conf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; dest=/etc/rsyslog.conf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; mode=0644 owner=root group=root&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;notify&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;restart rsyslog&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Create haproxy configuration file&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; template src=templates/haproxy.cfg.j2 dest=/etc/haproxy/haproxy.cfg
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; mode=0644 owner=root group=root&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;notify&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;restart haproxy&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The following file that contains the variables needed for the haproxy playbook
it should located under vars (vars/main.yml)&lt;/p&gt;</description></item><item><title>Setup a Simple HAProxy Config</title><link>https://serverbooter.com/post/setup-a-simple-haproxy-config/</link><pubDate>Mon, 21 Oct 2013 00:00:00 +0000</pubDate><author>raravena80@gmail.com (Ricardo Aravena)</author><guid>https://serverbooter.com/post/setup-a-simple-haproxy-config/</guid><description>&lt;p&gt;Here&amp;rsquo;s simple haproxy configuration to get you started,
you probably want to stick this under /etc/haproxy/haproxy.cfg&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-plain" data-lang="plain"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;global
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	log 127.0.0.1	local0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	log 127.0.0.1	local1 notice
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	maxconn 4096
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	user haproxy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	group haproxy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	daemon
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;defaults
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	log	global
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	mode	http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	option	httplog
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	option	dontlognull
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	retries	3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	option redispatch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	maxconn	4096
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	contimeout	5000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	clitimeout	50000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	srvtimeout	50000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	stats enable
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	stats auth		admin:password
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	stats uri		/monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	stats refresh	5s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	option httpchk	GET /status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	retries		5
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	option redispatch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	errorfile	503	/etc/haproxy/errors/503.http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	errorfile	400	/etc/haproxy/errors/400.http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	errorfile	403	/etc/haproxy/errors/403.http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	errorfile	408	/etc/haproxy/errors/408.http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	errorfile	500	/etc/haproxy/errors/500.http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	errorfile	502	/etc/haproxy/errors/502.http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	errorfile	503	/etc/haproxy/errors/503.http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	errorfile	504	/etc/haproxy/errors/504.http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	balance roundrobin	# each server is used in turns, according to assigned weight
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;listen http-in
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bind :80
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; monitor-uri /haproxy # end point to monitor HAProxy status (returns 200)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # option httpclose
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; server server1 server1.mydomain.com:8080 weight 1 maxconn 2000 check inter 4000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; server server2 server2.mydomain.com:8080 weight 1 maxconn 2000 check inter 4000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; server server3 server3.mydomain.com:8080 weight 1 maxconn 2000 check inter 4000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rspidel ^Set-cookie:\ IP=	# do not let this cookie tell our internal IP address
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You also want to setup logging using rsyslog,
you can syslog-ng or other loggers too as well,
but the configuration is different.&lt;/p&gt;</description></item></channel></rss>