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

Building up to Infrastructure as Code?

Rob Hirschfeld
September 17, 2019

Building up to Infrastructure as Code?

Explores the definition of Infrastructure as Code as build behind RackN Digital Rebar archtiecture.

Presented Sept 2019 at Cloud Austin.

Topics covered include: Infrastructure as Code, CI/CD, IaaS, Terraform, Intent Driven Automation, Immutable Infrastructure

Live Presentation: https://youtu.be/oAUWKro093M

Rob Hirschfeld

September 17, 2019
Tweet

More Decks by Rob Hirschfeld

Other Decks in Technology

Transcript

  1. @ZEHICLE #IaC But… Infrastructure as Code! Send in our robot

    overlords, my job here is done. WATCH THE VIDEO: https://youtu.be/oAUWKro093M
  2. @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
  3. @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
  4. @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
  5. @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
  6. @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
  7. @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
  8. @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
  9. @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
  10. @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
  11. @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
  12. @ZEHICLE #IaC So is IaC the right term? No. What

    about SDx or SDDC? They are co-opted for IaaS.
  13. @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
  14. @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
  15. @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
  16. @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
  17. @ZEHICLE #IaC Configure Reboot Image Update Inventory Desired State (#3):

    Workflow Discover Boot Input Param Read Param Output Param External Data
  18. @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
  19. @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
  20. @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
  21. @ZEHICLE #IaC Deploy from Source (#5): Content Packs State API

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

    Git CLI Bundle State API Composable Parts AWS S3 Content Pack Catalog Dev Prod
  23. @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
  24. @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