Transform Stackdriver IAM Logs with Cloud Functions and Export with Cloud Pub/Sub

Published September 22, 2018 • Updated September 24, 2018


Stackdriver Logging makes it easy to export Admin Activity logs to BigQuery, Cloud Storage, or Cloud Pub/Sub.

Cloud Pub/Sub is typically used to export logs as messages to an external system such as Splunk. Configuring this can be done using the GCP Console.

Continue reading...

Google Cloud HTTP(S) Global Load Balancer Redirect HTTP to HTTPS Demo

Published July 30, 2018 • Updated January 14, 2019


A common configuration for any web serving infrastructure is to redirect all HTTP requests to HTTPS. Because a Google Cloud HTTP(S) Global Load Balancer is a globally available resource comprised of many software defined networking components, configuring this, despite the end result being the same, works a bit differently than what you might be used to.

Continue reading...

Clean Install of Windows 10, Drivers, and Utilities on an MSI GS65 Stealth Thin

Published July 8, 2018 • Updated January 13, 2019


I recently purchased an MSI GS65 Stealth Thin 8RE, and I immediately wanted to do a clean install of Windows 10. The reasons for wanting to do a clean install of Windows 10 are threefold:

  1. Have a better understanding of what is installed on my computer
  2. Remove the bloatware that usually comes pre-installed on Windows computers
  3. Reclaim storage space by removing the data and recovery partitions setup by the manufacturer

Continue reading...

awk Commands Cheat Sheet

Published June 17, 2018 • Updated January 10, 2019


awk - which is not an acronym for anything other than the first letter in the three creator’s last names - is a text processor and is included with practically every Unix-like system. It has its own programming language that can be used to parse through text line by line. It has no problem parsing through a large amount of text data that other programs might choke on.

Continue reading...

ChromeOS Keyboard and Trackpad Shortcuts Cheat Sheet

Published March 11, 2018 • Updated May 15, 2018


For over a year I have used ChromeOS on an HP Chromebook 13, and more recently a Google Pixelbook, as my work operating system. I was apprehensive at first to use a Chromebook after using Mac laptops personally and professionally for over 10 years. However, I have been pleasantly surprised with ChromeOS because of its simplicity, cloud integrations, ease of updates, and I have started using it more and more over macOS.

Continue reading...

Find All Shared Files in Google Drive with a Python Script

Published January 3, 2018 • Updated October 18, 2018


Google Drive makes it very easy to share files. You can easily and securely share files to anyone with a Google account or to anyone else by creating a shareable link that is accessible to anyone that knows the link. The shareable link contains a 33 character random string, so it’s very difficult to guess the URL if you are worried about someone other than your intended recipient looking at the shared file.

Continue reading...

Chromecast High Pitched and Distorted Audio

Published November 13, 2017


I am a big fan of Google’s Chromecast. I really like having a dumb device attached to an unfortunately not dumb TV that is entirely controlled via a smart phone. It keeps the number of remotes to a minimum, and it allows anyone on your network to easily watch their own content. I rarely have troubles casting to a Chromecast except when using particular mobile apps that do not implement the Chromecast APIs properly.

Continue reading...

Deploy a Three Tier Web Application to Kubernetes

Published June 17, 2017 • Updated December 17, 2018


Multi-tier architectures are a common way to design web applications:

  1. A frontend - presentation - tier which provides the user interface
  2. An application - logic - tier where the processing happens
  3. A backend - data - tier where different storage technologies run

The different tiers could be deployed to a single virtual machine. Configuration management tools such as Ansible, Salt, Chef, or Puppet could be used to automate the deployment process. However, if the web application needs to start handling more traffic, it is only a matter of time before the resources of that single virtual machine are consumed. The single virtual machine could be scaled up by adding more CPU, RAM, and storage, but there is usually an upper limit to doing that.

Continue reading...

Use Google App Engine and Golang to Host a Static Website with Same Domain Redirects

Published March 8, 2017 • Updated January 10, 2019


There are several inexpensive ways to host a static website generated with a static site generator like Jekyll, Hugo, or Pelican:

This entire blog is statically generated using Jekyll. However, I am unable to use any of the options above, because, over this blog’s lifetime, I have changed domain names, changed URL schemes, and renamed posts, and I want to keep alive all of the old URLs.

Continue reading...

