Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ignition Illustrated: The CoreOS node provisioner

Ignition Illustrated: The CoreOS node provisioner

BayLISA meetup, Groupon, Inc: http://www.meetup.com/BayLISA/events/231269769/

Josh Wood

June 16, 2016
Tweet

More Decks by Josh Wood

Other Decks in Technology

Transcript

  1. Josh Wood - DocOps - CoreOS @joshixisjosh9 | [email protected] |

    coreos.com/docs Ignition Illustrated: The CoreOS provisioner
  2. We’re hiring in all departments! Email: [email protected] Positions: coreos.com/ careers

    90+ Projects on GitHub, 1,000+ Contributors OPEN SOURCE CoreOS.com - @coreoslinux - github/coreos Secure solutions, support plans, training + more ENTERPRISE [email protected] - tectonic.com - quay.io CoreOS Runs the World’s Containers
  3. Early-boot provisioning utility - for clusters at scale Set up

    machine given a configuration Atomic: Boot or die! Infrastructure must be dynamic; immutable by version CoreOS Ignition
  4. Runs during the first boot only The clear distinction: Ignition

    is not config management Static configuration Written in Go - self-contained; community; CoreOS fit Configuration specification and JSON How is it different than CloudInit?
  5. CloudInit runs before networkd... ...so it can’t start services that

    depend on the network Ignition runs early configures networkd with the unit interface… ...and services with systemd units, then pivots “Let systemd do it.” How is it different than CloudInit (2)?
  6. systemd dependency tree, knowledge, tools, community… systemd is CoreOS service

    management Atomic provisioning (“Don’t reconfigure. Reprovision.”) Static config - no “2-stage cloud-config” invoking a sh script Same semantics across environments Why use Ignition?
  7. Relatively easy to read (well, ok…) Machine oriented, machine legible,

    machine generated Difficult to write - let’s generate and validate it Easy to generate - wide language and library support But why JSON?!?
  8. Storage - disks, partitions, md (RAID), file systems systemd &

    networkd units - services and networks - configure etcd, kubelet Users and groups - ssh and keys Remote configs - HTTP, validate a sha for the target What can Ignition do?
  9. Userspace Bootload Early Userspace Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  10. Early Userspace Userspace Bootload Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  11. Early Userspace Userspace Bootload Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  12. Early Userspace Userspace Bootload Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  13. Userspace Bootload Early Userspace Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  14. Userspace Bootload Early Userspace Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  15. Userspace Bootload Early Userspace Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  16. Userspace Bootload Early Userspace Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  17. Userspace Bootload Early Userspace Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  18. Early Userspace Userspace Bootload Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  19. Early Userspace Userspace Bootload Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  20. Early Userspace Userspace Bootload Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  21. Early Userspace Userspace Bootload Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  22. Early Userspace Userspace Bootload Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  23. Early Userspace Userspace Bootload Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  24. Early Userspace Userspace Bootload Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  25. Userspace Bootload Early Userspace Boot Process Ignition coreos-m etadata m

    ulti-user journald netw orkd GRUB etcd pivot netw orkd
  26. "disks": [ { "device": "/dev/vdb", "wipeTable": true, "partitions": [{ "label":

    "raid.1.1" }] }, { "device": "/dev/vdc", "wipeTable": true, "partitions": [{ "label": "raid.1.2" }] } ] Demo
  27. "disks": [ { "device": "/dev/vdb", "wipeTable": true, "partitions": [{ "label":

    "raid.1.1" }] }, { "device": "/dev/vdc", "wipeTable": true, "partitions": [{ "label": "raid.1.2" }] } ] Demo
  28. "disks": [ { "device": "/dev/vdb", "wipeTable": true, "partitions": [{ "label":

    "raid.1.1" }] }, { "device": "/dev/vdc", "wipeTable": true, "partitions": [{ "label": "raid.1.2" }] } ] Demo
  29. "disks": [ { "device": "/dev/vdb", "wipeTable": true, "partitions": [{ "label":

    "raid.1.1" }] }, { "device": "/dev/vdc", "wipeTable": true, "partitions": [{ "label": "raid.1.2" }] } ] Demo
  30. "disks": [ { "device": "/dev/vdb", "wipeTable": true, "partitions": [{ "label":

    "raid.1.1" }] }, { "device": "/dev/vdc", "wipeTable": true, "partitions": [{ "label": "raid.1.2" }] } ] Demo
  31. "disks": [ { "device": "/dev/vdb", "wipeTable": true, "partitions": [{ "label":

    "raid.1.1" }] }, { "device": "/dev/vdc", "wipeTable": true, "partitions": [{ "label": "raid.1.2" }] } ] Demo
  32. "disks": [ { "device": "/dev/vdb", "wipeTable": true, "partitions": [{ "label":

    "raid.1.1" }] }, { "device": "/dev/vdc", "wipeTable": true, "partitions": [{ "label": "raid.1.2" }] } ] Demo
  33. "disks": [ { "device": "/dev/vdb", "wipeTable": true, "partitions": [{ "label":

    "raid.1.1" }] }, { "device": "/dev/vdc", "wipeTable": true, "partitions": [{ "label": "raid.1.2" }] } ] Demo
  34. "filesystems": [ { "mount": { "device": "/dev/md/data", "format": "ext4", "create":

    { "force": true } }, "name": "our filesystem" } ] Demo
  35. "filesystems": [ { "mount": { "device": "/dev/md/data", "format": "ext4", "create":

    { "force": true } }, "name": "our filesystem" } ] Demo
  36. "filesystems": [ { "mount": { "device": "/dev/md/data", "format": "ext4", "create":

    { "force": true } }, "name": "our filesystem" } ] Demo
  37. "filesystems": [ { "mount": { "device": "/dev/md/data", "format": "ext4", "create":

    { "force": true } }, "name": "our filesystem" } ] Demo
  38. "filesystems": [ { "mount": { "device": "/dev/md/data", "format": "ext4", "create":

    { "force": true } }, "name": "our filesystem" } ] Demo
  39. "filesystems": [ { "mount": { "device": "/dev/md/data", "format": "ext4", "create":

    { "force": true } }, "name": "our filesystem" } ] Demo
  40. { "ignition": { "version": "2.0.0", "config": { "replace": { "source":

    "http://192.168.179.1/demo.ign", "verification": { "hash": "sha512-98d…" } } } } } Demo
  41. • Bare metal and PXE • EC2 • Azure •

    Google GCP GCE • VMware • coreos.com/ignition/docs/latest/supported-platforms. html Where? - Platforms and providers
  42. Config verification/encryption/transport sec (HTTPS) Config generation tooling (YAML → Ignition.json)

    More supported platforms Your ingenious contributions! What’s next?
  43. Thank you! Josh Wood @joshixisjosh9 | [email protected] | github.com/joshix We’re

    hiring in all departments! Email: [email protected] Positions: coreos.com/ careers