asteris-llc/converge

View on GitHub
docs/content/release-notes/0.4.0.md

Summary

Maintainability
Test Coverage
---
title: "0.4.0"
date: "2016-11-21"
slug: "0-4-0"

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

---

## Release Date

2016-11-21 0.4.0

## 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](https://github.com/asteris-llc/converge/pull/184).

```hcl
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](https://github.com/asteris-llc/converge/pull/461).

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

#### Docker Volume

Support for docker volumes has been added
via [#453](https://github.com/asteris-llc/converge/pull/453)

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

  labels {
    environment = "test"
  }

  state = "present"
  force = true
}
```

#### Docker Network

Support for docker networking has been added
via [#477](https://github.com/asteris-llc/converge/pull/477)

```hcl
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](https://github.com/asteris-llc/converge/pull/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:

```go
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](https://github.com/asteris-llc/converge/blob/master/CHANGELOG.md) for
a detailed report.

## Support

We provide support via [the Converge Slack team](http://converge-slack.aster.is/) and through [GitHub issues](https://github.com/asteris-llc/converge/issues)