Use Google App Engine and Python for Inexpensive Domain Redirects

Published March 6, 2017 • Updated January 10, 2019


This blog has existed under a few domain names: workingconfig.com, thornelaboratories.net, and, now, thornelabs.net. workingconfig.com didn’t exist for very long, and never had many - if any - backlinks to it; it didn’t make sense to keep those URLs alive. However, thornelaboratories.net did exist for a longer period of time, and it had URLs I wanted to keep alive.

Continue reading...

rpm Commands Cheat Sheet

Published March 5, 2017


The yum command, and now the newer dnf command, typically provide all of the functionality needed to manage packages on RPM-based Linux distributions. However, sometimes you just need to use the rpm command to fix a problem or get a piece of information about a package yum or dnf might not provide.

Continue reading...

Website Development Tools and Resources

Published February 25, 2017 • Updated September 3, 2018


I have always preferred web development. I think it is due to how quickly content can be published and made available to the world.

There are an endless number of tools and resources available for web developers. This post aggregates some of the tools and resources I have used throughout my projects.

Continue reading...

Bootstrap Resources

Published February 25, 2017


Bootstrap is a popular HTML, CSS, and Javascript frontend framework to quickly develop clean, responsive, and well layed out websites. I have used Bootstrap in every web-based project I have started because it makes styling and placing of web objects easy and straightforward.

Continue reading...

Create Let's Encrypt SSL Certificates with lego, DNS Challenge, and Google Cloud DNS

Published November 8, 2016 • Updated January 10, 2019


Since it was released to the world, Let’s Encrypt has been a boon for anyone wanting to secure their website or web application with TLS. A lot of work has been, and continues to be, done to provide HTTPS for free to the masses.

Because Let’s Encrypt is an open certificate authority and provides an API to create, renew, and revoke SSL certificates, anyone can create tools to make a historically cumbersome and difficult process more efficient and easier.

Continue reading...

parted Commands Cheat Sheet

Published June 4, 2016 • Updated January 10, 2019


Linux users have used fdisk for as long as can be remembered to partition their hard disks. However, as large hard disks have become more and more prevalent, fdisk can no longer be used because it has a 2 TB partition limit. Luckily, parted has been around for a long time and can be used to label and partition any modern sized hard disk.

Continue reading...

Debian/Ubuntu Preseed Documentation and Working Examples

Published October 14, 2015 • Updated June 2, 2018


Debian/Ubuntu’s Preseed is not the easiest thing to understand. Having used Red Hat/CentOS Kickstart Profiles for so long, trying to setup a Preseed file for the first time was an extremely uninviting process.

Ubuntu has support for using Kickstart Profiles, but it isn’t as full featured as Preseed, and I have encountered plenty of edge cases where Kickstart Profiles do not work for provisioning Ubuntu systems.

I currently spend a lot more time with Ubuntu than Red Hat or CentOS, so all I can do is try to better understand Preseed.

Continue reading...

VirtualBox Commands Cheat Sheet

Published August 24, 2015 • Updated July 21, 2016


VirtualBox has always been the go-to piece of software to spin up virtual machines on your workstation.

More often than not, you will work with VirtualBox using its GUI. However, for those occasions where you are SSH’ing into a remote workstation running VirtualBox, it is often easier to work with it using the command line instead of forwarding X.

This post will be an ever growing list of useful VirtualBox commands.

Continue reading...

Install, Configure, and Use minidlna on OS X Yosemite

Published August 23, 2015 • Updated January 10, 2019


Sony finally released a DLNA media player for the PlayStation 4 on June 16, 2015. I don’t have a lot of streamable media, but what I do have is stored on my laptop.

I have used Plex in the past, but it is overly complicated and “heavy” for my needs. I wanted a light weight DLNA server that could be daemonized and point to a media directory. minidlna turned out to be the answer.

Continue reading...

Setup Varnish 4 on CentOS 6 as a Caching Server and Load Balancer

Published March 29, 2015 • Updated May 3, 2017


In a previous post, I detailed how to setup Varnish 2.1.5 on CentOS 6 as a caching server and load balancer. After setting this up, I realized MP4 files were not streaming and large downloads were taking too long to begin.

Varnish 4 is the latest major release of Varnish and has provided fixes to all of these problems.

