Skip to content

asteris-llc/converge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

835dbc6 · Sep 16, 2016
Sep 16, 2016
Sep 14, 2016
Sep 16, 2016
Sep 16, 2016
Sep 16, 2016
Sep 8, 2016
Sep 7, 2016
Jun 9, 2016
Sep 8, 2016
Aug 24, 2016
Sep 8, 2016
Sep 14, 2016
Sep 16, 2016
Aug 31, 2016
Sep 8, 2016
Sep 13, 2016
Sep 14, 2016
Sep 16, 2016
Sep 13, 2016
Sep 16, 2016
Aug 25, 2016
May 17, 2016
Sep 16, 2016
Sep 16, 2016
Aug 24, 2016
Sep 13, 2016
Sep 13, 2016
Jun 15, 2016
Aug 30, 2016

Repository files navigation

Converge

Converge is a configuration management tool that makes it easy to manage servers, laptops and other devices.

Key features:

  • Easy to install and run. A single binary and configuration file is all you need.
  • A powerful graph engine that automatically generates dependencies and runs tasks in parallel.
  • API-first communication using grpc.
  • Module verification: only run trusted modules.

Slack Status

Table of Contents

Installation

go get github.com/asteris-llc/converge

or download a release for your platform from the releases page on Github.

Usage

See the docs! It's pretty reasonable, though. Here's a summary:

Converge uses HCL for syntax. HCL is a superset of JSON that looks (and acts) quite a bit nicer.

The basic unit of composition in converge is the module. Modules have parameters and contain resources. Creating a module looks something like this:

# write "hello world" to disk
param "message" {
  default = "Hello, World in {{param `filename`}}"
}

param "filename" {
  default = "test.txt"
}

file.content "render" {
  destination = "{{param `filename`}}"
  content     = "{{param `message`}}"
}

Invoke this with converge apply --local samples/fileContent.hcl to install Traefik from yum on your system. You can also converge plan --local samples/fileContent.hcl to see what changes will be made before you apply them.

Development

Tools

For linting, you'll need:

tool go get
golint github.com/golang/lint/golint
go tool vet (built in)
gosimple honnef.co/go/simple/cmd/gosimple
unconvert github.com/mdempsky/unconvert
structcheck github.com/opennota/check/cmd/structcheck
varcheck github.com/opennota/check/cmd/varcheck
aligncheck github.com/opennota/check/cmd/aligncheck
gas github.com/HewlettPackard/gas

RPC

You'll need:

  • Google's protobuf compiler, 3.0 or above.
  • The go protoc plugin: go get -a github.com/golang/protobuf/protoc-gen-go
  • The grpc gateway plugin(s): go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger

License

Converge is licensed under the Apache 2.0 license. See LICENSE for full details.