<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Vagrant on Andrew Quinn&#39;s TILs</title>
    <link>https://til.andrew-quinn.me/tags/vagrant/</link>
    <description>Recent content in Vagrant on Andrew Quinn&#39;s TILs</description>
    <image>
      <title>Andrew Quinn&#39;s TILs</title>
      <url>https://til.andrew-quinn.me/papermod-cover.png</url>
      <link>https://til.andrew-quinn.me/papermod-cover.png</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 27 Sep 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://til.andrew-quinn.me/tags/vagrant/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Where is the DevOps for Yocto?</title>
      <link>https://til.andrew-quinn.me/posts/where-is-the-devops-for-yocto/</link>
      <pubDate>Sat, 27 Sep 2025 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/where-is-the-devops-for-yocto/</guid>
      <description>&lt;p&gt;The cozy world of DevOps has spoiled me with tools like Ansible,
Terraform, and Packer. In the situations where I have a Linux machine
already booted up, and sometimes already connected to the Internet, I
can make things really easy on myself by slinging these tools in my
usual way for repeatable, reproducible machines that may or may not come
with the attendant headaches of immutable infrastructure (sorry, Nix,
I&amp;rsquo;m not in love with you, I&amp;rsquo;m in love with the idea of you).&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>What scripting languages come out of the box on Debian 12?</title>
      <link>https://til.andrew-quinn.me/posts/what-programming-languages-come-out-of-the-box-on-debian-12/</link>
      <pubDate>Sun, 23 Jun 2024 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/what-programming-languages-come-out-of-the-box-on-debian-12/</guid>
      <description>&lt;p&gt;Poking around in a
&lt;a href=&#34;https://til.andrew-quinn.me/posts/the-unreasonable-effectiveness-of-vms-in-hacker-pedagogy/&#34;&gt;fresh VM in Vagrant&lt;/a&gt;,
I see&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;bash&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dash&lt;/code&gt;, a POSIX compliant shell linked under &lt;code&gt;sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;python3&lt;/code&gt;, 3.11.2 at the time of writing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;awk&lt;/code&gt;, specifically &lt;code&gt;mawk&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sed&lt;/code&gt;, if you count that (I do)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;perl&lt;/code&gt;, specifically Perl 5&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There may be others I missed.&lt;/p&gt;
&lt;p&gt;Why I&amp;rsquo;m curious: Knowing that a language is installed by default on the most
popular Linux distribution can simplify certain concerns considerably, which
are of special interest to
&lt;a href=&#34;https://til.andrew-quinn.me/posts/openbsd-the-computer-appliance-maker-s-secret-weapon/&#34;&gt;people who don&amp;rsquo;t work on Internet-connected boxes&lt;/a&gt;.
Knowing that Python/Perl is already on there means that,
provided your script only
relies on the standard library, you should be able to just &lt;code&gt;scp&lt;/code&gt; it over in a
pinch and have it &amp;ldquo;just work&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Quickstarts and Slowstarts</title>
      <link>https://til.andrew-quinn.me/posts/quickstarts-and-slowstarts/</link>
      <pubDate>Tue, 04 Jun 2024 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/quickstarts-and-slowstarts/</guid>
      <description>&lt;p&gt;A while back I stirred up some controversy on Hacker News
by talking about why I liked it when
&lt;a href=&#34;https://news.ycombinator.com/item?id=39882810&#34;&gt;tutorials take you from clean VM to working, installed software&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve since taken to calling this the &amp;ldquo;tutorial-in-a-box&amp;rdquo; method.
When I write them myself, I usually put them under the
header &lt;strong&gt;Slowstart&lt;/strong&gt;, a riff on the proverbial Quickstart.
Two examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://andrew-quinn.me/reposurgeon&#34;&gt;A gentle introduction to &lt;code&gt;reposurgeon&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;https://github.com/Selkouutiset-Archive/selkokortti?tab=readme-ov-file#slowstart&#34;&gt;Slowstart&lt;/a&gt; for &lt;code&gt;selkokortti&lt;/code&gt;, some flashcard generating software based around &lt;a href=&#34;https://hiandrewquinn.github.io/selkouutiset-archive/&#34;&gt;my Finnish language news archive&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The point of a Slowstart is to make it so that &lt;em&gt;even absolute beginners&lt;/em&gt;
can start to pick up some pointers about how people &amp;ldquo;in the know&amp;rdquo; of
your chosen software ecosystem actually get things done. Instead of a
Dockerfile or a shell script, you take them by the hand, spin up a
&lt;em&gt;totally fresh&lt;/em&gt; virtual machine from the ground up using something like
&lt;a href=&#34;https://www.vagrantup.com/&#34;&gt;Vagrant&lt;/a&gt;
or
&lt;a href=&#34;https://developer.fedoraproject.org/tools/virt-builder/about.html&#34;&gt;virt-builder&lt;/a&gt;,
and walk them through &lt;strong&gt;each and every command&lt;/strong&gt; they need to execute
in order to get to a working install.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>The unreasonable effectiveness of VMs in hacker pedagogy</title>
      <link>https://til.andrew-quinn.me/posts/the-unreasonable-effectiveness-of-vms-in-hacker-pedagogy/</link>
      <pubDate>Sun, 31 Mar 2024 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/the-unreasonable-effectiveness-of-vms-in-hacker-pedagogy/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a secret. If you have &lt;a href=&#34;https://www.vagrantup.com/&#34;&gt;Vagrant&lt;/a&gt; and &lt;a href=&#34;https://www.virtualbox.org/&#34;&gt;VirtualBox&lt;/a&gt; installed, and your colleague does too, then you can both bring up an near-totally identical blank slate Debian 12 Linux VM by running&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-1&#34;&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-2&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-2&#34;&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-3&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-3&#34;&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-4&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-4&#34;&gt;4&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-5&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-5&#34;&gt;5&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-6&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-6&#34;&gt;6&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir tutorial/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd tutorial/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vagrant init debian/bookworm64
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vagrant up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vagrant ssh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;. This works regardless of whether you or they are on Linux, Mac&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, BSD, or even Windows. (Through the magic of aliasing, &lt;code&gt;mkdir&lt;/code&gt; and &lt;code&gt;cd&lt;/code&gt; even work in PowerShell.)&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Vagrant lets you wrap VDI images</title>
      <link>https://til.andrew-quinn.me/posts/vagrant-lets-you-wrap-vdi-images/</link>
      <pubDate>Tue, 05 Dec 2023 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/vagrant-lets-you-wrap-vdi-images/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://teleste.com/&#34;&gt;At work&lt;/a&gt; I&amp;rsquo;m currently experimenting with using &lt;a href=&#34;https://www.vagrantup.com/&#34;&gt;Vagrant&lt;/a&gt; to automate getting an entire local network of our tiny embedded Linux systems running all on my local box.&lt;/p&gt;
&lt;p&gt;Alas! One of our devices uses a custom Yocto distribution! But wait, we have scripts to run these as VDI images, and apparently that&amp;rsquo;s enough for Vagrant to get to work!&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-1&#34;&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vagrant package --base my-virtual-machine
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Further reading materials for future me: &lt;a href=&#34;https://developer.hashicorp.com/vagrant/docs/boxes/base&#34;&gt;Creating a Base Box&lt;/a&gt;, and the &lt;a href=&#34;https://developer.hashicorp.com/vagrant/docs/boxes/format&#34;&gt;Box File Format&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
