slowe

Author Archives: slowe

Enabling an Apple MBP Wireless Adapter with Fedora 25

In this article, I want to share with you the steps I took to enable wireless networking on an older (mid-2011) 13” MacBook Pro running Fedora 25. This is driven by a continued need to evaluate Fedora 25, as I’ve run into a few potential roadblocks with Ubuntu 16.04 as my primary laptop OS. Using Fedora 25 instead may help resolve some of these issues, which primarily center around corporate collaboration.

First, you’ll want to enable the RPM Fusion repositories. This is pretty well documented on the RPM Fusion web site. This link will take you to the configuration page, which will provide links for graphical setup via your browser as well as CLI commands.

Once the RPM Fusion repositories (both Free and Nonfree) repositories are enabled, then it’s just a matter of installing a few packages:

  1. First, install the “kernel-devel” package appropriate for your current kernel. The command to use is:

     sudo dnf install "kernel-devel-uname-r == $(uname -r)"
    

    This could be user error on my part, but I’ve found that it’s necessary to use the full package (including version) instead of just “kernel-devel”. Otherwise, Fedora seems to have a tendency to install the latest package, which may not Continue reading

OPML-to-Markdown Conversion Script

In this post, I’d like to share a script I wrote to help with converting Outline Processor Markup Language (OPML) documents to Markdown. If you read the recent update on my Linux migration plans, you may recall that I identified OPML files (created in OmniOutliner) as an area where some work was going to be required. This script is the result of my efforts in this area.

<aside>Before I continue, I want to very briefly point out that this script was written to help in my specific use case. It’s quite likely that you’ll want or need to adjust the behaviors of this script in order to meet the needs of your particular use case.</aside>

This script takes advantage of two tools: pandoc and sed. pandoc is a third-party tool that is easily installed on Ubuntu using apt or apt-get. (I haven’t checked other Linux distributions, but I suspect packages are available there as well.) pandoc is also available for OS X, making it a very handy cross-platform tool to have in my toolchest. (See this post for more information on how you can use pandoc in a Markdown-heavy environment.) sed, of course, is a Continue reading

Some Reading on Application Containers

One aspect of my pending migration to Ubuntu Linux on my primary laptop has been the opportunity to explore “non-traditional” uses for Linux containers. In particular, the idea of using Docker (or systemd-nspawn or rkt) to serve as a sandbox (of sorts) for GUI applications really intrigues me. This isn’t a use case that many of the container mechanisms are aiming to solve, but it’s an interesting use case nevertheless (to me, anyway).

So, in no particular order, here are a few articles I found about using Linux containers as application containers/sandboxes (mostly focused around GUI applications):

A Docker-Like Container Management using systemd
Running containers without Docker
Containerizing Graphical Applications on Linux with systemd-nspawn
Debian Containers with systemd-nspawn
Using your own containers with systemd-nspawn and overlayfs

I was successful in using Docker to containerize Firefox (see my “dockerfiles” repository on GitHub)), and was also successful in using systemd-nspawn in the same way, including the use of overlayfs. My experiments have been quite helpful and informative; I have some ideas that may percolate into future blog posts.

My (Evolving) Multi-Platform Toolbelt

A few days ago I posted a tweet about a new tool I’d (re-)discovered called jrnl. Someone replied to that tweet, asking me to list my “multi-platform toolbelt.” While it’s still evolving (every day!), I thought it might make for a good blog post. So, here’s a list of my still-evolving multi-platform toolbelt.

  • Sublime Text: Over the last few years, I’ve moved to creating the vast majority of my content in Markdown (MultiMarkdown, to be more specific). At first I was using OS X-specific text editors (first TextMate 1.x, then BBEdit), but last year I switched to Sublime Text. Sublime Text supports OS X, Linux, and Windows. I don’t have any Windows-based systems, so I only use it on OS X and Linux.

  • Wire: My use of Wire is still a bit limited, but only because the reach of the platform is also still a bit limited (this is a classical example of network effect). I’m currently using Wire on Linux and OS X, with plans to extend to iOS and Android. (If you’re using Wire, feel free to look me up! My username is “scottslowe”).

  • IMAP/SMTP: I’ve standardized on using IMAP/SMTP for all my e-mail Continue reading

Technology Short Take #75

