Diving into DevOps - Proxmox SSL

Today I learned that for self-signed certs you need to add the root CA of your server to Vagrant’s cacert.pem

On my system this file is at /opt/vagrant/embedded/cacert.pem

The certificate for Proxmox’s self-signer root is at /etc/pve/pve-root-ca.pem

Just copy the contents of pve-root-ca.pem and paste it at the bottom of cacert.pem. This should resolve issues with Vagrant and self-signed certs.

References:

https://forum.proxmox.com/threads/vagrant-proxmox-issue.36204/

Diving into DevOps - Vagrancy

Ahh yes, the everything-as-code infrastructure dream. I have been familiar with the concepts for a long time, and know the names and functions of many tools. I can create infrastructure on AWS or Azure, I can grab magic ephemeral servers from Docker, etc. I have not had any opportunity to use any of this in a professional environment. The places where I have worked are very slow to adopt new methodologies and technologies. This has posed a bit of an issue for me, because I typically learn things on the job. I like the immediate and direct application of skill to keep the world from burning down.

So, I am playing with things from a book. DevOps for The Desperate by Bradley Smith, published by the fantastic No Starch Press. The book takes you through examples with Vagrant, Ansible, Docker, and Kubernetes. It’ s a bit of a crash course.

I ran into some challenges almost immediately. The examples are written primarily from the perspective of controlling VirtualBox with Vagrant. I am using an M1 based MacBook Air, which VirtualBox does not support. The book provides examples on how to use different providers with Vagrant, cool, I’m not totally dead in the water.

1
vagrant plugin install vagrant-parallels 

This command installs the plugin which adds Parallels as a provider for Vagrant. The catch is that only Parallels Pro supports being remotely controlled. I do not currently have Parallels Pro, but I do have a Proxmox server.

1
vagrant plugin install vagrant-proxmox

This is the point I learned of Ruby dependency hell.

The original GitHub repo for vagrant-proxmox (which contains the version which is on RubyGems) appears to be abandoned. It has out-of-date dependencies which Ruby’s package manager was unable to resolve. Fortunately someone else forked this repo and have kept the dependencies more up-to-date. So all I had to do was build the gem and install.

Right…

Right?

Well, no.

First I learned the version of Ruby that Apple ships with macOS is an outdated version packaged in a Universal Binary. This post explains everything. I was getting errors from the FFI library as described. I decided to deal with this by installing the latest version of Ruby from Brew

1
brew install ruby

And then update my PATH as described in the warnings from Brew so that my terminal grabs the right Ruby

1
echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc

So now I have the latest arm64 Ruby and it’s time to build that gem from the rakefile…

1
rake build

Which tells me…

1
2
3
“Could not find rake-10.5.0 in any of the sources

Run `bundle install` to install missing gems.”

Okay, great.

1
bundle install

Which tells me…

1
“minitest-5.14.0 requires ruby version ~> 2.2, which is incompatible with the current version, ruby 3.1.2p20”

I found a suggestion to delete Gemfile.lock, so I did and ran bundle install again.

1
2
3
4
5
6
7
8
9
“Bundler found conflicting requirements for the Ruby version:

  In Gemfile:

    Ruby

    vagrant (= 2.2.4) was resolved to 2.2.4, which depends on

      Ruby (~> 2.2, < 2.7)”

Okay, my installed version of Vagrant is 2.3.1 so maybe I just need to update the gemfile and the vagrant-proxmox.gemspec.

Success! Now to try rake build again

1
2
3
“rake aborted!

Gem::LoadError: You have already activated rake 13.0.6, but your Gemfile requires rake 10.5.0. Prepending `bundle exec` to your command may solve this.”

I updated the rake dependency in vagrant-proxmox.gemspec and it worked! I now have a gemfile!

Lets install it!

1
vagrant plugin install ./vagrant-proxmox-0.3.0.gem

Oh no I am going to implode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
“Vagrant failed to properly resolve required dependencies. These

errors can commonly be caused by misconfigured plugin installations

or transient network issues. The reported error is:

conflicting dependencies activesupport (~> 5.0) and activesupport (= 7.0.4)

  Activated activesupport-7.0.4

  which does not match conflicting dependency (~> 5.0)

  Conflicting dependency chains:

    activesupport (= 7.0.4), 7.0.4 activated

  versus:

    vagrant-proxmox (= 0.3.0), 0.3.0 activated, depends on

    activesupport (~> 5.0)

  Gems matching activesupport (~> 5.0):

    activesupport-5.2.8.1”

