Slide 1

Slide 1 text

@ZEHICLE #IaC But… Infrastructure as Code! Send in our robot overlords, my job here is done. WATCH THE VIDEO: https://youtu.be/oAUWKro093M

Slide 2

Slide 2 text

@ZEHICLE #IaC cat <

Slide 3

Slide 3 text

@ZEHICLE #IaC IaC Promise IaC Vendors IaC Reality Infrastructure as Code is Aspirational

Slide 4

Slide 4 text

@ZEHICLE #IaC Rob Hirschfeld CEO & Co-Founder RackN & Digital Rebar Why do we care about IaC? To fix bare metal automation, we had to accept that every data center is a snowflake. So we needed to make our automation simple, modular and portable. Simply put - we had to build an IaC platform: Digital Rebar

Slide 5

Slide 5 text

@ZEHICLE #IaC IaC Dev Starts from Application Works Down Relies heavily on Infrastructure Platforms IaC Ops Starts from Infrastructure Works Up Drives to Platform as a Service vs

Slide 6

Slide 6 text

@ZEHICLE #IaC IaC Dev IaC Ops vs

Slide 7

Slide 7 text

@ZEHICLE #IaC IaC is combines SIX themes 1 Programmatic Config Infrastructure as Code YAML!

Slide 8

Slide 8 text

@ZEHICLE #IaC IaC is combines SIX themes 1 Programmatic Config Infrastructure as Code, this is I YAML! 2 Dynamic Infrastructure API driven Infrastructure Cloud, IaaS, Kubernetes

Slide 9

Slide 9 text

@ZEHICLE #IaC IaC is combines SIX themes 1 Programmatic Config Infrastructure as Code, this is YAML! 2 Dynamic Infrastructure API driven Infrastructure Cloud, IaaS, Kubernetes 3 Desired State Engine Platform as a Service Kubernetes, Rebar, Terraform

Slide 10

Slide 10 text

@ZEHICLE #IaC IaC is combines SIX themes 1 Programmatic Config Infrastructure, this is IaC YAML! 2 Dynamic Infrastructure API driven Infrastructure Cloud, IaaS, Kubernetes 3 Desired State Engine Platform as a Service Kubernetes, Rebar, Terraform 4 Deploy from Source Ctrl Immutability GitOps, Dockerfile, Image Deploy

Slide 11

Slide 11 text

@ZEHICLE #IaC IaC is combines SIX themes 1 Programmatic Config Infrastructure, this is IaC YAML! 2 Dynamic Infrastructure API driven Infrastructure Cloud, IaaS, Kubernetes 3 Desired State Engine Platform as a Service Kubernetes, Rebar, Terraform 4 Deploy from Source Ctrl Immutability GitOps, Dockerfile, Image Deploy 5 Composable Automation Modular Building Blocks Ansible Playbooks, Chef Recipes, Puppet Modules

Slide 12

Slide 12 text

@ZEHICLE #IaC IaC is combines SIX themes 1 Programmatic Config Infrastructure, this is IaC YAML! 2 Dynamic Infrastructure API driven Infrastructure Cloud, IaaS, Kubernetes 3 Desired State Engine Platform as a Service Kubernetes, Rebar, Terraform 4 Deploy from Source Ctrl Immutability GitOps, Dockerfile, Image Deploy 5 Composable Automation Modular Building Blocks Ansible Playbooks, Chef Recipes, Puppet Modules 6 CI/CD Pipeline Iterative Dev to Prod Jenkins, Gitlab, Travis

Slide 13

Slide 13 text

@ZEHICLE #IaC IaC: bottom of the automation hierarchy 1 1 Programmatic Config 2 2 Dynamic Infrastructure 3 3 Desired State Engine 4 4 Deploy from Source Ctrl 5 5 Composable Automation 6 6 CI/CD Pipeline

Slide 14

Slide 14 text

@ZEHICLE #IaC Terraform 1 Programmatic Config 2 Dynamic Infrastructure 3 Desired State Engine 4 Deploy from Source Ctrl 5 Composable Automation 6 CI/CD Pipeline

Slide 15

Slide 15 text

@ZEHICLE #IaC Digital Rebar 1 Programmatic Config 2 Dynamic Infrastructure 3 Desired State Engine 4 Deploy from Source Ctrl 5 Composable Automation 6 CI/CD Pipeline