Welcome to Technology Short Take #75, the final Technology Short Take for 2016. Fortunately, it’s not the final Technology Short Take ever, as I’ll be back in 2017 with more content. Until then, here’s some data center-related articles and links for your enjoyment.

Networking

  • Ajay Chenampara has some observations about running Ansible at scale against network devices.
  • Andrey Khomyakov shares some information on automating the setup of whitebox switches running Cumulus Linux in part 2 of this series on learning network automation.
  • Russell Bryant has shared the results of some testing comparing ML2+OVS and OVN as backends for OpenStack networking. As Russell indicates in his post, some additional analysis is needed to truly understand what’s happening, but early looks at the results of his tests show performance improvements in OVN versus ML2+OVS when it comes to total time required to boot a VM.
  • Ivan Pepelnjak shares a Python script that creates Ansible inventory from Vagrant’s SSH configuration. Handy.

Servers/Hardware

Nothing this time around!

Security

Looking Back: 2016 Project Report Card

As I’ve done for the last few years, in early 2016 I published a list of my planned personal projects for the year. In this post, I’d like to look back on that list of projects and grade myself on my progress (or lack of progress, if that is the case). Even though 2016 isn’t over yet, it’s close enough to the end of the year that things won’t change that much before 2017 is upon us.

For reference, here’s the list of planned 2016 projects:

  1. Complete a new book (again)
  2. Make more open source contributions
  3. Expand my knowledge and use of Python
  4. Expand my knowledge, use, and focus on public cloud services
  5. Complete a “wildcard project”

Let’s look at each of these planned projects and see how I fared.

  1. Complete a new book (again): Well—in the spirit of total honesty and transparency—this was a major failure. Not only did I fail to complete the network automation book I’ve been working on with Matt Oswalt and Jason Edelman, but the other book project I had planned also did not go anywhere. Granted, the circumstances preventing the second book project were outside my control, but the fact remains I still did Continue reading

Opening Web Internet Location Files on Ubuntu

As part of my effort to make myself and my workflows more “cross-platform friendly,” I’ve been revisiting certain aspects of how I do things. One of the things I’m reviewing is how I capture—and later review—posts or articles on the web. On OS X, I would run an AppleScript that generated a .webloc file (aka an Internet location file). This is an XML file that OS X understands. However, Linux doesn’t natively understand these files, so today I came up with a solution to reading .webloc files with Ubuntu and Firefox.

The solution to the file involves the use of xmllint, a tool that you can install on Ubuntu as part of the “libxml2-utils” package. Using xmllint, you can easily extract a single XML element from an XML file—and .webloc files are just XML files. For the sake of illustration, here’s the contents of a .webloc file generated on OS X:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>URL</key>
    <string>http://blog.fntlnz.wtf/post/systemd-nspawn/</string>
</dict>
</plist>

Using xmllint, you can extract the URL value, and then pass Continue reading

The Linux Migration: Initial Progress Report

About 4 years ago, I discussed some changes in the Apple ecosystem that might lead me to move away from OS X. To be honest, I’ve made only token efforts since that time to actually migrate away, even though the forces that I described in that post are still in full effect. In fact, some might say that the “iOS-ification” of OS X (now rebranded as “macOS”) is even stronger now. As a result, I’ve stepped up my work on a Linux migration, and I’m happy to report that I’ve made some progress.

Here’s a quick update on where things stand so far.

Linux Distribution

I’ve looked at a fair number of Linux distributions. I tried Elementary OS, which some have raved about but which I found too simplistic. I also went back and looked again at Ubuntu derivatives like Linux Mint. Given that Ubuntu is itself derived from Debian, I also took a look at Debian “Jessie”. Finally, I tested Fedora 25. For a number of reasons—which I’ll describe in more detail in a moment—I’ve settled on Ubuntu 16.04.

So, why Ubuntu 16.04 “Xenial Xerus”? Keep in mind that the reasons I list below are my Continue reading

Hiding the User List on the Ubuntu Login Screen

In this post, I’m going to share how to hide the user list on the login screen for Ubuntu 16.04. The information here isn’t necessarily new or ground-breaking; however, in searching for the solution myself I found a lot of conflicting information as to how this may or may not be accomplished. I’m publishing this post in the hopes of providing a bit more clarity around this topic.

I’ve verified that this procedure works on the desktop distribution of Ubuntu 16.04. Note also that this is probably not the only way of making this work; it’s likely there are other ways of accomplishing the same thing.

