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

converge

 converge

converge is a new configuration management tool that makes it easy to configure servers and desktops.

Steven Borrelli

October 28, 2016
Tweet

More Decks by Steven Borrelli

Other Decks in Technology

Transcript

  1. Steven Borrelli
    Asteris, LLC
    @stevendborrelli
    converge

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  5. 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

    View full-size slide

  6. 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“
    }
    }

    View full-size slide

  7. 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.)

    View full-size slide

  8. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  12. graph benefits
    automatic dependency generation
    pinpoint failures
    parallel execution
    converge

    View full-size slide

  13. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  16. 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

    View full-size slide

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

    View full-size slide

  18. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  21. summary
    composable modules
    visualize tasks
    converge
    single binary deployment

    View full-size slide

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

    View full-size slide

  23. 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

    View full-size slide