This post will be very similar to the previous post, but will provide the new VCL syntax that applies to Varnish 4.

Continue reading...

Setup Varnish 2.1.5 on CentOS 6 as a Caching Server and Load Balancer

Published March 28, 2015 • Updated May 3, 2017


Varnish is a highly regarded HTTP caching server. It sits in front of your web server tier and caches content in RAM so subsequent requests are served as quickly as possible.

Varnish can also be a basic load balancer. Combining a caching server and a load balancer works well when one or more of your web servers becomes unavailable. Because Varnish is also acting as the load balancer, no longer will the end user possibly see a “Service unavailable” message while the load balancer is removing the unhealthy web server from the load balanced pool; They will simply see a cached paged instead.

Continue reading...

Change Gluster Volume Connection Timeout for GlusterFS Native Client

Published February 24, 2015 • Updated July 1, 2018


After setting up a two node replica Gluster cluster to use as a web content backend, I began testing what would happen when I brought down one of the Gluster nodes. The web nodes access the Gluster cluster using the GlusterFS native client, and I expected them to quickly see that one of the Gluster nodes was down and begin serving content from the healthy Gluster node, but that was not happening. My test simply involved rebooting one of the Gluster nodes. That node would come back online within about 30 seconds, but within those 30 seconds my website was down.

Continue reading...

Inject Content into a Jekyll Post

Published January 14, 2015 • Updated October 28, 2018


There was a period of time when I wanted to inject an ad into a particular part of every Jekyll post. I did not want to put the actual ad markup in the middle of the Markdown text file because it was ugly and would be difficult to manage if I had to make changes.

Continue reading...

Find the Ubuntu Apt Package a Command Belongs To

Published October 18, 2014 • Updated January 10, 2019


While working on Ubuntu Server 14.04, I needed to install the innobackupex command, but simply running sudo apt-get install innobackupex did nothing. I tried running apt-cache search innobackupex, but nothing was returned. This was another case of a command belonging to an apt package that did not use the same name.

Continue reading...

Make Spotlight Private Again in OS X Yosemite

Published October 18, 2014 • Updated June 14, 2017


When Apple introduced OS X Yosemite at WWDC 2014 they demoed a brand new and improved Spotlight. Everything about it I liked, but I was concerned about the Spotlight Suggestions and Bing Web Search features. To use those features your keystrokes have to be sent to a server somewhere and processed. I did not want that. I quickly remembered what happened when Canonical released Dash in Ubuntu. At the very least, Apple needed to offer a way to turn this functionality off.

Continue reading...

A Possible Fix for Low Earpiece Volume on the iPhone 6 and 6 Plus

Published September 27, 2014 • Updated June 2, 2018


I recently purchased an iPhone 6 and immediately noticed the phone call volume through the earpiece was much lower than my iPhone 5.

Speaker volume was more than loud enough, but the low earpiece volume - even though it was at max volume during the phone call - was making it difficult to understand the person on the other end.

Continue reading...

Create a KVM Based CentOS 6 OpenStack Cloud Image

Published September 24, 2014


For some reason CentOS does not keep their historical CentOS releases available online in OpenStack cloud image format. They only have the very latest CentOS OpenStack cloud image available (if you know this to be incorrect, please let me know). However, the current and historical CentOS repositories are available online, and you can create your own custom OpenStack cloud image from them.

Continue reading...

Reconfigure a Dell RAID (PERC) Controller through the Dell iDRAC Using racadm

Published September 3, 2014 • Updated January 10, 2019


While setting up an OpenStack Swift cluster, I had five Dell R720 servers with incorrectly configured RAID arrays. The two operating system hard drives were configured in a RAID1 array, as expected, but the 24 data hard drives were configured in two RAID5 arrays. The data hard drives in OpenStack Swift storage nodes should not be in a RAID array; Swift simply wants each hard drive on its own.

You can reboot most of Dell’s enterprise servers into the Dell RAID (PERC) Controller to get access to a GUI to re-configure the RAID arrays. But, with five servers and 24 disks on each, using the GUI would have been a very tedious and time consuming task. So, I began looking into what the racadm command was capable of.

You can SSH to the IP address of a Dell iDRAC and use the racadm command to run all sorts of commands. Luckily, racadm has a set of commands that allow you to reconfigure the RAID arrays.

Continue reading...