To make configuration changes to the login screen, you’ll want to add configuration files to /etc/lightdm/lightdm.conf.d. I used a single file to hide the user list and disable guest logins; presumably, you could use separate files for each configuration directive.

To disable the user list and disallow guest logins, add this content to a file in the etc/lightdm/lightdm.conf.d directory (I used the filename 00-hide-user-list.conf):

[SeatDefaults]
greeter-hide-users=true
greeter-show-manual-login=true
allow-guest=false

Once this file is in place, you’ll need to either restart your Ubuntu system, or restart the LightDM Continue reading

Installing Ansible 2.2 on Ubuntu 16.04

A few weeks ago I wrote a post about installing Ansible 2.2 on Fedora 25; today, I’d like to tackle what’s involved in installing Ansible 2.2 on Ubuntu 16.04. This post, like its Fedora counterpart, stems from my ongoing evaluation of Linux distributions and desktop environments. While the information here is very similar to the information in the Fedora post, I’m putting it in its own post in the hopes of making the information easier for readers to find.

It’s not really a secret that I like to run Ansible in a Python virtualenv, but I don’t believe that it will make any difference to the procedure described in this post. The errors that result when trying to install Ansible 2.2 without the necessary prerequisite packages should be the same either way (in a virtualenv or not). However, I’m happy to be corrected if someone knows otherwise.

To create a Python virtualenv, you’ll first need virtualenv installed. I prefer to install virtualenv globally for all users using this command:

sudo -H pip install virtualenv

Alternately, you could install it via a package, with apt install virtualenv. As far as I can tell, either approach Continue reading

Using OVN with KVM and Libvirt

In this post, I’m going to discuss how to use OVN (Open Virtual Network; part of the Open vSwitch project) with KVM and Libvirt to provide virtual networking for KVM-based virtual machines. This post will build on some concepts around OVS and Libvirt that I’ve discussed previously; be sure to review the OVS posts and Libvirt posts on this site for more details and prerequisite knowledge.

I’ll structure this discussion around 2 key steps:

  1. Setting up OVN
  2. Integrating KVM/Libvirt into OVN

Note that I’m not going to discuss setting up KVM/Libvirt, as that’s something I’ve covered previously and is well-documented.

Ready? Let’s jump in!

Setting up OVN

The biggest “challenge” here is package availability—many Linux distributions don’t have packages available for OVS 2.6.0, which is the first release with non-experimental support of OVN. If you’re an Ubuntu user, then you can use the Ubuntu Cloud Archive for the OpenStack “Newton” release, which includes OVS/OVN 2.6.0 packages. For other distributions, you’ll probably need to compile from source. In that case, the OVS installation documentation is quite accurate and usable.

For the purposes of this post, I’ll assume you’re using Ubuntu 16.04 and will pull packages Continue reading

Technology Short Take #74

Welcome to Technology Short Take #74! The end of 2016 is nearly upon us, and it looks as if there will be only one more Technology Short Take before the end of the year. So, let’s get on with the content—time is short!

Networking

  • If you haven’t heard of Apstra, David Varnum has a great introduction to Apstra available on his site.
  • Will Robinson talks about how to structure your Ansible playbooks in the context of using Ansible to control your network gear.
  • This is an interesting project to watch, I think—it’s porting OVN (Open Virtual Network) from a “traditional” OvS back-end to an IOVisor-based back-end (IOVisor implements the data plane in eBPF).
  • If you’re interested in playing around with OVN, I’ve built a Vagrant-based environment running OVS/OVN 2.6.0 on Ubuntu 16.04. Have a look here.

Servers/Hardware

Nothing this time, but I’ll stay alert for content to include in the future.

Security

Learning Environments for OVN

Over the last few days, I’ve added two new Vagrant-based learning environments to my GitHub “learning-tools” repository, both of them focused on Open Virtual Network (OVN). OVN, if you aren’t aware, is part of the Open vSwitch (OVS) project aimed at adding open source network virtualization functionality to OVS. If you’re interested in learning more about OVN, you may want to check out these new learning environments.

