MacBook Environment Setup for Packer using Ansible Remote

So I am late to the Packer party for my organization. I have been watching the products that came out of Hashi Corp and have used some in a past life (Vagrant). In my current role, I had an organization need to create RHEL 7 templates directly from the product iso. This ensures security compliance with minimal historical cruft that our images collect over time due to system updates. I had a need to install the latest packages and tools for team members to manage those systems after they are built. Enter Packer!!! Before, we get started this post will cover some MacBook environment setup.

First, you need to have Homebrew installed. I will make a post about Homebrew when I have some additional time but for now, just check out the site or just run the following command on your MacBook preferred terminal application.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Use some Homebrew commands to verify your Homebrew installation.

$ brew --version
Homebrew 2.1.10
Homebrew/homebrew-core (git revision 13869; last commit 2019-08-22)
Homebrew/homebrew-cask (git revision cb8b32; last commit 2019-08-22)

$ brew update
...
citus                        goofys                       logtalk                      qemu                         wtfutil
ckan                         goreleaser                   lz4                          qpid-proton                  wxmaxima
clamav                       gradle                       mailutils                    rebar3                       xxhash
clojure                      grafana                      mdds                         rke                          yank
cockroach                    grpc                         minio                        roswell                      ykman
contentful-cli               gtk-doc                      minio-mc                     rust                         youtube-dl
cpl                          h2o                          mkcert                       s-nail                       zelda-roth-se
cromwell                     h3                           mkvtoolnix                   saxon                        zsdx
crowdin                      hapi-fhir-cli                mmark                        scala@2.12                   zstd
crystal                      haproxy                      mosquitto                    schismtracker
deno                         hashcat                      mrboom                       serverless
devspace                     helmfile                     mycli                        skaffold
diffoscope                   helmsman                     n                            sonobuoy

After brew is up and running use it to install Packer.

brew install packer

Verify your packer installation completed successfully using the Packer command.

$ packer --version
1.4.2

Instead of the packer provided binary for creating images to be used in our VMware environment, we are using the packer-builder-vsphere, which is provided by Jetbrains. You can find instructions for plugin installation on the Packer docs site. In my instance, I have stored the plugin in the same directory as my Packer code.

  1. Download the plugin from the release page.
  2. Rename the plugin removing your version of the os. For example the release download will be packer-builder-vsphere-iso.macos modify it to packer-builder-vsphere-clone
  3. Add execute rights to the plugin chmod +x packer-builder-vsphere-clone

Next, you have to install Ansible. The proper way to use python packages is to install them in an isolated virtual space, but that’s a completely different post. Once it’s complete, I will reference it. At this time quickly install it using Homebrew.

$ brew install ansible 

Check your installation using ansible.

$ ansible --version
ansible 2.5.0

So I have recently just committed to blogging regularly, and I don’t want to have ungodly long articles. Given that I am going to make several additional posts on this subject which will review the good bits now that I have a reference point for all the lame environment set up stuff 🙂