Configure Multiple Network Interfaces on an OpenStack Instance

Published September 3, 2014 • Updated January 10, 2019


Most of the pre-made OpenStack Cloud Images are configured to connect an OpenStack Instance to one network interface on creation of the instance.

As of OpenStack Icehouse, the functionality to attach another network interface to an existing OpenStack Instance through the Horizon Dashboard is not exposed. However, you can attach another network interface to an existing OpenStack Instance using the neutron and nova commands.

Continue reading...

Delete Duplicate OpenStack Hypervisors and Services

Published August 3, 2014 • Updated June 2, 2018


If you ever change the hostname of any of your OpenStack nodes and restart the OpenStack services on those nodes, the services are going to re-register to the OpenStack cluster under the new hostname. Because of this, when you run nova hypervisor-list, nova service-list, neutron agent-list, or cinder service-list you are going to have duplicate entries.

Unfortunately, at the time of writing, there are no commands available to clean up duplicate entries, so you have to modify the various OpenStack databases by hand.

Continue reading...

Questions to Ask to Determine if Your Application is Cloud Ready

Published August 3, 2014 • Updated April 7, 2016


Anyone working in IT has heard the question, “is your application cloud ready?”. What on earth does it mean? What factors go into making an application “cloud” ready?

Applications can be architected in many different ways and there are arguably many factors that go into making an application “cloud” ready.

This post isn’t going to cover what those factors are. What’s more interesting to me is how to quickly figure out if an application is “cloud” ready. I have found that there are a series of questions that can be asked to quickly determine this.

Continue reading...

Authenticate OpenStack Swift Against Keystone Instead of TempAuth

Published July 16, 2014 • Updated May 3, 2015


In a previous post I detailed how to install a stand-alone, multi-node OpenStack Swift Cluster with VirtualBox or VMware Fusion and Vagrant. That post configures Swift’s TempAuth module for authentication. However, if you have an existing OpenStack environment, or just an OpenStack Keystone server already setup, you can just as easily use Keystone instead.

Continue reading...

Install a Stand-alone, Multi-node OpenStack Swift Cluster with VirtualBox or VMware Fusion and Vagrant

Published July 14, 2014 • Updated May 10, 2017


The OpenStack Swift developer website describes Swift best:

Swift is a highly available, distributed, eventually consistent object/blob store. Organizations can use Swift to store lots of data efficiently, safely, and cheaply.

For being such a powerful object storage platform, I found it surprisingly easy to setup and configure. However, setup becomes more difficult as the number of nodes, racks, and data centers increase.

But, most of us do not have that many nodes, racks, or data centers and simply want to setup a Swift cluster to play with on our workstation.

Continue reading...

Random Twitter Bootstrap Jumbotron Image on Each Page Load Using jQuery

Published June 11, 2014 • Updated June 17, 2017


The Twitter Bootstrap frontend framework provides a UI element called a Jumbotron. As stated at getbootstrap.com, it is “a lightweight, flexible component that can optionally extend the entire viewport to showcase key content on your site”.

In my particular case, I wanted to use the Jumbotron to display different, severely cropped photographs on each page load. This post will go through how to implement this using jQuery.

Continue reading...

Manage Apache VirtualHosts and mod_rewrite Rules with Ansible

Published June 2, 2014


I needed a way to manage Apache VirtualHosts and mod_rewrite rules. There are a handful of Ansible Roles available at Ansible Galaxy to manage Apache VirtualHosts, but none of them also manage mod_rewrite rules.

After figuring out how to include additional content in an Ansible Template file, I was able to quickly put together an Ansible Playbook and Ansible Template to manage my Apache VirtualHosts and their particular mod_rewrite rules.

Continue reading...

Where to Find OpenStack Cloud Images

Published June 1, 2014 • Updated April 7, 2016


OpenStack Instances are created from OpenStack cloud images. Many modern Linux distribution organizations and companies create and distribute their own official OpenStack cloud images, but for those that do not, it is entirely possible to create your own.

cloud-init is a key part of creating any OpenStack cloud image and will be found in most of the ready-made images.

This post will be an ever growing list of operating systems that have ready-made OpenStack cloud images and instructions on how to create your own if they do not.

Continue reading...

Include Additional Content in Ansible Template File

Published May 22, 2014 • Updated May 27, 2014