Yet again I updated the dependency in vagrant-proxmox.gemspec, then run bundle update, then rake build. And success!! I got the plugin to install!!

So this is my first crash course into dealing with Vagrant. From here I should be able to whip up a vagrant file to control my Proxmox server instead of VirtualBox or Parallels. I will write about this later.

My fork of vagrant-proxmox lives here: https://github.com/mikeOSX/vagrant-proxmox

References:

https://stackoverflow.com/questions/17028132/vagrant-install-plugin-from-github

https://www.ruby-lang.org/en/documentation/installation/#homebrew

https://github.com/lehn-etracker/vagrant-proxmox

https://betterprogramming.pub/ruby-on-apple-silicon-m1-macs-fb159849b2f5

There was nothing wrong with the CD

I’ve been frustrated with how we now access and consume media lately. I don’t think I am alone. We now all have subscriptions to multiple streaming services which nickel-and-dime us for media we used to purchase once and keep forever. I was once excited to go down this path; for a little bit of money every month I could have access to any media I wanted in a way that promised to be effortless. We are now maybe a decade into this new world and it’s not as shiny to me as it once was. We now deal with a larger number of services all taking their fee, and because they have implemented platform exclusivity you need multiple subscriptions. Have you ever signed up for a subscripton to watch one show, or listen to one band? I can understand, and have made, the financial reasoning for this. Pay to enjoy the media you want to, and cancel the service when you are done. This can be cheaper than buying blu-ray sets of a TV show, but may not be cheaper than buying a single movie on blu-ray or an album on CD. If you cancel the service, your access to that media is now gone. The experience is made fleeting. And, similar to the old world of cable subscription bundling, you are likely subsidizing a lot of garbage media. Netflix really made me angry with Cuties and Tiger King for example, because I knew that some fraction of the money I gave them went to support these things. We have really ended up back with the old model for TV, and the only thing we may have gained is choice in what we watch when.

I don’t really trust the personal cloud or remotely administtered media licenses either. The personal cloud has introduced more complication and confusion into my life. Instead of using a portable hard drive or something I now have to pick between providers and navigate each providers method of syncing and accessing those files and trust that something doesn’t go wrong or that the data is truly still mine. Remotely managed licenses are causing a good deal of headache to gamers because they have discovered that those licenses don’t always carry over to the new console, software glitches on the server side can cause games to become unavailable, download-only games can become delisted before you get around to buying and trying them, and you can’t just loan or resell your game easily like we could before. Things feel more complicated and less trustworthy.

The title of this post is “There was nothing wrong with the CD”, so perhaps I should talk about CDs. I’ve been buying CDs again lately, partly for nostalgia, and partly to revisit what we left behind. I really missed the record store experience, it is so fortunate they are still around. The social experience of digging through the bins with other people and the excitement when you find something you like. The tangible object, which we understand now is your license to that music, is a wonderful thing. New vinyl record collectors realized this joy a while ago resulting in an explosion of popularity for vinyl records (which unfortunately drove the prices up). The CD offers that same experience but in a smaller, more portable, and more durable form. The sound quality is excellent (and CD quality sound is still the standard), and storage can’t be simpler: Disc. Case. Shelf. Compatibility is simple, just put the disc in almost anything with an optical drive. You can loan a CD, you can resell it.

What was ever wrong with this? What was ever wrong with having a tangible object containing media that was simple to use and didn’t cost you money every month?

Something else I noticed with our vaporlike digital-only world that really bothers me is intentionality. I realized eventually that I was caring about music less. There was no elation when I got a new album, no enjoyment of what the artists came up with for the booklet design, and no real attention paid to new album releases. Music just became, well, a stream, when it used to be a monument of my life. Part of this is undoubtably because I am much older and much busier than I was in the CD’s golden age, but I do wonder how people who have grown up in the digital-only world feel about this. Do files on a filessytem generate these kinds of feelings in them? Does an endless algorithmically chosen stream of random music compare to that bookcase of CDs you chose because you really really like them? Do they ever wish they could just hand a CD to a friend instead of sending them some sharing link to an app you hope they have?

Right now, I’m enjoying my CD player and my slowly recovering stack of CDs. I don’t know how I am going to feel about this in a few years, but I know that we should think about how internet technologies change our lives even on a physical level. Right now I feel that things are more complicated, less tangible, less enjoyed, and less cherished.

“We are liiiivviing in a material world….”