- Added support for managing VMware vSphere environments. Check the list of new resources below.
- Added
Property
interface type used for evaluating and setting properties of resources. - Impelemented resource triggers. Example code using triggers can be found here
- Existing resources have been refactored to use properties
- Use latest version of
go-vcr
for the integration tests. - Use ldflags when building the
gructl
binary to reduce the resulting binary size - Start using
context.Context
from Go 1.7 instead ofgolang.org/x/net/context
- The
resource.Logf()
function is now registered in Lua and available from thestdlib
table - Go functions can be registered in Lua as well allowing for further extending the Lua-based DSL with Go functionality
Changes in resource.Resource
interface type:
- The
Update()
method is now gone. From now on we use properties to describe changes that can be evaluated and set on resources. - The
Log()
method is gone, instead useresource.Logf()
- New method
Properties()
has been added, which returns the list of properties for a resource. - New method
Initialize()
has been added, which is used for performing initialization of the resource if needed, e.g. establishing connection to a remote API endpoint. - New method
Close()
has been added, which is called after a resource has been processed can be used for cleanup tasks. - Resources for which properties make no sense when absent now
return the
resource.ErrResourceAbsent
error. - New method
SubscribedTo
returns aresource.TriggerMap
containing the resources to which it is subscribed and the Lua function that will be executed if the resource has changed.
New resources implemented:
File
resource now manages only files instead of files and directories.Directory
manages directories.Link
manages symbolic and hard file links.SysRc
resource manages sysrc variables on FreeBSD systems. Contributed by @kaeyPkgNg
resource manages packages on FreeBSD systems. Contributed by @kaeyService
resource for FreeBSD systems. Contributed by @kaeyDatacenter
resource manages datacenters in a VMware vSphere environmentCluster
resource manages VMware vSphere clustersClusterHost
manages ESXi hosts in a VMware vSphere cluster.Host
manages ESXi host settings in a VMware vSphere environmentVirtualMachine
resource manages virtual machines in a VMware vSphere environmentDatastoreNfs
resource manages NFS datastores on ESXi hosts
Changes in the catalog
package.
- Added
catalog.Status
type Catalog.Run()
now returnscatalog.Status
instance, so that result can be further examined if needed- Resource properties are processed after executing the resource
- Use Go 1.7 as the default stable version used for building and testing
- Added support for concurrent resource processing (!)
- Suitable resources are now scheduled for concurrent execution
- Created Gitter channel for Gru
- Created Codewake channel for Gru
- Resources can define their own custom
present
andabsent
states - Added new required methods for
Resource
interface -Validate()
,IsConcurrent()
,GetPresentStates()
andGetAbsentStates()
- Renamed
Resource.BaseResource
type asResource.Base
- Initial implementation of
utils.List
andutils.String
types used to provide membership test operations - The
Update
field ofresource.State
type been renamed toOutdated
- Resource processing logic has been simplified in the
catalog
package - Added tests for the
catalog
package - Support only direct dependencies by using
require
-before
andafter
are gone - Display status of applied resource after a catalog run
- During a catalog run resources which have failed dependencies are now skipped
Catalog.Add()
registeres only non-nil resources- Added
Mute
field toresource.Shell
type, which suppresses output from shell commands - Be able to set concurrency level when applying configuration with
gructl apply
andgructl serve
- Implemented
Reversed()
method ongraph.Graph
type - Added support for shell autocompletion
- Added support for resource namespaces in Lua
gructl graph
now generates the reversed graph of resources as well- Updated documentation
- Lua has been integrated as the DSL language used by Gru.
- HCL has been removed as we now use Lua.
resource.LuaRegisterBuiltin
was implemented for registering resources into Lua.resource.Provider
type signature has changed after the adoption of Lua.- Renamed
ResourceID()
method forresource.Resource
toID()
. SetType()
is no longer a method of theresource.Resource
interface.- Removed the
Title
field fromresource.BaseResource
type. - Services managed by
resource.Service
are now enabled by default. - The
module.Collection
type has moved toresource.Collection
. - Deprecated the
module
package, which used to implement modules using HCL. Since we have moved to Lua, there is no need of this package anymore. - Initial implementation of
resource.DefaultConfig
which provides configuration settings for all resources.resource.DefaultConfig
is being injected by external packages with the proper configuration. - Deprecated
gructl module
command. - Deprecated
gructl validate
command. - Deprecated
gructl resource
command. - Switched to
urfave/cli
instead ofcodegangsta/cli
- The
log
function is now registered to Lua for logging events. - Dropped requirement for
libgit2
. Minions now sync thesite repo
using theutils.GitRepo
implementation instead. - Added tests for all resources
- The resource documentation and examples are now available in godoc.
- Updated documentation and the quickstart guide to reflect the adoption of Lua as the DSL language.
- Introduced resources as a way to define and execute idempotent operations
- Integrated HCL as a way to express configuration
- Initial implementation of the module package
- Initial implementation of the graph package and resource dependencies
- Initial implementation of the catalog package
- Initial implementation of the
site repo
, which allows remote minions to sync data and modules from an upstream Git repository - Minions now understand the notion of task environments, which
essentially are Git branches in the
site repo
- Initial implementation of some core resources -
package
,service
,file
,shell
,pacman
andyum
- Improved the existing documentation and created the quickstart guide guide
- supervisord and systemd service configurations created and available from the contrib directory
- And many other small fixes and improvements
Initial release of Gru.
- Initial implementation of the core interfaces based on etcd