While putting together an Ansible Playbook to generate a configuration file from an Ansible Template, I needed a way to include additional content from a text file within the generated configuration file. I could not find an Ansible Module to do this, but Ansible uses the Jinja2 templating engine, and with one additional line in the Ansible Template file, I was able to include the contents of the text file in the generated configuration file.

Continue reading...

Instant Search with Twitter Bootstrap, Jekyll, JSON, and jQuery

Published May 12, 2014 • Updated May 10, 2017


By default, the Twitter Bootstrap Search Field will use Google to search your site. This default functionality works (assuming Google has indexed your site), but it forces you out of your website to the Google search results page. With some tweaks, the search field can be wired to do whatever you want. I wanted a search field that functioned like Google Instant Search with the following features:

Continue reading...

Jekyll Resources

Published May 1, 2014 • Updated May 30, 2018


Jekyll is a fantastic static-site generator. It gives you everything you need to get a simple, clean website or blog up and running fast. It is also extremely extensible through the use of Liquid formatting.

This post will be an ever growing list of the Jekyll resources I have found useful while using Jekyll throughout several projects.

Continue reading...

Ansible Manage the Same Users Across Servers with Different Passwords

Published April 19, 2014 • Updated February 16, 2019


Recently, I was setting up a handful of servers that all needed the same user created but with a different password for that user on each server. After Google searching, I did not find a definitive way to manage users, and most of what I found consisted of bits and pieces of what I was looking for. I ultimately settled on the following solution.

This solution can definitely be improved upon by using group_vars and variable overrides to remove redundant attributes.

Continue reading...

Dell iDRAC racadm Commands and Scripts

Published April 16, 2014 • Updated July 31, 2016


The Dell iDRAC web interface has always been cumbersome to deal with. However, you can log in via SSH to a Dell iDRAC and use the racadm command to perform actions against the physical server. Because of SSH, it is possible to automate actions that would otherwise take a long time to do via the web interface.

This post will be an ever growing list of Dell iDRAC racadm commands, scripts, and ways to automate repetitive tasks.

Continue reading...

Create a KVM Based Debian 7 OpenStack Cloud Image

Published April 7, 2014 • Updated May 13, 2017


At the time of writing, unlike Red Hat, Fedora, CentOS, and Canonical, Debian does not create and distribute OpenStack cloud images. It is up to you to create your own. Debian now does create and distribute OpenStack cloud images. They can be found here.

I have seen steps using packer templates or virt-builder to create Debian 7 OpenStack cloud images, but I have not seen a step-by-step manual process to understand how it all works.

Continue reading...

OpenStack Commands Cheat Sheet

Published March 13, 2014 • Updated November 5, 2016


I have found most of the OpenStack commands to be fairly intuitive. However, there are some commands that do not follow a standard syntax, and there are far too many commands and command line switches to remember. In addition, Google searching for specific commands can be time consuming.

This post will be an ever growing list of OpenStack commands I have used across the various OpenStack Projects.

Continue reading...

Install Ansible, Create an Inventory File, Create and Run an Ansible Playbook, and Run Ansible Commands

Published March 8, 2014 • Updated June 28, 2018


Ansible is part of the configuration management and orchestration family that includes Puppet, Chef, and SaltStack. Having only ever used Chef, I found Ansible to have a much lower learning curve. I spent more time using it rather than learning it. But, despite its ease of use, there is always some amount of pre-work needed to get started.

In this post I will be stepping through how to install Ansible, create and run your first Ansible Playbook, and how Ansible can be used to run ad hoc commands. I will be running everything from OS X Mavericks. With the possible exception of the installation, all the other steps should work on modern Linux distributions.

Continue reading...

Hash root's Password in RHEL and CentOS Kickstart Profiles

Published February 3, 2014 • Updated October 23, 2015


root’s password can easily be set in RHEL and CentOS Kickstart Profiles with the following command:

rootpw "password here"

However, anyone using the Kickstart Profile will see the root password in plain text.

It is possible to hash root’s password in the Kickstart Profile with the following command:

rootpw --iscrypted password_hash

But, how do you generate the password hash? Depending on your authconfig configuration, there are several different ways to do this.

Continue reading...

Authenticate RHEL 5 and 6 SSSD Using Kerberos and LDAP Against Active Directory on Windows Server 2008 R2

