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

converge

 converge

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
Tweet

More Decks by Steven Borrelli

Other Decks in Technology

Transcript

  1. A B O U T
    https://aster.is
    Founded 2014
    Based in St. Louis
    Experts in:
    Cloud, Containers, DevOps

    View full-size slide

  2. http://aster.is
    converge

    View full-size slide

  3. converge
    configuration made easy

    View full-size slide

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

    View full-size slide

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

    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 {
    "CONVERGE" = "AWESOME"
    }
    }

    View full-size slide

  7. easy to share
    embed converge file with source code
    converge
    publish via http, s3
    wrap existing scripts

    View full-size slide

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

    View full-size slide

  9. powerful graph engine

    View full-size slide

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

    View full-size slide

  11. create graphs
    visualize install tasks
    converge
    converge graph converge.hcl
    replace curl | bash -

    View full-size slide

  12. D O C K E R E L K D E M O
    integrated with terraform
    spin up clusters with one command

    View full-size slide

  13. https://asciinema.org/a/1yimck6d4me5t69al27qkt9rc
    D O C K E R E L K D E M O
    converge

    View full-size slide

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

  15. I N S TA L L S
    converge
    Confirming patches and security
    configuration
    IoT Devices
    Autoscaling groups

    View full-size slide

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

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

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

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

  20. parallel execution
    converge

    View full-size slide

  21. converge
    docker running?
    deferred evaluation
    start docker.container
    lookup docker.container.port

    View full-size slide

  22. summary
    easy & powerful
    scales down
    made for modern infrastructure
    converge

    View full-size slide

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

    View full-size slide

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

    View full-size slide