slowe

Author Archives: slowe

The Linux Migration: Creating Presentations

Long-time readers of my site know that I’m a fan of Markdown, and I use it extensively. (This blog, in fact, is written entirely in Markdown and converted to HTML using Jekyll on GitHub Pages.) Since migrating to Linux as my primary desktop OS, I’ve also made the transition to doing almost all my presentations in Markdown as well. Here are the details on how I’m using Markdown for creating presentations on Linux.

There are a number of tools involved in my workflow for creating Markdown-based presentations on Linux:

  • Sublime Text 3 (with the Markdown Extended and Monokai Extended packages) is used for editing the “source” files for a presentation. Three “source” files are involved: a Markdown file, a HTML file, and a Cascading Style Sheet (CSS) file.
  • Remarkjs takes the Markdown-formatted content and converts it into a dynamic HTML-based presentation, formatting it according to the styles defined in the CSS file. This gives tremendous flexibility in formatting the presentation. (Check it out on GitHub.)
  • I use a web browser to display the HTML output generated by Remarkjs (in my case, I’m using Firefox on my Fedora laptop).
  • To help with creating a PDF version of Continue reading

The Linux Migration: Other Users’ Stories, Part 2

This post is part of a series of posts sharing the stories of other users who have decided to migrate to Linux as their primary desktop OS. Each person’s migration (and their accompanying story) is unique; some people have embraced Linux only on their home computer; others are using it at work as well. I believe that sharing this information will help readers who may be considering a migration of their own, and who have questions about whether this is right for them and their particular needs.

For more information about other migrations, see part 1 or part 2 of the series.

This time around we’re sharing the story of Rynardt Spies.

Q: Why did you switch to Linux?

In short, I’ve always been at least a part-time Linux desktop user and a heavy RHEL server user. My main work machine is Windows. However, because of my work with AWS, Docker, etc., I find that being on a Linux machine with all the Linux tools at hand (especially OpenSSL and simple built-in tools like SSH) is invaluable when working in a Linux world. However, I’ve always used Linux Mint, or Ubuntu (basically Debian-derived distributions) for my desktop Continue reading

Technology Short Take #79

Welcome to Technology Short Take #79! There’s lots of interesting links for you this time around.

Networking

  • I was sure I had mentioned Skydive before, but apparently not (a grep of all my blog posts found nothing), so let me rectify that first. Skydive is (in the project’s own words) an “open source real-time network topology and protocols analyzer.” The project’s GitHub repository is here, and documentation for Skydive is here.
  • OK, now that I’ve mentioned Skydive, I can talk about this article that provides an example of functional SDN testing with Terraform and Skydive. Terraform is used to turn up OpenStack infrastructure, and Skydive (via connections into Neutron and OpenContrail, in this example) is used to validate SDN functionality.
  • Tony Sangha took PowerNSX (a set of PowerShell cmdlets for interacting with NSX) and created a tool to help document the NSX Distributed Firewall configuration. This tool exports the DFW configuration and then converts it into Excel format, and is available on GitHub. (What’s that? You haven’t heard of PowerNSX before? See here.)

Servers/Hardware

Nothing this time around. Should I keep this section, or ditch it? Feel free to give me your feedback on Twitter.

Security

Customizing Docker Engine on CentOS Atomic Host

I’ve been spending some time recently with CentOS Atomic Host, the container-optimized version of CentOS (part of Project Atomic). By default, the Docker Engine on CentOS Atomic Host listens only to a local UNIX socket, and is not accessible over the network. While CentOS has its own particular way of configuring the Docker Engine, I wanted to see if I could—in a very “systemd-like” fashion—make Docker Engine on CentOS listen on a network socket as well as a local UNIX socket. So, I set out with an instance of CentOS Atomic Host and the Docker systemd docs to see what I could do.

The default configuration of Docker Engine on CentOS Atomic Host uses a systemd unit file that references an external environment file; specifically, it references values set in /etc/sysconfig/docker, as you can see from this snippet of the docker.service unit file:

ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY

The $OPTIONS variable, along with the other variables at the end of the ExecStart line, are defined in /etc/sysconfig/docker. That value, by default, looks like this:

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'

I Continue reading

The Linux Migration: Other Users’ Stories, Part 1

Shortly after I announced my intention to migrate to Linux as my primary desktop OS, a number of other folks contacted me and said they had made the same choice or they had been encouraged by my decision to also try it themselves. It seems that there is a fair amount of pent-up interest—at least in the IT community—to embrace Linux as a primary desktop OS. Given the level of interest, I thought it might be helpful for readers to hear from others who are also switching to Linux as their primary desktop OS, and so this post kicks off a series of posts where I’ll share other users’ stories about their Linux migration.

