Converge Versions Save

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

0.6.0

7 years ago

Release Date

2017-03-02 0.6.0

Supported Platforms

With this release, Converge no longer supports freebsd and solaris.

Features

This release includes new systemd and unarchive capabilities, improvements to the user resource, and generators for man pages and bash autocomplete.

Module Improvements

Systemd

Support for controlling systemd services has been added via #602.

systemd.unit.state "ssh" {
  unit  = "ssh.service"
  state = "running"
}

Unarchive

Managing several archive formats such as zip and tar.gz is available through unarchive support in #592.

unarchive "consul.zip" {
  source      = "/tmp/consul.zip"
  destination = "/tmp/consul"
}

User

A user can now be enabled or disabled with the addition of #581.

Additionally, there are updates to the diffs presented for user with #584 and #588.

Usablilty Enhancements

Module Author Improvement

A new helper method has been added to for use with resource.Status. RaiseLevelForDiffs will raise the status level to StatusWillChange if any differences exist via #587.

Various Generators

Generators for man pages and bash autocompletion have been added via #571.

Changelog

See the Converge changelog for additional details on the 0.6.0 release.

Support

We provide support via the Converge Slack and through GitHub Issues.

0.6.0-rc1

7 years ago

Release Date

2017-02-27 0.6.0-rc1

Features

This release includes new systemd and unarchive capabilities, improvements to the user resource, and generators for man pages and bash autocomplete. Additionally, Converge no longer supports freebsd and solaris.

Supported Platforms

With this release, Converge no longer supports freebsd and solaris.

Module Improvements

Systemd

Support for controlling systemd services has been added via #602.

systemd.unit.state "ssh" {
  unit  = "ssh.service"
  state = "running"
}

Unarchive

Managing several archive formats such as zip and tar.gz is available through unarchive support in #592.

unarchive "consul.zip" {
  source      = "/tmp/consul.zip"
  destination = "/tmp/consul"
}

User

A user can now be enabled or disabled with the addition of #581.

Additionally, there are updates to the diffs presented for user with #584 and #588.

Usablilty Enhancements

Module Author Improvement

A new helper method has been added to for use with resource.Status. RaiseLevelForDiffs will raise the status level to StatusWillChange if any differences exist via #587.

Various Generators

Generators for man pages and bash autocompletion have been added via #571.

Changelog

See the Converge changelog for additional details on the 0.6.0 release.

Support

We provide support via the Converge Slack and through GitHub Issues.

0.5.0

7 years ago

Release Date

2016-12-29 0.5.0

Features

This release includes new modules and general usability enhancements for users and module authors.

Remove Vendoring

For converge 0.5.0 we have removed the vendor directory from the converge repository. glide install will now run as part of the build process to ensure all dependencies are installed.

Demo Applications

A demo of using converge for a kubernetes deployment was added in 524.

Module Improvements

File Fetch

File download and verification support has been added via #543.

file.fetch "consul.zip" {
  source      = "https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip"
  destination = "/tmp/consul.zip"
  hash_type   = "sha256"
  hash        = "abdf0e1856292468e2c9971420d73b805e93888e006c76324ae39416edcf0627"
}

File Owner

File ownership can now be changed with the file.owner module added via #549.

file.owner "owner-test" {
  destination = "dir"
  group       = "root"
  user        = "root"
  verbose     = true
  recursive   = true
}

Usability Enhancements

Better Cascading Error Output

Modules with failing dependencies are now summarized at the end of a run via 516.

root/task.directory:
 Error: exec: "blah": executable file not found in $PATH
 Messages:
 Has Changes: no
 Changes: No changes

Errors:
 * root/task.directory: exec: "blah": executable file not found in $PATH

Failed due to failing dependency:
 * root/task.key: error in dependency "root/task.directory"
 * root/task.csr: error in dependency "root/task.key"
 * root/task.crt: error in dependency "root/task.csr"

Summary: 1 errors, 0 changes, 3 dependency errors

Resource Name Restrictions

As of 535 resource names are now restricted to strings consisting of letters, numbers, dots . and dashes -. Unicode letter characters are supported.

Diff Output During Application

As of 533 diff outputs should be displayed when running apply.

Engine Improvements

Module API Enhancements

The module authoring API has been updated to make it easier to develop modules.

