Building a self-contained, zero-dependency deployment with Ansible

Who am I ?

The plan for this talk

The problem

The constraints we had to solve for, which lead us to this talk.

How it works - high-level

From the user's perspective:

┌─────────────────────────────────────┐
│  Single executable file contains:   │
│                                     │
│  • Ansible + all dependencies       │
│  • Your playbooks & roles           │
│  • Any files you want to deploy     │
└──────────────┬──────────────────────┘
               │
               │  sudo ./self-contained-ansible-demo
               │
               ▼
┌─────────────────────────────────────┐
│  System configured!                 │
│  No python, no ansible, no deps     │
│  needed on target machine           │
└─────────────────────────────────────┘

And now... a demo!

Let's see the code that does that!

Other patterns you can use here

  • GNU sharutils - it removes the tar dependency, though it is trickier to work with!
  • there are a few projects that aim to package crun (up to 50 MB overhead from what I had seen). The resulting builds are quite unreliable and cannot mount volumes cleanly.

Special thank you to the folk over at https://juno-innovations.com, been a pleasure helping you out on this!

Q&A

Time-contingent bonus: Spinning up a full, multi-node, multi-tenant VDI, data-science&development platform

Shout out again to Juno :)

Where you can find this presentation and the code

https://github.com/danielpodwysocki/self-contained-ansible-demo

Where you can reach me

Ask me in-person after the talk - a little anti-scraping measure :)