Here’s more details on the two new learning environments:

  1. The first one, found in the “ovn” folder of the repository, just builds out a simple three-node OVN 2.6.0 environment running Ubuntu 16.04. This would allow you to run OVN commands like ovn-nbctl, ovn-sbctl, ovs-vsctl, and other related commands to better understand how the components interact with each other and how OVN works.

  2. The second environment, found in the “ovn-docker-ansible” folder, builds on the first one by adding Docker Engine to each node in the environment and adding the OVN driver for Docker networking. In addition to being able to run various OVS and OVN commands, this environment allows you to build OVN-backed overlay networks between Docker containers running on any node in the environment. Continue reading

AWS re:Invent 2016 Keynote with Werner Vogels

This is a liveblog of the Thursday keynote at AWS re:Invent 2016. Today’s keynote is led by Werner Vogels, CTO of Amazon Web Services. Unlike yesterday, today I opted not to attend the keynote in the main hall, viewing the keynote instead from an “overflow” area. Turns out the “overflow” area has drinks, tables, and power! That’s a far better option that being crammed in the main hall, though in the past I’ve found it more difficult to liveblog when not viewing the keynote directly. We’ll see if that continues to hold true.

After an entertaining “remix” of Werner quotes in the pre-keynote music mix, Vogels takes the stage at 9:30. The remote viewing is, unfortunately, off-sync; the video doesn’t match up to the audio. Vogels starts his keynote by looking back at the last 10 years, and seeing the sorts of transformations have occurred. He rails against the vendors, and how AWS vowed to be “the Earth’s most customer-centric IT company.” Vogels says customers should be in charge, not vendors, and that includes AWS.

How does AWS be a customer-centric IT company?

  1. Listen closely to customers and act.
  2. Give customers choice.
  3. Work backwards from the customer.
  4. Help customers Continue reading

Liveblog: Introduction to Managed Database Services on AWS

This is a liveblog of the AWS re:Invent session titled “Introduction to Managed Database Services on AWS” (DAT307). The speakers for the session are Steve Hunt, Alan Murray, and Robin Spira, all of FanDuel; and Darin Briskman, from AWS Database Services.

Briskman kicks off the session with a quick review of AWS’ managed database offerings. These fall into four categories, which Briskman reviewed so quickly I couldn’t capture. I think they were SQL, NoSQL, data warehousing, and something else. Why use managed databases? Because this allows AWS to take over the responsibility for OS maintenance, DB maintenance, high availability, scalability, etc. All you have to worry about it is the application that runs on the database.

What are the managed relational database services that AWS offers?

  • Amazon RDS (Relational Database Service): The oldest service, now supporting MySQL, MariaDB, PostgreSQL, Microsoft SQL Server, and Oracle
  • Amazon Aurora: MySQL-compatible (and now PostgreSQL-compatible per the announcement today) with greater scalability, better performance, transparent encryption, high availability, and integration with AWS Lambda

Relational databases are really helpful in many cases, but sometimes NoSQL databases would be more helpful. AWS also offers DynamoDB, which is a managed NoSQL database service. DynamoDB is always clustered, and Continue reading

Liveblog: How News UK Centralized Cloud Governance

This is a liveblog of the AWS re:Invent session titled “How News UK Centralized Cloud Governance Using Policy Management” (DEV306). The speakers for the session are Joe Kinsella from CloudHealth Technologies and Iain Caldwell of News UK/News Corp EMEA.

Kinsella kicks things off by indicating that the session will attempt to tackle the burning question: how does one maintain the agility that brought you to the cloud in the beginning, but enforce the proper level of governance and control? Kinsella and Caldwell then spend a few minutes on introductions before diving into the content of the session.

Caldwell starts off the session content with a review of News Corp’s use of AWS. News UK is currently running 69% of their workloads in the public cloud, with an aim to hit 75% by July 2017. Before they started their journey to the public cloud, News Corp ran a “global application assessment”—and Caldwell believes that this was critical to the success News Corp/News UK has seen so far. News is using a wide variety of AWS services: EC2, S3, VPC, Direct Connect, Route 53, CloudFront, CloudFormation, CloudWatch, RDS, WorkSpaces, Storage Gateway.

When prompted by Kinsella, Caldwell indicates that EC2 instances were the Continue reading

Liveblog: Automating Cloud Mgmt and Deployment

This is a liveblog of the AWS re:Invent session titled “Automating Cloud Management and Deployment for a Diverse Enterprise Application Portfolio” (DEV319). The speakers for the session are David Lowry and Amul Merchant, both from Infor Global.