Explicit Value Exports

As of 533 the export and re-export-as tags are supported for resource.Resource types in modules. These tags are now required to make fields available for lookup.

New Module Author Idioms

As of 533 resource types in modules should not embed resource.Status. The Check and Apply functions should no longer return the resource itself but instead a generated task status.

Bug Fixes

Converge 0.5.0 introduces a multitiude of bugfixes and stability improvements. Please refer to the changelog for a detailed report.

Support

We provide support via the Converge Slack team and through GitHub issues

0.5.0-rc1

7 years ago

title: "0.5.0" date: "2016-12-28" slug: "0-5-0"

menu: main: parent: "release-notes" identifier: 0.5.0


Release Date

2016-12-28 0.5.0-rc1

Features

This release includes new modules and general usability enhancements for users and module authors.

Remove Vendoring

For converge 0.5.0 we have removed the vendor directory from the converge repository. glide install will now run as part of the build process to ensure all dependencies are installed.

Demo Applications

A demo of using converge for a kubernetes deployment was added in 524.

Module Improvements

File Fetch

File download and verification support has been added via #543.

file.fetch "consul.zip" {
  source      = "https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip"
  destination = "/tmp/consul.zip"
  hash_type   = "sha256"
  hash        = "abdf0e1856292468e2c9971420d73b805e93888e006c76324ae39416edcf0627"
}

File Owner

File ownership can now be changed with the file.owner module added via #549.

file.owner "owner-test" {
  destination = "dir"
  group       = "root"
  user        = "root"
  verbose     = true
  recursive   = true
}

Usability Enhancements

Better Cascading Error Output

Modules with failing dependencies are now summarized at the end of a run via 516.

root/task.directory:
 Error: exec: "blah": executable file not found in $PATH
 Messages:
 Has Changes: no
 Changes: No changes

Errors:
 * root/task.directory: exec: "blah": executable file not found in $PATH

Failed due to failing dependency:
 * root/task.key: error in dependency "root/task.directory"
 * root/task.csr: error in dependency "root/task.key"
 * root/task.crt: error in dependency "root/task.csr"

Summary: 1 errors, 0 changes, 3 dependency errors

Resource Name Restrictions

As of 535 resource names are now restricted to strings consisting of letters, numbers, dots . and dashes -. Unicode letter characters are supported.

Diff Output During Application

As of 533 diff outputs should be displayed when running apply.

Engine Improvements

Module API Enhancements

The module authoring API has been updated to make it easier to develop modules.

Explicit Value Exports

As of 533 the export and re-export-as tags are supported for resource.Resource types in modules. These tags are now required to make fields available for lookup.

New Module Author Idioms

As of 533 resource types in modules should not embed resource.Status. The Check and Apply functions should no longer return the resource itself but instead a generated task status.

Bug Fixes

Converge 0.5.0 introduces a multitiude of bugfixes and stability improvements. Please refer to the changelog for a detailed report.

Support

We provide support via the Converge Slack team and through GitHub issues

0.5.0-beta1

7 years ago

title: "0.5.0" date: "2016-12-21" slug: "0-5-0"

menu: main: parent: "release-notes" identifier: 0.5.0


Release Date

2016-12-21 0.5.0-beta1

Features

This release includes new modules and general usability enhancements for users and module authors.

Demo Applications

A demo of using converge for a kubernetes deployment was added in 524.

Module Improvements

File Fetch

File download and verification support has been added via #543.

file.fetch "consul.zip" {
  source      = "https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip"
  destination = "/tmp/consul.zip"
  hash_type   = "sha256"
  hash        = "abdf0e1856292468e2c9971420d73b805e93888e006c76324ae39416edcf0627"
}

File Owner

File ownership can now be changed with the file.owner module added via #549.

file.owner "owner-test" {
  destination = "dir"
  group       = "root"
  user        = "root"
  verbose     = true
  recursive   = true
}

Usability Enhancements

Better Cascading Error Output

Modules with failing dependencies are now summarized at the end of a run via 516.

root/task.directory:
 Error: exec: "blah": executable file not found in $PATH
 Messages:
 Has Changes: no
 Changes: No changes

Errors:
 * root/task.directory: exec: "blah": executable file not found in $PATH