Published January 30, 2014 • Updated May 8, 2017


SSSD brought several authentication and authorization protocols under one roof.

Despite that, it can be tricky to configure RHEL 5 and 6 systems to authenticate with SSSD using Kerberos and LDAP against an Active Directory server. This post details the steps I took to set everything up.

Continue reading...

Display Random Jekyll Posts During Each Page Load or Refresh Using Javascript

Published January 19, 2014 • Updated January 10, 2019


Because Jekyll is a static site generator it can be difficult to have various parts of your website be dynamic. For example, I wanted a side bar element to show a list of randomized posts. I found two methods here and here to go to a random Jekyll post by clicking a link, but nothing that displayed a randomized list of Jekyll posts. So, I adapted the Javascript code from the links into what I was looking for.

Continue reading...

Deploy Rackspace Private Cloud v4.2.x powered by OpenStack Havana with Neutron Networking Using VirtualBox or VMware Fusion and Vagrant

Published December 19, 2013 • Updated June 14, 2014


Rackspace Private Cloud, and OpenStack on its own, can be a formidable set of software to install. Rackspace Private Cloud uses Chef to deploy OpenStack, and while Chef itself has a high learning curve, its use does make deploying OpenStack easier and more scalable.

Continue reading...

Deploy Rackspace Private Cloud Entirely Within a Vagrantfile on VirtualBox or VMware Fusion

Published December 17, 2013 • Updated June 14, 2014


In a couple of previous posts, I detailed step-by-step how to deploy Rackspace Private Cloud v4.1.x powered by OpenStack Grizzly with nova-network and Rackspace Private Cloud v4.2.x powered by OpenStack Havana with Neutron Networking using Vagrant on top of VirtualBox or VMware Fusion.

Continue reading...

Spinning Up Your First Instance on Rackspace Private Cloud Using Quantum/Neutron Networking

Published December 12, 2013 • Updated May 13, 2017


Now that you have Rackspace Private Cloud installed, it is time to spin up your first OpenStack Instance. But there are several things you should do beforehand so you can fully utilize your OpenStack Instance.

Take note, in OpenStack Havana, Quantum Networking was renamed to Neutron Networking. This post covers both OpenStack Grizzly (RPC v4.1.x) and OpenStack Havana (RPC v4.2.x). I will specify when you should use the quantum commands or the neutron commands.

Continue reading...

Kind of Explicitly Set the Default Gateway IP Address on a Quantum Router

Published November 21, 2013 • Updated May 13, 2017


On OpenStack Grizzly while in the process of setting up an external Quantum Provider Network so I could attach it to a Quantum Router as the default gateway, I needed a way to specify what IP address is brought up as the default gateway on the Quantum Router, but there is no obvious command line switch to do this.

Why did I need a way to specify what IP address is brought up as the default gateway on a Quantum Router?

Continue reading...

Create a Ubuntu Server 12.04 LTS Vagrant Base Box from Scratch Using VirtualBox

Published November 11, 2013 • Updated May 13, 2017


Vagrant makes it easy to spin-up local virtual machines using VirtualBox or VMware Fusion. There are many Vagrant Boxes available to use immediately after downloading and installing Vagrant. However, I prefer to know exactly how my virtual machine image is created. This post will walk you through creating a Ubuntu Server 12.04.4 LTS Vagrant Base Box from scratch using VirtualBox.

Continue reading...

Create a CentOS 6 Vagrant Base Box from Scratch Using VirtualBox

Published November 11, 2013 • Updated May 13, 2017


Vagrant makes it easy to spin-up local virtual machines using VirtualBox or VMware Fusion. There are many Vagrant Boxes available to use immediately after downloading and installing Vagrant. However, I prefer to know exactly how my virtual machine image is created. This post will walk you through creating a CentOS 6.5 Vagrant Base Box from scratch using VirtualBox.

Continue reading...

Create a CentOS 6 Vagrant Base Box from Scratch Using VMware Fusion

Published October 15, 2013


Vagrant makes it super easy to spin-up local virtual machines using VirtualBox or VMware Fusion. There are many Vagrant Boxes available to use immediately after downloading and installing Vagrant. However, I prefer to know exactly how my virtual machine image is created. This post will walk you through creating a CentOS 6.5 Vagrant Base Box from scratch using VMware Fusion 5 or 6.