Slide 16

Slide 16 text

@ZEHICLE #IaC So is IaC the right term? No. What about SDx or SDDC? They are co-opted for IaaS.

Slide 17

Slide 17 text

@ZEHICLE #IaC Continuously Integrated Data Center (CI DC)

Slide 18

Slide 18 text

@ZEHICLE #IaC CI DC Thinking: Digital Rebar

Slide 19

Slide 19 text

@ZEHICLE #IaC Programmatic Config (#1): Golang Templates #!/usr/local/bin/env bash # Helper to setup DRP tasks for other templates {{ if .ParamExists "rs-debug-enable" }} {{ if eq (.Param "rs-debug-enable") true }} RS_DEBUG_ENABLE="{{.Param "rs-debug-enable"}}" set -x {{ end }} {{ end }} [[ $RS_ENDPOINT ]] || export RS_ENDPOINT="{{.ApiURL}}" [[ $RS_UUID ]] || export RS_UUID="{{.Machine.UUID}}" Scripts, Kickstarts, Configs... Simple Variable Substitution Value Existence Tests Conditional Logic Built in variables

Slide 20

Slide 20 text

@ZEHICLE #IaC Dynamic Infra (#2): Shared System State Digital Rebar Platform State API Machine + Agent Machine + Agent CLI Transitory Connections Persistent Connections Web UX PXE DHCP

Slide 21

Slide 21 text

@ZEHICLE #IaC Dynamic Infra (#2): Shared System State Digital Rebar Platform State API Machine + Agent Machine + Agent CLI Transitory Connections Persistent Connections Web UX Ops Systems ● Ansible Tower ● BMC / IPMI ● DNS ● Active Directory ● Clouds ● CMDB & Terraform Clients PXE DHCP ● Ansible ● Terraform ● K8s Cluster API

Slide 22

Slide 22 text

@ZEHICLE #IaC Configure Reboot Image Update Inventory Desired State (#3): Workflow Discover Boot 1. User Asks for Target Configuration 2. System Builds Task List 3. System Orchestrates Tasks

Slide 23

Slide 23 text

@ZEHICLE #IaC Configure Reboot Image Update Inventory Desired State (#3): Workflow Discover Boot Input Param Read Param Output Param External Data

Slide 24

Slide 24 text

@ZEHICLE #IaC Composable (#4): Workflow > Stages > Tasks ESX Install Stage Discover Task Netboot Task Inventory Task BIOS Update Stage ESX Install Task Weasel Task Net Conf Workflow

Slide 25

Slide 25 text

@ZEHICLE #IaC Composable (#4): Workflow > Stages > Tasks Task Linux RAMdisk Task Inventory Task Weasel Task Net Conf Netboot Golang Runner Redfish Python Runner BIOS Update Task Reboot

Slide 26

Slide 26 text

@ZEHICLE #IaC Catalog Content Custom Content Composable (#4): Workflow > Stages > Tasks Windows CI/CD Stage Discover Task Verify System Task BIOS Update Task SoR Update Stage Image Deploy Task Write Image Task Post Install Workflow

Slide 27

Slide 27 text

@ZEHICLE #IaC Deploy from Source (#5): Content Packs State API Git CLI Bundle Composable Parts Content Pack DRP

Slide 28

Slide 28 text

@ZEHICLE #IaC Deploy from Source (#5): Content Packs State API Git CLI Bundle State API Composable Parts AWS S3 Content Pack Catalog Dev Prod

Slide 29

Slide 29 text

@ZEHICLE #IaC Pipeline (#6): Cloud APIs & Resource Pools Digital Rebar Platform State API Machines Machines PXE DHCP Machines Machines Machines Machines Pool A Pool B CI Pipeline Build Image Run Tests Get Results

Slide 30

Slide 30 text

@ZEHICLE #IaC CI DC with Digital Rebar 1 Programmatic Config 2 Dynamic Infrastructure 3 Desired State Engine 4 Deploy from Source Ctrl 5 Composable Automation 6 CI/CD Pipeline

Slide 31

Slide 31 text

@ZEHICLE #IaC Thank you! Rob Hirschfeld - @zehicle https://rebar.digital https://rackn.com