Skip to content

A powerful and easy-to-use configuration management system.

License

Notifications You must be signed in to change notification settings

shomodj/converge

This branch is up to date with asteris-llc/converge:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

02c76fb · Nov 10, 2020
Dec 19, 2016
Feb 24, 2017
Mar 24, 2018
Feb 22, 2017
Mar 7, 2017
Jan 3, 2017
Nov 2, 2016
Oct 26, 2016
Dec 2, 2016
Feb 23, 2017
Nov 14, 2016
Oct 26, 2016
Feb 13, 2017
Oct 5, 2016
Feb 24, 2017
Sep 3, 2018
Dec 14, 2016
Dec 2, 2016
Dec 21, 2016
Mar 3, 2017
Dec 20, 2016
Feb 27, 2017
Aug 26, 2018
Feb 23, 2017
Nov 15, 2017
Feb 27, 2017
Sep 29, 2016
Oct 11, 2016
Aug 26, 2018
Aug 26, 2018
May 17, 2016
Nov 15, 2017
Nov 10, 2020
Nov 17, 2016
Aug 24, 2016
Sep 7, 2017
Jun 15, 2016
Jan 3, 2017

Repository files navigation

This project is no longer actively maintained.

Converge Logo

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.
  • Resources to make changes on your system: docker images and containers, users and groups, systemd, and more. The Resource Reference at converge.aster.is has a complete list of resources and their configuration settings.
  • A powerful graph engine that automatically generates dependencies and runs tasks in parallel.
  • API-first communication using grpc.
  • Module verification: only run trusted modules.

Converge Graph

Slack Status Code Climate

Table of Contents

Installation

The install-converge.sh script will download and install the converge binary to your /usr/local/bin/ directory:

sudo ./install-converge.sh -v 0.4.0

The same installation script is available at get.converge.sh:

curl get.converge.sh | sudo bash -

You can also use go get:

go get github.com/asteris-llc/converge

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

Documentation

Comprehensive documentation can be found at converge.aster.is.

You can learn more about Converge from the following blog posts and presentations:

Usage

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 place a test file 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

Continuous Integration and Testing

We use Wercker for CI with a custom base image. The Dockerfile for that image can be found at /ci/Dockerfile in the root of the project, and is pushed as asteris/converge-ci. You can test Converge in the container with the following invocation:

docker run -i \
           -t \
           --rm \
           --volume $(pwd):/go/src/github.com/asteris-llc/converge \
           asteris/converge-ci \
           /bin/bash -c 'cd /go/src/github.com/asteris-llc/converge; make test'

Benchmarks are run with make bench, and fuzzing is run with make fuzzing/{target}.

License

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

About

A powerful and easy-to-use configuration management system.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 98.3%
  • Shell 1.3%
  • Other 0.4%