Continue reading...

Dell iDRAC 7 Partially Working in OS X Mountain Lion with Java 7

Published October 1, 2013 • Updated May 13, 2017


While trying to connect to a Dell iDRAC 7 from OS X Mountain Lion with the Java 7 Runtime Environment installed you have probably received the very informative Connection failed error. Console.app shows nothing and you have to dig through ~/Library/Application\ Support/Oracle/Java/Deployment/log/ to find anything useful.

Continue reading...

Deploy Rackspace Private Cloud v4.1.x powered by OpenStack Grizzly with nova-network Using VirtualBox or VMware Fusion and Vagrant

Published September 29, 2013 • Updated June 14, 2014


Rackspace Private Cloud, and OpenStack on its own, can be a formidable set of software to install. Rackspace Private Cloud uses Chef to deploy OpenStack, and while Chef itself has a high learning curve, its use does make deploying OpenStack easier and more scalable.

Continue reading...

Setup the Transmission Web Interface Behind an Apache Reverse Proxy and SSL

Published September 29, 2013 • Updated December 19, 2017


By default, the transmission-daemon service uses its own web server and runs on port 9091. Assuming the service is running and the proper firewall holes have been made, the Transmission web interface can be accessed by going to http://transmission.example.com:9091. While remembering to append port 9091 is not difficult, it would be much cleaner to just go to http://transmission.example.com.

Continue reading...

Create a Ubuntu Server 12.04 LTS Vagrant Base Box from Scratch Using VMware Fusion

Published September 12, 2013


Vagrant makes it easy to spin-up local virtual machines using VirtualBox or VMware Fusion. There are many Vagrant Boxes available to use immediately after downloading and installing Vagrant. However, I prefer to know exactly how my virtual machine image is created. This post will walk you through creating a Ubuntu Server 12.04.4 LTS Vagrant Base Box from scratch using VMware Fusion 5 or 6.

Continue reading...

Create VMware Fusion PXE Boot Environment and Use Kickstart Profiles to Create Ubuntu Virtual Machines

Published September 5, 2013 • Updated May 15, 2017


It can be difficult to develop a PXE boot process if you don’t have actual servers to PXE boot. Most of us don’t have a lot of bare metal servers sitting around to use for PXE booting. Luckily, VMware Fusion provides the necessary features to PXE boot virtual machines.

Continue reading...

Create a Bootable Windows 7 USB Drive in Linux

Published June 10, 2013 • Updated January 10, 2019


There are a lot of guides on the web detailing how to create a bootable Windows 7 USB drive in Linux. However, many of those guides have missing steps, involve using Windows, or use programs not readily available on modern Linux distributions.

The following post will walk you through creating a bootable Windows 7 USB drive from some of the modern Linux distributions.

Continue reading...

Fedora 18 Uninstall AMD Catalyst Proprietary Driver

Published May 29, 2013 • Updated October 11, 2018


Installing a proprietary graphics driver installs a lot of packages and dependencies. In the event you want to uninstall the proprietary driver, sometimes it is not as straight forward as it should be because there is no documentation.

What follows are the steps I took to uninstall AMD’s proprietary Catalyst driver from Fedora 18.

Continue reading...

Linux Stream Videos and Pictures to an Apple TV with airstream and airimg

Published May 14, 2013 • Updated May 15, 2017


If you have ever used an Apple iPhone or Apple TV, you are probably familiar with AirPlay. AirPlay is a way to stream content to an AirPlay compatible device like an Apple TV; it is similar to Google’s Chromecast. However, if you are running a modern Linux distribution, you cannot easily stream anything using the AirPlay protocol. Luckily, an open source tool called airstream has been created to do just that.

Continue reading...

Red Hat Directory Server 9 Exception in thread main No fonts found

Published May 14, 2013 • Updated January 21, 2019


If you have just installed Red Hat Directory Server 9 on RHEL 6 with only the @Base package group, the java-1.6.0-openjdk package, and the redhat-ds package, and you are trying to open the Red Hat Identity Management Console through a forwarded SSH X session by running redhat-idm-console -a http://localhost:9830, you may encounter a Java stack trace.

Continue reading...

GNOME 3 Shell Customizations

Published May 6, 2013 • Updated May 13, 2017