Failed due to failing dependency:
 * root/task.key: error in dependency "root/task.directory"
 * root/task.csr: error in dependency "root/task.key"
 * root/task.crt: error in dependency "root/task.csr"

Summary: 1 errors, 0 changes, 3 dependency errors

Resource Name Restrictions

As of 535 resource names are now restricted to strings consisting of letters, numbers, dots . and dashes -. Unicode letter characters are supported.

Diff Output During Application

As of 533 diff outputs should be displayed when running apply.

Engine Improvements

Module API Enhancements

The module authoring API has been updated to make it easier to develop modules.

Explicit Value Exports

As of 533 the export and re-export-as tags are supported for resource.Resource types in modules. These tags are now required to make fields available for lookup.

New Module Author Idioms

As of 533 resource types in modules should not embed resource.Status. The Check and Apply functions should no longer return the resource itself but instead a generated task status.

Bug Fixes

Converge 0.5.0 introduces a multitiude of bugfixes and stability improvements. Please refer to the changelog for a detailed report.

Support

We provide support via the Converge Slack team and through GitHub issues

0.4.0

7 years ago

This is the final release for Converge 0.4.0. Please refer to the release notes (also included below) for changes and the 0.4.0 documentation for usage.

Features

This release includes a number of new and improved modules, several bugfixes in the core engine, and enhancements to the internal API to ease the module creation process.

Module Improvements

LVM

LVM volume creation has been added for Linux based systems via #184.

lvm.volumegroup "vg-test" {
  name    = "test"
  devices = ["/dev/sda","/dev/sdb"]
}

lvm.logicalvolume "lv-test" {
  group   = "test"
  name    = "test"
  size    = "1G"
  depends = ["lvm.volumegroup.vg-test"]
}

filesystem "mnt-me" {
  device  = "/dev/mapper/test-test"
  mount   = "/mnt"
  fstype  = "ext3"
  depends = ["lvm.logicalvolume.lv-test"]
}

APT

Apt package installation has been added via #461.

package.apt "mc" {
  group = "apt"
  name  = "mc"
  state = "present"
}

Docker Volume

Support for docker volumes has been added via #453

docker.volume "elasticsearch" {
  name = "elasticsearch"

  labels {
    environment = "test"
  }

  state = "present"
  force = true
}

Docker Network

Support for docker networking has been added via #477

docker.network "test-network" {
  name  = "test-network"
  state = "present"
  force = true

  labels {
    environment = "test"
  }

  options {
    "com.docker.network.bridge.enable_icc" = "true"
  }

  internal    = false
  ipv6        = false
  ipam_driver = "default"

  ipam_config {
    subnet  = "192.168.129.0/24"
    gateway = "192.168.129.1"

    aux_addresses {
      router  = "192.168.129.40"
      printer = "192.168.129.41"
    }
  }
}

User Module

Users can now be modified thanks to #434. This change also adds several new fields to the user module which can be used during user creation or modification including:

  • create_home to create a home directory for a user
  • move_dir to move contents of a users home directory if it changes
  • skel_dir to specify a skeleton directory to use when creating a user

Engine Improvements

Module API Enhancements

The module authoring API has been updated to make it easier to develop modules.

Non-empty Struct Tags

Resources now support the nonempty struct tag as demonstrated by this snippet from the user module:

