Hi all,
with some hardly hidden pride and excitement I'd like to announce the first release of
Tiny Puppet ("Yet Another Puppet Abstraction Layer"), a Puppet module that allows easy, quick and coherent management of virtually any application.
Briefly, a common basic usage pattern, in local site modules and profiles, is as easy as:
tp::install { 'nginx': }
tp::conf { 'nginx':
template => 'site/nginx/nginx.conf.erb',
options_hash => hiera('nginx::options_hash'),
}
and this can be done with ANY application on ANY Operating System (or, to be more precise, to any currently
supported application) as long as it can be installed via the native OS packaging system.
The module provides several other defines which, based on the application data, allow quite interesting things, such as an incredibly quick, easy and effortless way to run acceptance tests (or monitoring checks).
For example to run acceptance tests on Centos7 for all the supported application is enough to execute:
bin/test.sh all Centos7 acceptance
this uses the local Vagrant environment to install, test and uninstall applications (read the docs for the prerequisite commands to issue to setup your local environment).
Check here for the current
compatibility matrix of different applications on different OS, most of the failures are due to incorrect application data, missing extra repositories (they can be managed directly in the data files), missing default configuration files and other easily fixable issues.
Other defines are available, or planned, for different purposes, they are all based on the applications data which may be easily added and extended to support new OSes:
tp::install. It installs an application and starts its service, by defaulttp::conf. It allows to manage configuration filestp::dir. Manages the content of directoriestp::stdmod. Manages the installation of an application using StdMod compliant parameterstp::line. (TODO) Manages single lines in a configuration filetp::repo. (WIP) Manages extra repositories for the supported applicationstp::concat. (WIP) Manages file fragments of a configuration filetp::instance. (TODO) Manages an application instancetp::puppi. Puppi integration (Don't worry, fully optional)tp::test. Allows quick and easy (acceptance) testing of an application
Tiny Puppet currently requires Ruby > 1.9.x (on the PuppetMaster) and PuppetLabs' stdlib.
It can be plugged without conflicts in any local modules set and can replace or integrate other existing modules: it's all based on defines, you can decide which ones to use for which applications.
Its expected user is the system administrator who knows exactly how to configure his/her applications and needs a standard and quick interface to manage them without the effort to import and study (or even worse, write from scratch) a new module.
I'm looking forward to hear any feedback about it: without false modesties I consider it the result and the essence of years of development and research on modules' reusability and abstraction patterns, but as long as I don't hear others' opinions about it I'll remain with the doubt if it's going to appeal only me :-)
Best,
Alessandro Franceschi