A majority of the GNOME 3 Shell can be customized using Javascript. Some of these changes can be done through the default GNOME 3 GUI, but others require using a command line.

This post will be an ever growing list of GNOME 3 Shell customizations that require using a command line.

Continue reading...

Linux Restrict Server Login via LDAP hostObject objectClass and host Attribute

Published February 1, 2013 • Updated January 10, 2019


It is possible to restrict Linux server login via LDAP by using the hostObject objectClass and host attribute.

Each LDAP user that you want to restrict login access to should have the hostObject objectClass so the host attribute becomes available to that LDAP user. Each LDAP user will have as many host attributes as there are servers that user needs access to.

Continue reading...

Linux Compile skippy-xd from Source

Published January 8, 2013 • Updated May 14, 2017


In a previous post, I provided steps to install skippy: Linux software that provides OS X Expose-like functionality in a Linux distribution.

However, skippy is no longer in development and has been forked into a more advanced and modern Linux software called skippy-xd.

The following post will provide steps to compile, install, and use skippy-xd.

Continue reading...

OS X Flush DNS Cache

Published December 27, 2012


Mac OS X, now just OS X, seems to change the way the DNS cache is flushed every couple of releases.

Below are the various commands to flush the DNS cache from Mac OS X 10.4 Tiger to OS X 10.9 Mavericks.

Continue reading...

ejabberd mod_shared_roster with Proper Roster Names Setup

Published August 22, 2012 • Updated June 6, 2017


In a previous post, I detailed how to setup ejabberd’s mod_shared_roster module to automatically create shared rosters based on LDAP groups when users login.

However, if you integrate ejabberd with an LDAP server and mod_shared_roster, the user’s proper name will not be displayed unless mod_vcard_ldap is also setup.

The following post will detail what is needed to setup LDAP authentication and configure mod_vcard_ldap.

Continue reading...

Linux Rescan SCSI Bus

Published August 22, 2012 • Updated January 10, 2019


If you have added one to many disks to a Linux server or added partitions to an existing disk and the operating system has not yet recognized them, you might need to rescan the SCSI bus. You could simply reboot the Linux server, but that’s usually not an option for production systems.

Below are three different methods for rescanning SCSI devices that I have tested on RHEL 5 and RHEL 6.

Continue reading...

Linux Make ddclient Work with Multiple Namecheap Domains

Published August 22, 2012 • Updated February 7, 2019


Version 3.8.1 of ddclient and older will not be able to update multiple domain names with each domain name containing one to many hostnames.

For example, if you are trying to update domain names example.com and foobar.com along with their particular hostnames (@, www, or mail), ddclient will only update the first hostname it encounters for a domain name.

Continue reading...

ejabberd mod_shared_roster_ldap Setup

Published August 22, 2012 • Updated January 10, 2019


ejabberd is an extensible XMPP server that allows you to setup an internal chat server for your organization to communicate. It can be integrated with an LDAP server, such as OpenLDAP or Active Directory, to automatically create shared rosters based on LDAP groups when users login.

The following post will detail what is needed to setup a shared roster.

Continue reading...

Solaris Replicate ZFS Volume with zfs send and zfs receive

Published August 22, 2012 • Updated January 10, 2019


ZFS provides a mechanism to migrate or backup ZFS pools from one server to another using SSH.

For example, pretend you have a large ZFS pool to migrate from one server to another, but your maintenance window to perform the copy is very small. You could run the initial ZFS replication, which will take a considerable amount of time, then when your maintenance window opens, run the ZFS replication again to only copy everything that changed (the incrementals). This will take much less time and hopefully fit within your maintenance window.

The following commands show how to start the initial replication and then the replicate incrementals.

Continue reading...

Solaris Recreate Failed iSCSI Target Backed by Directory

Published August 22, 2012 • Updated May 31, 2014


Upon rebooting an Oracle Thumper 4500 at build SunOS 5.10 Generic_139556-08 i86pc i386 i86pc Solaris 10 509 s10x_u7wos_08 X86, the LUN information shown when running iscsitadm list target -v $TARGET was unknown and the Target name was truncated. The iSCSI initiator could connect to the iSCSI target but the disk would never mount. This particular Oracle server had not been patched in a while, and there was probably a patch available to fix this problem, but I wanted to detail the steps I took to recover the data.

Continue reading...