Slide 1

Slide 1 text

Steven Borrelli Asteris, LLC @stevendborrelli converge

Slide 2

Slide 2 text

https://aster.is Founded 2014 Based in St. Louis Experts in: Cloud, Containers, DevOps

Slide 3

Slide 3 text

T R E N D S converge distributed teams cloud microservices containers technology people

Slide 4

Slide 4 text

converge

Slide 5

Slide 5 text

packages user/group management docker containers & images systemd logical volumes converge manages systems files, directories, etc.

Slide 6

Slide 6 text

easy to use converge plan build-env.hcl converge apply —param masters=3 etcd.hcl 11mb binary (cli + modules + agent) converge start with a single file

Slide 7

Slide 7 text

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 { "HOSTNAME" = “http://converge.aster.is“ } }

Slide 8

Slide 8 text

C O N F I G U R I N G C LU S T E R S converge Deploy and Manage Distributed Applications (Kubernetes, Swarm, Consul, etc.)

Slide 9

Slide 9 text

uses terraform provisioner spin up clusters with one command https://github.com/asteris-llc/terraform-provisioner-converge converge https://asciinema.org/a/day0xarm3i95jgodmcsapp40u replay: D O C K E R S WA R M

Slide 10

Slide 10 text

D O C K E R S WA R M converge dependency graph

Slide 11

Slide 11 text

creating graphs visualize install tasks converge converge graph converge.hcl graphviz output

Slide 12

Slide 12 text

D O C K E R S WA R M converge wait dependency

Slide 13

Slide 13 text

graph benefits automatic dependency generation pinpoint failures parallel execution converge

Slide 14

Slide 14 text

examples

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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`}}" } } }

Slide 17

Slide 17 text

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"] }

Slide 18

Slide 18 text

U N AT T E N D E D I N S TA L L S converge pull files from http run converge via cron Autoscaling groups, IoT devices

Slide 19

Slide 19 text

verify modules via pgp add trusted keys and verify modules converge converge key trust samples/pubkey.gpg converge plan —verify-modules samples/ basic.hcl

Slide 20

Slide 20 text

D E V E LO P E R S converge ad-hoc solutions (npm, brew, etc.) DevOps tools currently not used Need to install lots of tools & run docker containers

Slide 21

Slide 21 text

easy to share embed converge files with source code converge publish via http, s3 wrap scripts (shell, ruby, etc.)

Slide 22

Slide 22 text

api first via all communication (including cli) is via grpc devices look like another microservice http/2 bi-directional streaming converge

Slide 23

Slide 23 text

summary composable modules visualize tasks converge single binary deployment

Slide 24

Slide 24 text

Thanks! converge.aster.is github.com/asteris-llc/converge converge-slack.aster.is

Slide 25

Slide 25 text

converge

Slide 26

Slide 26 text

I M AG E C R E D I T S Arch: Logan Troxel https://unsplash.com/search/arch?photo=DsQmBlby 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