In this first post of the series, you’ll get a chance to hear from Roddy Strachan. I’ve structured the information in a “question-and-answer” format to make it a bit easier to follow.

Q: Why did you switch to Linux?

I was a heavy Windows user due to corporate requirements. It was just easy to run Windows. I never ran the standard corporate build, but instead ran my own managed version of Windows 10; this worked well. I switched because I wanted to experiment with Linux Continue reading

Adding Metadata to the Arista vEOS Vagrant Box

This post addresses a (mostly) cosmetic issue with the current way that Arista distributes its Vagrant box for vEOS. I say “mostly cosmetic” because while the Vagrant box for vEOS is perfectly functional if you use it via Arista’s instructions, adding metadata as I explain here provides a small bit of additional flexibility should you need multiple versions of the vEOS box on your system.

If you follow Arista’s instructions, then you’ll end up with something like this when you run vagrant box list:

arista-veos-4.18.0    (virtualbox, 0)
bento/ubuntu-16.04    (virtualbox, 2.3.1)
centos/6              (virtualbox, 1611.01)
centos/7              (virtualbox, 1611.01)
centos/atomic-host    (virtualbox, 7.20170131)
coreos-stable         (virtualbox, 1235.9.0)
debian/jessie64       (virtualbox, 8.7.0)

Note that the version of the vEOS box is embedded in the name. Now, you could not put the version in the name, but because there’s no metadata—which is why it shows (virtualbox, 0) on that line—you wouldn’t have any way of knowing which version you had. Further, what happens when you want to have multiple versions of the vEOS box?

Fortunately, there’s an easy fix (inspired by the way CoreOS distributes their Vagrant box). Just create a file with the Continue reading

Launching an Open Source Book Project

In my list of planned 2017 projects, I mentioned that one thing I’d like to do this year is launch an open source book project. Well, I’m excited to announce The Open vSwitch Cookbook, an Apache 2.0-licensed book project aimed at providing “how to” recipes for Open vSwitch (OVS).

Portions of the book are already available, with more content being added soon (more on that in a moment).

I’m using GitBook as the publishing platform; this allows me to write in Markdown and publish to a variety of formats. I’ll only be publishing to HTML at first; other formats may come down the road. I chose GitBook for a few reasons:

  1. It’s free for open source projects. This book, as well as the software that is its focus, are both open source projects.
  2. As I mentioned already, I can use Markdown for all the content.
  3. It allows me to store the book in a Git repository and use standard Git workflows.

I decided against using GitBook to host the Git repository for the book. Instead, the book’s source is found on GitHub. This enables collaboration on the book’s content—an aspect of this project that I think Continue reading

Technology Short Take #78

Welcome to Technology Short Take #78! Here’s another collection of links and articles from around the Internet discussing various data center-focused technologies.

Networking

Servers/Hardware

Nothing this time around, sorry!

Security

Correlating OVS and Guest Domain Interfaces

I’ve written a fair amount about Open vSwitch (OVS), including some articles on using it with KVM and Libvirt. One thing I haven’t discussed in such environments, though, is the potential challenge of mapping network interfaces in a guest domain to the corresponding OVS interface (for the purposes of troubleshooting, for example). There is no single command that will provide a guest-to-OVS interface map (as far as I know), but this information is easily gathered using a couple commands.

Gathering Information About the Guest Interface

First, we’ll need to gather some information about the interface from the guest domain’s perspective. There are two ways we can do this: from within the guest OS itself, or by interrogating Libvirt.

Working from Within the Guest OS

Inside the guest domain (I’m assuming you’re using a relatively recent Linux distribution), you only need to use standard commands like ip link list or ip addr list. The goal is to obtain the MAC address assigned to the particular guest interface. So, for example, if you wanted to get the MAC address for the guest “eth0” interface, you’d run:

    ip link list eth0

To isolate only the MAC address from the output of that Continue reading

Fixing Double Sublime Text Icons on Fedora 25

In my previous post on how to install Sublime Text 3 (ST3) on Fedora 25, I mentioned that I have observed instances where launching ST3 via the subl command creates an additional icon in the Dash. While searching for a solution to an issue with LibreOffice icons, I found a fix for this problem.

The fix is to add this line to the sublime-text.desktop file (typically found in /usr/share/applications):

StartupWMClass=subl

This tells Fedora and GNOME that when a window with the WMClass of “subl” appears, it should be considered a Sublime Text window. Once you add this line to the sublime-text.desktop file, then launching ST3 either via the GUI or via the subl command should create only a single ST3 icon in the Dash.