type Preparer struct {
    // Username is the user login name.
    Username string `hcl:"username" required:"true" nonempty:"true"`

when nonempty:"true" is set, an error will be returned if the user sets the value of a field to the zero value for it's type.

Time Duration Types

Resource structs may now use time.Duration as a field type. Duration strings will be parsed as a time duration automatically; numeric values will be treated as a time in seconds.

Bug Fixes

Please refer to the changelog for a detailed report.

Support

We provide support via the Converge Slack team and through GitHub issues

0.4.0-rc1

7 years ago

Release Date

2016-11-17 0.4.0-rc1

Features

This release includes a number of new and improved modules, several bugfixes in the core engine, and enhancements to the internal API to ease the module creation process.

Module Improvements

LVM

LVM volume creation has been added for Linux based systems via #184.

lvm.volumegroup "vg-test" {
  name    = "test"
  devices = ["/dev/sda","/dev/sdb"]
}

lvm.logicalvolume "lv-test" {
  group   = "test"
  name    = "test"
  size    = "1G"
  depends = ["lvm.volumegroup.vg-test"]
}

filesystem "mnt-me" {
  device  = "/dev/mapper/test-test"
  mount   = "/mnt"
  fstype  = "ext3"
  depends = ["lvm.logicalvolume.lv-test"]
}

APT

Apt package installation has been added via #461.

package.apt "mc" {
  group = "apt"
  name  = "mc"
  state = "present"
}

Docker Volume

Support for docker volumes has been added via #453

docker.volume "elasticsearch" {
  name = "elasticsearch"

  labels {
    environment = "test"
  }

  state = "present"
  force = true
}

Docker Network

Support for docker networking has been added via #477

docker.network "test-network" {
  name  = "test-network"
  state = "present"
  force = true

  labels {
    environment = "test"
  }

  options {
    "com.docker.network.bridge.enable_icc" = "true"
  }

  internal    = false
  ipv6        = false
  ipam_driver = "default"

  ipam_config {
    subnet  = "192.168.129.0/24"
    gateway = "192.168.129.1"

    aux_addresses {
      router  = "192.168.129.40"
      printer = "192.168.129.41"
    }
  }
}

User Module

Users can now be modified thanks to #434. This change also adds several new fields to the user module which can be used during user creation or modification including:

  • create_home to create a home directory for a user
  • move_dir to move contents of a users home directory if it changes
  • skel_dir to specify a skeleton directory to use when creating a user

Engine Improvements

Module API Enhancements

The module authoring API has been updated to make it easier to develop modules.

Non-empty Struct Tags

Resources now support the nonempty struct tag as demonstrated by this snippet from the user module:

type Preparer struct {
    // Username is the user login name.
    Username string `hcl:"username" required:"true" nonempty:"true"`

when nonempty:"true" is set, an error will be returned if the user sets the value of a field to the zero value for it's type.

Time Duration Types

Resource structs may now use time.Duration as a field type. Duration strings will be parsed as a time duration automatically; numeric values will be treated as a time in seconds.

Bug Fixes

Please refer to the changelog for a detailed report.

Support

We provide support via the Converge Slack team and through GitHub issues

0.4.0-beta1

7 years ago

title: "0.4.0" date: "2016-11-15" slug: "0-4-0"

menu: main: parent: "release-notes" identifier: 0.4.0


Release Date

2016-11-14 0.4.0-beta1

Features

This release includes a number of new and improved modules, several bugfixes in the core engine, and enhancements to the internal API to ease the module creation process.

Module Improvements

LVM

LVM volume creation has been added for Linux based systems via #184.

lvm.volumegroup "vg-test" {
  name    = "test"
  devices = ["/dev/sda","/dev/sdb"]
}

lvm.logicalvolume "lv-test" {
  group   = "test"
  name    = "test"
  size    = "1G"
  depends = ["lvm.volumegroup.vg-test"]
}

filesystem "mnt-me" {
  device  = "/dev/mapper/test-test"
  mount   = "/mnt"
  fstype  = "ext3"
  depends = ["lvm.logicalvolume.lv-test"]
}

APT

Apt package installation has been added via #461.

package.apt "mc" {
  group = "apt"
  name  = "mc"
  state = "present"
}

Docker Volume

Support for docker volumes has been added via #453

docker.volume "elasticsearch" {
  name = "elasticsearch"

  labels {
    environment = "test"
  }

  state = "present"
  force = true
}

Docker Network

Support for docker networking has been added via #477

docker.network "test-network" {
  name  = "test-network"
  state = "present"
  force = true

  labels {
    environment = "test"
  }

  options {
    "com.docker.network.bridge.enable_icc" = "true"
  }

  internal    = false
  ipv6        = false
  ipam_driver = "default"

  ipam_config {
    subnet  = "192.168.129.0/24"
    gateway = "192.168.129.1"

    aux_addresses {
      router  = "192.168.129.40"
      printer = "192.168.129.41"
    }
  }
}

User Module

Users can now be modified thanks to #434. This change also adds several new fields to the user module which can be used during user creation or modification including:

  • create_home to create a home directory for a user
  • move_dir to move contents of a users home directory if it changes
  • skel_dir to specify a skeleton directory to use when creating a user

Engine Improvements

Module API Enhancements

The module authoring API has been updated to make it easier to develop modules.

Non-empty Struct Tags

Resources now support the nonempty struct tag as demonstrated by this snippet from the user module:

type Preparer struct {
    // Username is the user login name.
    Username string `hcl:"username" required:"true" nonempty:"true"`

when nonempty:"true" is set, an error will be returned if the user sets the value of a field to the zero value for it's type.

Time Duration Types

Resource structs may now use time.Duration as a field type. Duration strings will be parsed as a time duration automatically; numeric values will be treated as a time in seconds.

Bug Fixes

Please refer to the changelog for a detailed report.

Support

We provide support via the Converge Slack team and through GitHub issues

0.3.0

7 years ago

This is the final release for Converge 0.3.0. Please refer to the release notes (also included below) for changes and the 0.3.0 documentation for usage.

Features

This release includes a number of significant improvements to the core engine including conditionals, wait queries, sequential task groups, and the ability to use lists and maps in parameters. The internal API has also been simplified to make it easier for programmers to create new modules.

Module Improvements

RPM Resource

RPM package install/uninstall support has been added via #373.

rpm.package "mc" {
    name  = "mc"
    state = "present"
}

User and group

Linux user groups can now be modified via #279

wait.query and wait.port

Converge now supports waiting for a task to complete or port #334. Users can create a dependency for a port to be open or a condition to be met.

Below is an example of waiting for a port to be open using the wait.port resource:

wait.port "8080" {
  host         = "localhost"
  port         = 8080
  interval     = "1s"
  max_retry    = 10
  grace_period = "2s"
}

The following shows using wait.query to wait using a task:

wait.query "service-health" {
  check        = "nc -z localhost 8080"
  interval     = "1s"
  max_retry    = 10
  grace_period = "1s"
}

Wait is documented at: wait.port and wait.query.

Engine Improvements

Conditional Support

Support for conditionals via #362.

In the following example, the contents of file greetings.txt depend on the value of the lang parameter:

param "lang" {
  default = ""
}

switch "test-switch" {
  case "eq `spanish` `{{param `lang`}}`" "spanish" {
    file.content "foo-file" {
      destination = "greeting.txt"
      content     = "hola\n"
    }
  }

  case "eq `french` `{{param `lang`}}`" "french" {
    file.content "foo-file" {
      destination = "greeting.txt"
      content     = "salut\n"
    }
  }

Task Groups

Tasks can be assigned to a group to force multiple tasks to run one at a time instead of in parallel. When a node is added to a task group the engine creates a dependency on another node in the group.

Please note that task groups are not supported in conditionals in 0.3.

#392

For example, apt package installs cannot run in parallel. In the following example each task with the apt lock is run sequentially.

task "install-jq" {
  check = "dpkg -s jq >/dev/null 2>&1"
  apply = "apt-get update 2>&1 > /dev/null && apt-get -y install jq"
  group  = "apt"
}

task "install-build-essential" {
  check = "dpkg -s build-essential >/dev/null 2>&1"
  apply = "apt-get update 2>&1 > /dev/null && apt-get -y install build-essential"
  group  = "apt"
}

Enhanced Parameter Values

bool, list, and map types have been added to parameters via #340.

See values

Output Improvements

Rendered graphs have been cleaned and arrows now indicate the order of tasks #387.

Text output for changes is now aligned via #317.

Installation Script

An installation script (install-converge.sh) has been added that downloads the correct binary of converge after detecting the underlying Operating System and Processor.

This can be used to install converge during system boot.

For example, the terraform provisioner uses this script download the latest release of converge before configuring a node.

Bug Fixes

Please refer to the changelog for a detailed report.

Examples/Documentation

A Docker image was created in #372 to speed up Wercker builds and automated tests.

Documentation was updated in #371 so that links like converge.aster.is/0.2.0 will resolve documentation for that version.

The elasticsearch example has been updated to use new features in 0.3.0 #419

Support

We provide support via the Converge Slack team and through GitHub issues

0.3.0-rc1

7 years ago

This is the first candidate for the 0.3.0 release of Converge. Please refer to the release notes for changes and the 0.3.0 documentation for usage.

Please feel free to file issues against this release, and if you have any questions at all you can find the team in the Converge Slack.