Making computers work reliably still requires a dash of pixie dust.
Our vision has always been optimizing for the variety in subscale deployments. We want to automate physical infrastructure no matter what it is, where it lives, or what you run on top of it. So, instead of automating millions of the same thing in a few places, we started out with the premise of getting really good at automating millions of different things in thousands of places.
And we’ve been hard at work — almost six years, in fact — to be the best in the world at automating bare metal regardless of processor architecture, storage configuration, or networking environment.
That vision has informed everything we do. What better way to solve a thorny problem than by doing it tens of thousands of times per month for real customers?
That’s why we couldn’t have been happier when we finally "flipped the switch" on our repos and opened up our core provisioning technology to the community last month. You can check it out at tinkerbell.org. Consider this our open source ‘Hello World’.
It’s a Commodity, Right?
Servers are a bit like diamonds: they're hard to manufacture, the supply chain is tightly controlled by a select few, and — even though they’re expensive — most people treat them like they're basically the same. The term “commodity hardware” should be familiar to anyone in the internet infrastructure industry.
The reality is more nuanced than that, of course; and while diamonds may last forever, servers will definitely croak at inopportune times. How commoditized your hardware deployment truly is gets put to the test as soon as you need "one more." Hyperscale clouds have made this much easier; however, more than 50% of the world’s workload still resides outside of the major clouds.
We believe that offering a common set of provisioning tools that allows developers and enterprises to catalog and address their internet infrastructure in relevant, repeatable ways advances our core vision.
Our Superpower Isn’t Booting Computers
You could be forgiven for thinking that turning computers on and off with a proprietary piece of software is our unique value in the market. While we aim to be the best in the world at doing this, it’s not what our customers pay us for. They actually pay us for setting up and operating everything around it, namely:
- Asset Management
- Metering & Billing
- User Management
- API Integrations
- Global Network
Automating servers is important — even critical — but in our view, it’s not commercially valuable on its own. It’s like paying for an electric car before having a charging network: you’re not going to make it very far on your own.
We think our focus should remain on providing value around hardware lifecycling at scale, which ensures that we can contribute to and support Tinkerbell without any commercial conflicts.
And, there are some real benefits for everyone in open sourcing this part of our stack.
A Dash of PXE Dust
While the provisioning components of our cloud aren’t core business drivers, we do feel like there’s still value in the effort we’ve put into bootstrapping a variety of hardware over the years.
Since netbooting is at the heart of bringing up a machine in an idempotent manner, we’ve given it top billing. Our bootstrapper works on a variety of hardware — Intel & AMD (x86), armv7 & armv8, UEFI, BIOS, Dell, HPE, Quanta, Supermicro, Mellanox, Netronome, Micron, and Samsung, to name a few. How can we be so confident?
Because we do it every day. Many, many times every day.
But bootstrapping is only one piece of the puzzle. Under the hood, there are four microservices that take you from a powered off server to a high-level execution environment running your very special custom thingamabobber:
- boots — DHCP & iPXE Server
- OSIE — In-Memory Environment
- tink — Provisioning & Workflow Engine
- hegel — Metadata Service
Building in the spirit of Eric Raymond’s famous “17 Unix Rules” (e.g. build small, build modular, and build simple), we’ve crafted these composable programs to perform small but important tasks.
Put them together as your use case demands, or use them together to form a robust system for provisioning and lifecycling computers.
Why Is Open Source Such Critical Tech?
There’s a strong sense of open source altruism at Packet. Most of us have grown up in a world transformed by open software, and we see the value in transparency and community efforts. We have also built our core platform and business value on the backs of critical open source technologies, from Golang and Ruby to Kubernetes and Postgres.
Practically speaking, we need Tinkerbell to be open to others: there is simply too much variety in infrastructure. Crack open the door to any “at scale” platform or Enterprise and you’ll find literally millions of combinations of switches, disks, network devices, optics, and other components, let alone countless varieties of operating systems and installation processes.
If infrastructure is critical to your business, you probably have an opinion about how it should work — with your software, with your asset management systems, with your security policy, etc. A simple task like installing an operating system on a machine requires knowing everything about it.
Tinkerbell code is released under one of the most permissive open-source licenses: Apache 2.0. We want to empower all of you — home labbers, hardware manufacturers, and ISVs and MSPs alike — to expand upon what we’ve started to normalize how software interacts with your diverse hardware.
Aside from stalwarts like Cobbler, other projects that we respect include Digital Rebar, Plundr, Foreman, and Metal Stack. Alex Ellis has been curating a “Metal Awesome” repo if you want to see a more comprehensive list and add missing items.
We believe Tinkerbell will be valuable to the community because of the importance of what we’re doing every day: we’re operators at scale. We’re using this same technology each day in production, and the problem set is our focus.
In addition to our humble beginnings, we’re now a part of one of the most trusted names in the industry — Equinix — whose business philosophy is grounded in the success of others. Being a neutral and trusted partner for digital businesses is our single-minded purpose.
We hope that our collective battle scars, 2 a.m. on-call emergencies, and “it should just work, but it doesn’t” hardware challenges are something that others can stand on. We also hope that our commitment to growing a global bare metal platform at Equinix provides you the confidence to invest alongside us.
What’s Next for Tinkerbell?
Open source is about more than changing a setting on GitHub. It’s about ongoing investment, listening to the community, and building something valuable together.
Over the past few weeks we’ve reached out and asked our friends Alex Ellis, Kinvolk and Container Solutions to provide us with fresh (and critical) eyes. This builds upon formal work we've done with the team at Infracloud, whose open-source expertise we leaned upon over the last six months to help bring us to this point. We’ve launched a website and started the long journey towards what we expect to be useful documentation and examples.
Already people are doing great things — automating Raspberry Pis, installing Kubernetes on their homelab setups, and, of course, finding a lot of areas for improvement.
Tinkerbell was originally built (and rebuilt!) for use cases defined at Packet. Like any other organization, we have our own point of view and priorities, and those are reflected in our code. Opening it up has invited others to poke around and prod at our work, and challenge our assumptions. We’re loving it, and we welcome your comments, questions, PRs, and Twitter rants.
We hope you accept this invitation to contribute back to the community, and help us with our mission of making infrastructure a competitive advantage for more and more businesses.
Interested in engaging? Want to talk about BMCs, UEFI, TPM, boot order, or network bring-up? We’re all ears. Join us on Slack and look for the #tinkerbell channel.