Now, back to trying to figure out this LibreOffice icon issue…

Installing Sublime Text 3 on Fedora 25

Sublime Text is my current text editor of choice. I won’t go into why I chose it over other tools; instead, I encourage you to have a look for yourself. Installing Sublime Text 3 (ST3) on Fedora 25, though, isn’t as simple as running a dnf install. Fortunately, it’s not a difficult process, but it is a process I wanted to document here for the sake of others.

Here’s the process I followed:

  1. Download the latest tarball of ST3. As of this writing, it was build 3126, so this cURL command accomplishes what you need:

     curl -LO https://download.sublimetext.com/sublime_text_3_build_3126_x64.tar.bz2
    

    As build numbers change, though, you’ll want to verify the correct URL for the latest build. (A lot of sites I saw provide hard-coded scripts that help perform this process for you, but don’t account for changes in the download URL.)

  2. Extract the contents of the tarball with tar xvjf sublime_text_3_build_3126_x64.tar.bz2. This will create a directory called “sublime_text_3” with the contents of the tarball.

  3. Install the desktop launcher for ST3 by copying over the .desktop file in the tarball:

     sudo cp -rf sublime_text_3/sublime_text.desktop /usr/share/applications/sublime_text.desktop
    
  4. Edit the desktop launcher to specify the full path Continue reading

The Linux Migration: Virtualization Provider

As part of my migration to Linux as my primary laptop OS, I needed to revisit my choice of virtualization provider. Long-time readers probably know that I was an early adopter of VMware Fusion, starting way back in 2006 with the very first “friends and family” release (before it was even publicly available). Obviously I can’t use Fusion on Linux, but do I use VMware Workstation for Linux? VirtualBox? Or something else? That’s what I set out to determine, and in this post I’ll share what I selected and the reasoning behind my selection.

So what were the options to consider? While there may be some other solutions, these are the three I primarily assessed:

  • VMware Workstation for Linux 12.5.2
  • VirtualBox 5.1.14
  • “Native” Linux KVM, supplemented by Libvirt and a GUI like GNOME Boxes (installed by default in Fedora 25)

Since I have been using Vagrant quite a bit over the last few years, whatever solution I selected needed to work reasonably well with Vagrant.

I’m pretty familiar with KVM and Libvirt, so I started there. Given that KVM and Libvirt are “native” to Linux, it felt like it would be a clean solution. While Continue reading

Installing VirtualBox 5.1 on Fedora 25

Last fall, I wrote a piece about why I had switched to VirtualBox (from VMware Fusion) for my Vagrant needs. As part of my switch to Fedora Linux as my primary laptop OS, I revisited my choice of virtualization provider. I’ll describe that re-assessment in a separate post; the “TL;DR” for this post is that I settled on VirtualBox. As it turns out, though, installing VirtualBox 5.1 on Fedora 25 isn’t as straightforward as one might expect.

After a number of attempts (using a test VM to iron out the “best” procedure), here’s the process I found to be the most straightforward:

  1. Run dnf check-update and dnf upgrade to pick up the latest packages. If a new kernel version is installed, reboot. (I know this sounds contrived, but I’ve run into issues where some kernel-related packages aren’t available for the kernel version you’re actually running.)

  2. Install the RPMFusion repos. You only really need the “free” repository, but you can install the “nonfree” as well if you like (it won’t affect this process). I won’t go through the process for how to do this; it’s really well-documented on the RPMFusion web site and is pretty straightforward.

  3. Next, use Continue reading

Spousetivities at DockerCon 2017

DockerCon 2017 is coming up in mid-April in Austin, TX, and Spousetivities will once again be offering activities for folks traveling to Austin with conference attendees. This is Spousetivities’ second time at DockerCon, and Crystal has a great lineup of activities planned.

Here’s a quick preview of the activities organized for DockerCon:

  • Trip to Magnolia Market (from HGTV’s “Fixer Upper”)
  • Tour of LBJ State Park
  • Visit to Fredricksburg
  • Sightseeing through the Hill Country around Austin
  • Lunch at the Salt Lick BBQ

Austin in the spring should be a great place to visit, and Crystal has some really enjoyable activities planned—it’s a great reason to bring your spouse, girlfriend/boyfriend, significant other, or family member with you to Austin when you come for DockerCon. Of course, the chance to win some great prizes is nice too…

Crystal’s blog post on the Spousetivities site has a few more details, and registration is open right now.

Technology Short Take #77

Welcome to Technology Short Take #77. I’ve got a new collection of links and articles from around the Web on various data center-focused technologies.