Merchant kicks the session off with a brief overview of Infor and its cloud strategy. Infor’s CEO, Charles Phillips, was quoted from AWS re:Invent 2014 as having said, “Friends don’t let friends build data centers.” Merchant spends a pretty fair amount of time (too much time, in my opinion) explaining Infor and Infor’s offerings, with only minimal references to how this affects or is affected by the core topic of the presentation. He makes numerous references to “the DevOps toolset” that Infor uses, but does not provide any details or information on said toolset. Instead, the information shared is far too basic for a 300-level session.

After 15 minutes, Lowry takes the stage to talk about the DevOps toolset. The key principles Infor used in building/selecting tools were:

  • Automate end-to-end
  • Use AWS services wherever possible (this ties the tools closely to AWS)
  • Minimally Viable Product (MVP) first, then expand

Some of the tools Infor uses:

AWS re:Invent 2016 Keynote with Andy Jassy

This is a liveblog of the Wednesday keynote at AWS re:Invent 2016. Today’s keynote is led by Andy Jassy, CEO of Amazon Web Services. The crowd gathered for the keynote is pretty immense, despite the availability of numerous overflow locations spread across the multiple re:Invent venues.

At precisely 9am, the DJ rocking the pre-keynote music leaves the stage and AWS welcomes Andy Jassy, CEO, to the stage. This is only the 5th re:Invent conference, and Jassy confirms that this year’s attendance is 32,000 with another 50,000 listening in via the live stream.

Jassy starts with an update on the AWS business. As of Q3, AWS is a nearly $13B run-rate business with millions of active customers. Jassy says that nearly every industry segment is using AWS in a “meaningful way,” as is the public sector. He also calls out all the various AWS partners and systems integrators that have built practices on top of AWS, and the “thousands” of ISVs that have built (or rebuilt) products to run on AWS. AWS is, according to some statistics provided by Jassy, the fastest-growing enterprise IT technology company.

In 2014, AWS said the cloud was the “new normal.” In 2015, AWS said Continue reading

Thoughts on AWS re:Invent Day 1

As I wrap up Day 1 of AWS re:Invent 2016 in Las Vegas (can I consider today to be day 1?), I wanted to capture a quick summary of thoughts about the sessions, the content, the attendees, and the event (not necessarily in that order).

First, here are some links to the liveblogs I posted from today’s sessions:

Liveblog: Scaling to Your First 10 Million Users
Liveblog: Hybrid Architectures, Bridging the Gap to the Cloud
Liveblog: Getting the Most Bang for Your Buck with EC2

Overall, the sessions have been pretty decent so far. Some portions of some of the sessions feel more like a sales pitch than an educational session, but I’m sure that’s the case at other events as well (yes, I’m talking about VMworld). I’m not yet sure if the nature of what AWS does/offers lends itself to subjectively feel more like a sales pitch or not. Case in point: how does a presenter suggest to attendees—for solid technical reasons—that they should consider using a service like Route 53 or DynamoDB or SQS (or any one of a dozen other services) without it also sounding like a sales pitch?

From an attendee perspective, I’ve been “badge Continue reading

Liveblog: Getting the Most Bang for Your Buck with EC2

This is a liveblog of the AWS re:Invent session titled “Getting the Most Bang for Your Buck With #EC2 #Winning” (CMP202). The speaker for the session is Joshua Bergin, General Manager, EC2 Spot Business. According to the abstract, this session is supposed to focus on effectively using on-demand instances versus spot instances and reserved instances.

As a matter of quick introduction, there are three purchasing options for EC2:

  • On-demand: “pay as you go”; no long-term commitments
  • Reserved: good for steady-state workloads, used with 1 yr or 3 yr commitment
  • Spot: pay market price for unused compute capacity

How do you choose which one to use? Bergin shares the “four pillars of performance and cost optimization”:

  1. Right-sizing: choosing the cheapest instance available while meeting performance requirements
  2. Purchasing options: Bergin will discuss this in more detail; this is the primary focus of the discussion
  3. Increase elasticity: turning off (“scaling down”) instances that don’t need to be running (example: turn off development workloads when the developers aren’t working)
  4. Measure, monitor, and improve: tagging resources; identitying always-on instances; identifying instances that can be downsized; recommending Reserved Instances (RIs) where it makes sense; dashboards and reports

Bergin points out the key AWS pricing principles (no Continue reading