Release Date

2016-11-21 0.4.0


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 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 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  = ""
    gateway = ""

    aux_addresses {
      router  = ""
      printer = ""

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.


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