Networking

The Linux Migration: Final Linux Distro Selection

In my Linux migration initial progress report, I provided an early assessment of the Linux distribution that I thought I would use moving forward. At that time, I had selected Ubuntu. Since that time, though, I’ve pivoted a bit and selected a different Linux distribution as the operating system (OS) for my primary laptop moving forward. In this post, I’d like to describe why I selected Fedora.

My original reasons for selecting Ubuntu 16.04 were as follows:

  • Hardware support
  • Performance
  • Leading but not bleeding edge
  • User interface

These are all valid reasons, but as I continued to compare Ubuntu against Fedora 25 I realized that some of these factors weren’t as critical as I’d originally thought:

  • Hardware support: I initially targeted Ubuntu because it runs really well on Apple hardware. Fedora, on the other hand, doesn’t run quite as well on Apple hardware. Since I’m coming from the OS X world, I initially placed some emphasis on support for Apple hardware. The reality is, though, that I need a Linux distribution that does a great job of supporting my new work laptop, not one of my leftover Mac laptops. My experience with Fedora 25 on the Dell E7370 Continue reading

Looking Ahead: My 2017 Projects

For the last few years, I’ve been sharing my list of projects for each year (here’s the list for 2012, the list for 2013, 2015’s list, and last year’s list—I didn’t do a list for 2014). Toward the end of each year, I also publish a “report card” assessing my performance against that year’s list (here’s the 2016 assessment). In this post, I’m going to share my list of planned projects for 2017.

Without further ado, here’s the list for 2017:

  1. Finish the network automation book. One way or another, the network automation book I’m writing with Jason Edelman and Matt Oswalt is getting finished in 2017. (It’s available now as an Early Access edition if you’d like to give it a look and provide some feedback.)

  2. Launch an open source book project. This is something I’ve been tossing around for a while now. Since my efforts at making code contributions to an open source project aren’t going so well (though I’m going to keep moving in that direction), I figured I’d contribute in a way I know I can do. This is going to be a “cookbook”-style book, and the goal I’m setting Continue reading

Review: Dell Latitude E7370

As part of my Linux migration (see my initial progress report), late this past week I started setting up my first non-Apple laptop since 2003. In this post, I’d like to share my thoughts on my new laptop, a Dell Latitude E7370.

First, let’s get the specs—the “speeds and feeds”—out of the way:

  • Intel Core m7 CPU
  • 16 GB of RAM
  • 512 GB NVMe SSD
  • 3200x1800 touchscreen
  • Intel HD graphics and Intel 802.11a/b/g/n/ac wireless

Based on the specs alone, it’s easy to see this laptop is no slouch. It’s certainly comparable to the latest-generation of MacBook Pro laptops, except for the touchscreen (which the Macs don’t offer/support).

Subjectively, I have to say I’m impressed with the E7370. I travel quite a bit, so size and weight are important. This laptop looks and feels more svelte than my previous laptop, a 13” MacBook Air. From a comparison perspective, I’d say it’s on par with my son’s 11” MacBook Air. The build quality is great, and the laptop feels solid and sturdy. The display is crisp, sharp, and bright, and battery life (so far, without any OS-level tuning) has been respectable. Unlike some previous ultrabooks I’ve seen, Dell’s done Continue reading

Technology Short Take #76

Welcome to Technology Short Take #76, the first Technology Short Take of 2017. Normally, I’d publish this on a Friday, but due to extenuating circumstances (my mother-in-law’s funeral is tomorrow) I’m posting it today. Here’s hoping you find something useful!

Networking

Plain Text Productivity Redux

Almost 2 years ago, I set out on an experiment in plain text productivity. I won’t say the experiment was a failure; I did learn from the experiment, and gaining knowledge is usually a positive outcome. In the end, I switched back to OmniFocus, the OS X- and iOS-specific app I’d been using previously. In the last few weeks, though, I’ve revisited the idea of a plain text productivity system as part of my migration to Ubuntu Linux as my primary desktop OS, and I think I’ve resolved some of the issues that were present in my last attempt.

To recap, in my previous attempt I settled on the TaskPaper format (named after the OS X app of the same name). The format is extraordinarily flexible, and the OS X app is more powerful than you might expect. However, I uncovered some issues that made the solution untenable; namely:

  1. Handling future tasks is a problem.
  2. Handling repeating tasks is a problem.
  3. Handling tasks with due dates is a problem.
  4. Handling lots of tasks is a problem.
  5. Keeping task lists synced across computers can be a problem.

At the time, the app had no way to dynamically respond to Continue reading