Mitchell Hashimoto

Founder of HashiCorp, Creator of Vagrant, Packer, Serf, Consul. O'Reilly Author, Developer Obsessed with Automation.

Read this first

Comparing Filesystem Performance in Virtual Machines

For years, the primary bottleneck for virtual machine based development environments with Vagrant has been filesystem performance. CPU differences are minimal and barely noticeable, and RAM only becomes an issue when many virtual machines are active[1]. I spent the better part of yesterday benchmarking and analyzing common filesystem mechanisms, and now share those results here with you.

I’ll begin with an analysis of the results, because that is what is most interesting to most people. The exact method of testing, the software used, and the raw data from my results can be found below this analysis.

In every chart shown below, we test reading or writing a file in some way. The total size of the file being written is fixed for each graph. The Y axis is the throughput in KB/s. The X axis is “record size” or the size of the chunks of data that are being read/written at...

Continue reading →


Packer

For the past two months, I’ve been heads down working on something new. There is still a lot of work left, but I believe it’s time to show everyone what I’ve been up to. Today, I’m announcing Packer: an open source tool for creating machine images for multiple platforms.

packer_banner.png

Packer is an open source tool for creating machine images, such as AMIs, VirtualBox images, Vagrant boxes, etc. Packer uses a single portable input format – a template – to generate the images for multiple platforms in parallel, so you can create identical AMIs, VMware machines, etc. all at once. This unlocks a lot of interesting use cases.

Machine images are a powerful concept, but the existing tooling around them hasn’t caught up to the agile workflow that modern cloud infrastructures enable. Packer makes machine image creation automated, fast, and integrates with all the...

Continue reading →


The Tao of Vagrant

Before even installing Vagrant or seeing how it works, it is important to understand the high-level workflow of Vagrant in an actual working environment. These principles are collectively known as the “Tao of Vagrant.” The following is an excerpt from Vagrant: Up and Running.

In a world with Vagrant, developers can check out any repository from version control, run vagrant up, and have a fully running development environment without any human interaction. Developers continue to work on their own machine, in the comfort of their own editors, browsers, and other tools. The existence of Vagrant is transparent and unimportant in the mind of the developer. Vagrant is the workhorse that creates consistent and stable development environments.

System operations engineers work on systems automation scripts, again in their own editors and tools on their machine. When they’re...

Continue reading →


Automation Obsessed

Someone asked me recently to share some previous work I had done. As I looked back at my personal history, and reflected on what I’ve done successfully, it was clear to me that I’m definitely working on things I’m meant to be working on. Automation has been my passion since the very beginning.

I started programming because I wanted to cheat Neopets. I played Neopets daily, and I was frustrated that I would do the same things daily for hours for the same measly amount of Neopoints (the virtual currency used by Neopets). I learned Visual Basic with the goal of writing a program to do these tasks for me. I succeeded at this, and was soon making my measly amount of Neopoints without any human interaction.

I found more things to automate, realizing that computers can do tasks much more efficiently than humans, thus unlocking opportunities that didn’t exist before. I...

Continue reading →


Abandoning RubyGems

Vagrant 1.1+ no longer supports RubyGems as an installation method. Instead, you must install Vagrant 1.1+ using pre-made packages or installers. For folks used to the gem-based installation, this has caused a mixture of confusion and disdain. In this post, I enumerate my reasons for abandoning RubyGems, and why it is better for the Vagrant community long-term.

I initially released Vagrant as a RubyGem over 3 years ago. Vagrant is written in Ruby, and at the time I was already comfortable with making RubyGems, so I decided it was a natural distribution mechanism.

I don’t regret this decision for a moment. The Ruby community is very open to cutting edge technologies, and I think that distributing as a RubyGem improved my initial adoption of the project.

Since then, however, I’ve grown and learned that RubyGems is no longer the best choice, for many reasons.

In this post,...

Continue reading →


APPLE: My Key to Success

No, not the company or the fruit. APPLE is an acronym ingrained into every Apple store employee before they ever even step on the retail floor. And it has continued to guide me ever since.

APPLE:

  • Approach customers with a personalized warm welcome
  • Probe politely to understand all the customer’s needs
  • Present a solution for the customer to take home today
  • Listen for and resolve any issues or concerns
  • End with a fond farewell and an invitation to return

To date, I’ve had three successful side projects. I attribute a large portion of each of their successes to APPLE.

My first successful side project turned into a healthy passive income business which I later sold to self-fund HashiCorp. The second side project was Vagrant, a popular tool used by thousands of companies and also now my full time job. The third project, IRCRelay, was a weekend project I worked on with Jack Pearkes...

Continue reading →


The New Normal

The “new normal” is what I’ve named a phenomenon I’ve seen multiple times in my life. It’s an event where your perception of normality is changed by the people surrounding you. Consequently, your ambitions and chance of achieving those ambitions change as well. Actively seeking a new normal can steer you in a direction you never thought you’d take.

Looking back, four critical events of acquiring a “new normal” define my life today. They can be summed up as: serendipity, opportunity, choice, and confidence.

Surprisingly, I’ve found that many of my friends appear to be following a similar pattern, even in non-technical fields. Contemplating these moments of achieving a “new normal” is a fun thought experiment to see how you’ve grown and steer where you’re going next.

Event One: Serendipity

My first critical...

Continue reading →