Releases: asteris-llc/converge
0.6.0
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
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
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
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
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
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 usermove_dir
to move contents of a users home directory if it changesskel_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
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 usermove_dir
to move contents of a users home directory if it changesskel_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
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 usermove_dir
to move contents of a users home directory if it changesskel_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
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.
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 Release Candidate 1
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.