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



converge is an an easy and powerful configuration management tool that can scale from managing Raspberry Pi devices and developer desktops all the way up to deploying complex applications onto clusters of servers.

Steven Borrelli

October 20, 2016

More Decks by Steven Borrelli

Other Decks in Technology


  1. A B O U T https://aster.is Founded 2014 Based in

    St. Louis Experts in: Cloud, Containers, DevOps
  2. D E V E LO P E R D E

    S K TO P converge ad-hoc solutions (npm, brew, etc.) DevOps tools currently not used Need to install lots of tools & run docker containers
  3. easy for developers converge plan build-env.hcl converge apply —param masters=3

    etcd.hcl 11mb binary (cli + modules + agent) converge start with a single file
  4. simple configuration converge param "image-tag" { default = "1.10-alpine" }

    docker.image "nginx" { name = "nginx" tag = "{{param `image-tag`}}" timeout = "60s" } docker.container "nginx" { name = "nginx-server" image = "nginx:{{lookup `docker.image.nginx.Tag`}}" force = "true" ports = ["80"] env { "CONVERGE" = "AWESOME" } }
  5. easy to share embed converge file with source code converge

    publish via http, s3 wrap existing scripts
  6. C O N F I G U R I N

    G S E RV E R S converge Integrate Server Configuration With Cloud Resources Configuration as a Microservice Deploy and Manage Container Stacks (Kubernetes, Swarm, etc.)
  7. D O C K E R E L K D

    E M O integrated with terraform spin up clusters with one command
  8. api first via all communication (including cli) is via grpc

    devices look like another microservice http/2 bi-directional streaming converge
  9. I N S TA L L S converge Confirming patches

    and security configuration IoT Devices Autoscaling groups
  10. verify modules via pgp add trusted keys and verify modules

    converge converge key trust samples/pubkey.gpg converge plan —verify-modules samples/ basic.hcl
  11. converge file.directory "data" { destination = "/var/lib/influxdb" } module "docker/container.hcl"

    "influx" { params { name = "influxdb" image = "influxdb" tag = "1.0.0-rc1" ports = ["8086:8086"] volumes = ["/var/lib/influxdb:/var/lib/influxdb"] } depends = ["file.directory.data"] } wait for a directory & pass parameters into modules
  12. conditional task execution converge switch "deps" { case "eq `{{platform.LinuxDistribution}}`

    `centos`" "centos" { package.rpm "deps" { name = "coreutils gcc git graphviz make tar unzip which" state = "present" } } case "eq `{{platform.LinuxDistribution}}` `debian`" "debian" { task "package-install" { check = "dpkg -s {{param `name`}} >/dev/null 2>&1" apply = "apt-get -y install {{param `packages`}}" } } }
  13. wait for a file to be present converge wait.query "unzip-check"

    { check = "unzip -v" interval = "2s" max_retry = 60 grace_period = "3s" interpreter = "/bin/bash" } task "protoc-extract" { check = "[[ -f /usr/local/bin/protoc ]]" apply = "unzip /tmp/protoc-{{param `protoc-version`}}-linux- x86_64.zip" dir = "/usr/local" interpreter = "/bin/bash" depends = ["wait.query.unzip-check"] }
  14. I M AG E C R E D I T

    S Arch: Logan Troxel https://unsplash.com/search/arch?photo=DsQmBlby Arch Tram: https://upload.wikimedia.org/wikipedia/commons/8/8f/ Gateway_Arch_tram_car.JPG Brooklyn Bridge: Vita Vilcina https://unsplash.com/search/wires? photo=0G1r-Cg0zS8 Typewriter: Florian Klauer https://unsplash.com/search/typewriter? photo=mk7D-4UCfmg Tower: Richard Hinds https://unsplash.com/search/tower? photo=TH8a7L1HJXA Stars: Dimi Pigoff https://unsplash.com/new?photo=6y6D3S_sEjw