diff --git a/dev/vagrant/README.md b/dev/vagrant/README.md
index 8056643520ec77ffdd2d898f0e31d1ebbd287d5f..dc0bc4234e2b4151585ac0abe34ac3dd68c8fc5d 100644
--- a/dev/vagrant/README.md
+++ b/dev/vagrant/README.md
@@ -23,7 +23,7 @@ Usage
`cd` into the vagrant box directory and simply type `vagrant up`.
-That's all you need to do. It will build a brand new VirtalBox machine for you with everything you need to develop on Dolibarr.
+That's all you need to do. It will build a brand new VirtualBox machine for you with everything you need to develop on Dolibarr.
### Name resolution
For easy access to the VM you need to setup name resolution to the machines IP.
@@ -45,9 +45,16 @@ Somewhat bleeding edge vagrant box for develop branch related work.
- IP: 192.168.42.101
- Vhost: dev.dolibarr.org
-- OS: Debian Wheezy 7.5
+- OS: Debian Wheezy 7.5 x64
- Webserver: Apache 2.2.22
-- PHP: mod_php 5.5.13-1~dotdeb.1
+- PHP: mod_php 5.5.14-1~dotdeb.1
+ Installed modules:
+ - cli
+ - curl
+ - gd
+ - imagick
+ - intl
+ - mcrypt
- Database: MySQL 5.5
- Root user: root
- Root password: root
@@ -55,7 +62,13 @@ Somewhat bleeding edge vagrant box for develop branch related work.
- Database user: user
- Database password: user
- Initial data: dev/initdata/mysqldump_dolibarr-3.5.0.sql
+- Database: PostgreSQL 9.3
+- Adminer: lightweight database management. Access through http://192.168.42.101/adminer
- Debugger: XDebug
-- Profiler: Xhprof
+- Profiler: Xhprof. Access through http://192.168.42.101/xhprof/xhprof_html
You can access MailCatcher to read all outgoing emails at http://192.168.42.101:1080
+
+To access the machine you must use the following private keys:
+- User root: located at puphpet/files/dot/ssh/root_rsa
+- User vagrant: located at puphpet/files/dot/ssh/id_rsa
diff --git a/dev/vagrant/dolibarrdev/Vagrantfile b/dev/vagrant/dolibarrdev/Vagrantfile
index f73476207d0ee61db828a4dc6722d66ce5151bc7..89c2c75a5b726e45d4a944e4af6343aa761a64fb 100644
--- a/dev/vagrant/dolibarrdev/Vagrantfile
+++ b/dev/vagrant/dolibarrdev/Vagrantfile
@@ -25,11 +25,19 @@ Vagrant.configure("2") do |config|
data['vm']['synced_folder'].each do |i, folder|
if folder['source'] != '' && folder['target'] != ''
- nfs = (folder['nfs'] == "true") ? "nfs" : nil
- if nfs == "nfs"
- config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: nfs
+ if folder['sync_type'] == 'nfs'
+ config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: "nfs"
+ elsif folder['sync_type'] == 'smb'
+ config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: "smb"
+ elsif folder['sync_type'] == 'rsync'
+ rsync_args = !folder['rsync']['args'].nil? ? folder['rsync']['args'] : ["--verbose", "--archive", "--delete", "-z"]
+ rsync_auto = !folder['rsync']['auto'].nil? ? folder['rsync']['auto'] : true
+ rsync_exclude = !folder['rsync']['exclude'].nil? ? folder['rsync']['exclude'] : [".vagrant/"]
+
+ config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
+ rsync__args: rsync_args, rsync__exclude: rsync_exclude, rsync__auto: rsync_auto, type: "rsync"
else
- config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: nfs,
+ config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
group: 'www-data', owner: 'www-data', mount_options: ["dmode=775", "fmode=764"]
end
end
@@ -128,7 +136,14 @@ Vagrant.configure("2") do |config|
end
end
- config.vm.provision :shell, :path => "puphpet/shell/execute-files.sh"
+ config.vm.provision :shell do |s|
+ s.path = "puphpet/shell/execute-files.sh"
+ s.args = ["exec-once", "exec-always"]
+ end
+ config.vm.provision :shell, run: "always" do |s|
+ s.path = "puphpet/shell/execute-files.sh"
+ s.args = ["startup-once", "startup-always"]
+ end
config.vm.provision :shell, :path => "puphpet/shell/important-notices.sh"
if File.file?("#{dir}/puphpet/files/dot/ssh/id_rsa")
diff --git a/dev/vagrant/dolibarrdev/puphpet/config.yaml b/dev/vagrant/dolibarrdev/puphpet/config.yaml
index 5cfb2601f21d6e864891796be30efc67bced796d..96c01695cec1e03a90c6bb96a09b5a19aa286377 100644
--- a/dev/vagrant/dolibarrdev/puphpet/config.yaml
+++ b/dev/vagrant/dolibarrdev/puphpet/config.yaml
@@ -29,10 +29,12 @@ vagrantfile-local:
- '--hiera_config /vagrant/puphpet/puppet/hiera.yaml'
- '--parser future'
synced_folder:
- PL1BkioqqvGY:
+ jopH6005bn96:
source: ../../../
target: /var/www
- nfs: 'false'
+ sync_type: default
+ rsync:
+ auto: 'false'
usable_port_range: 2200..2250
ssh:
host: null
@@ -71,7 +73,7 @@ apache:
settings:
user: www-data
group: www-data
- default_vhost: false
+ default_vhost: true
manage_user: false
manage_group: false
sendfile: 0
@@ -79,7 +81,7 @@ apache:
- php
- rewrite
vhosts:
- CGyWQB0fx4x0:
+ b2tOrs1TMtoF:
servername: dev.dolibarr.org
docroot: /var/www/htdocs
port: '80'
@@ -97,7 +99,7 @@ apache:
nginx:
install: 0
vhosts:
- jeF1sybIJ3V2:
+ 0dU5luf5AnIe:
server_name: awesome.dev
server_aliases:
- www.awesome.dev
@@ -152,7 +154,7 @@ mysql:
root_password: root
adminer: 0
databases:
- 2OfuuapoIqsl:
+ V6H3W2FVB7Yq:
grant:
- ALTER
- CREATE
@@ -168,14 +170,14 @@ mysql:
password: user
sql_file: /var/www/dev/initdata/mysqldump_dolibarr_3.5.0.sql
postgresql:
- install: 0
+ install: '1'
settings:
- root_password: '123'
+ root_password: root
user_group: postgres
encoding: UTF8
version: '9.3'
databases: { }
- adminer: 0
+ adminer: '1'
mariadb:
install: 0
root_password: '123'
diff --git a/dev/vagrant/dolibarrdev/puphpet/files/dot/.gitignore b/dev/vagrant/dolibarrdev/puphpet/files/dot/.gitignore
index dcf60545594365a2c0d5c15de55e61dc5f7b9f73..e9b023ea6a627525281203c45cae5050959b19e1 100644
--- a/dev/vagrant/dolibarrdev/puphpet/files/dot/.gitignore
+++ b/dev/vagrant/dolibarrdev/puphpet/files/dot/.gitignore
@@ -1,4 +1 @@
-ssh/id_rsa
-ssh/id_rsa.pub
-ssh/insecure_private_key
-ssh/id_rsa.ppk
\ No newline at end of file
+ssh/*
\ No newline at end of file
diff --git a/dev/vagrant/dolibarrdev/puphpet/files/startup-always/empty b/dev/vagrant/dolibarrdev/puphpet/files/startup-always/empty
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/dev/vagrant/dolibarrdev/puphpet/files/startup-once/empty b/dev/vagrant/dolibarrdev/puphpet/files/startup-once/empty
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/manifest.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/manifest.pp
index 57f759e5531b3c7a140fd055177692fd81b5a821..6f560f8735f22ab77cb29b4d62e73a6af143642b 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/manifest.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/manifest.pp
@@ -279,8 +279,14 @@ if hash_key_equals($mailcatcher_values, 'install', 1) {
}
if ! defined(Class['supervisord']) {
+ class{ 'puphpet::python::pip': }
+
class { 'supervisord':
- install_pip => true,
+ install_pip => false,
+ require => [
+ Class['my_fw::post'],
+ Class['Puphpet::Python::Pip'],
+ ],
}
}
@@ -467,15 +473,16 @@ if hash_key_equals($apache_values, 'install', 1) {
$apache_vhosts = merge($apache_values['vhosts'], {
'default_vhost_80' => {
'servername' => 'default',
- 'serveraliases' => ['*'],
'docroot' => '/var/www/default',
'port' => 80,
+ 'default_vhost' => true,
},
'default_vhost_443' => {
'servername' => 'default',
- 'serveraliases' => ['*'],
'docroot' => '/var/www/default',
'port' => 443,
+ 'default_vhost' => true,
+ 'ssl' => 1,
},
})
} else {
@@ -515,11 +522,11 @@ if hash_key_equals($apache_values, 'install', 1) {
create_resources(apache::vhost, { "${key}" => merge($vhost, {
'custom_fragment' => template('puphpet/apache/custom_fragment.erb'),
- 'ssl' => 'ssl' in $vhost and str2bool($vhost['ssl']) ? { true => true, default => false },
- 'ssl_cert' => 'ssl_cert' in $vhost and $vhost['ssl_cert'] ? { undef => undef, '' => undef, default => $vhost['ssl_cert'] },
- 'ssl_key' => 'ssl_key' in $vhost and $vhost['ssl_key'] ? { undef => undef, '' => undef, default => $vhost['ssl_key'] },
- 'ssl_chain' => 'ssl_chain' in $vhost and $vhost['ssl_chain'] ? { undef => undef, '' => undef, default => $vhost['ssl_chain'] },
- 'ssl_certs_dir' => 'ssl_certs_dir' in $vhost and $vhost['ssl_certs_dir'] ? { undef => undef, '' => undef, default => $vhost['ssl_certs_dir'] }
+ 'ssl' => 'ssl' in $vhost and str2bool($vhost['ssl']) ? { true => true, default => false },
+ 'ssl_cert' => hash_key_true($vhost, 'ssl_cert') ? { true => $vhost['ssl_cert'], default => undef },
+ 'ssl_key' => hash_key_true($vhost, 'ssl_cert') ? { true => $vhost['ssl_key'], default => undef },
+ 'ssl_chain' => hash_key_true($vhost, 'ssl_cert') ? { true => $vhost['ssl_chain'], default => undef },
+ 'ssl_certs_dir' => hash_key_true($vhost, 'ssl_cert') ? { true => $vhost['ssl_certs_dir'], default => undef }
})
})
@@ -662,10 +669,6 @@ if hash_key_equals($nginx_values, 'install', 1) {
}
} elsif hash_key_equals($hhvm_values, 'install', 1) {
$fastcgi_pass = '127.0.0.1:9000'
-
- set_php5_fpm_sock_group_and_user { 'hhvm':
- require => Package['nginx'],
- }
} else {
$fastcgi_pass = ''
}
@@ -1096,7 +1099,7 @@ if hash_key_equals($xhprof_values, 'install', 1)
}
if hash_key_equals($apache_values, 'install', 1) {
- $xhprof_webroot_location = $puphpet::params::apache_webroot_location
+ $xhprof_webroot_location = '/var/www/default'
$xhprof_webserver_service = 'httpd'
} elsif hash_key_equals($nginx_values, 'install', 1) {
$xhprof_webroot_location = $puphpet::params::nginx_webroot_location
@@ -1216,11 +1219,11 @@ if hash_key_equals($mysql_values, 'install', 1) {
if hash_key_equals($mysql_values, 'adminer', 1) and $mysql_php_installed {
if hash_key_equals($apache_values, 'install', 1) {
- $mysql_adminer_webroot_location = $puphpet::params::apache_webroot_location
+ $mysql_adminer_webroot_location = '/var/www/default'
} elsif hash_key_equals($nginx_values, 'install', 1) {
$mysql_adminer_webroot_location = $puphpet::params::nginx_webroot_location
} else {
- $mysql_adminer_webroot_location = $puphpet::params::apache_webroot_location
+ $mysql_adminer_webroot_location = '/var/www/default'
}
class { 'puphpet::adminer':
@@ -1329,11 +1332,11 @@ if hash_key_equals($postgresql_values, 'install', 1) {
if hash_key_equals($postgresql_values, 'adminer', 1) and $postgresql_php_installed {
if hash_key_equals($apache_values, 'install', 1) {
- $postgresql_adminer_webroot_location = $puphpet::params::apache_webroot_location
+ $postgresql_adminer_webroot_location = '/var/www/default'
} elsif hash_key_equals($nginx_values, 'install', 1) {
$postgresql_adminer_webroot_location = $puphpet::params::nginx_webroot_location
} else {
- $postgresql_adminer_webroot_location = $puphpet::params::apache_webroot_location
+ $postgresql_adminer_webroot_location = '/var/www/default'
}
class { 'puphpet::adminer':
@@ -1364,7 +1367,7 @@ define postgresql_db (
$table = "${name}.*"
exec{ "${name}-import":
- command => "psql ${name} < ${sql_file}",
+ command => "sudo -u postgres psql ${name} < ${sql_file}",
logoutput => true,
refreshonly => $refresh,
require => Postgresql::Server::Db[$name],
@@ -1491,11 +1494,11 @@ if hash_key_equals($mariadb_values, 'install', 1) {
if hash_key_equals($mariadb_values, 'adminer', 1) and $mariadb_php_installed {
if hash_key_equals($apache_values, 'install', 1) {
- $mariadb_adminer_webroot_location = $puphpet::params::apache_webroot_location
+ $mariadb_adminer_webroot_location = '/var/www/default'
} elsif hash_key_equals($nginx_values, 'install', 1) {
$mariadb_adminer_webroot_location = $puphpet::params::nginx_webroot_location
} else {
- $mariadb_adminer_webroot_location = $puphpet::params::apache_webroot_location
+ $mariadb_adminer_webroot_location = '/var/www/default'
}
class { 'puphpet::adminer':
@@ -1662,7 +1665,7 @@ if $beanstalkd_values == undef {
}
if hash_key_equals($apache_values, 'install', 1) {
- $beanstalk_console_webroot_location = "${puphpet::params::apache_webroot_location}/beanstalk_console"
+ $beanstalk_console_webroot_location = '/var/www/default/beanstalk_console'
} elsif hash_key_equals($nginx_values, 'install', 1) {
$beanstalk_console_webroot_location = "${puphpet::params::nginx_webroot_location}/beanstalk_console"
} else {
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/lib/puppet/parser/functions/hash_key_true.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/lib/puppet/parser/functions/hash_key_true.rb
new file mode 100644
index 0000000000000000000000000000000000000000..fd495f8f1430655fc823bd3159594adafb7bf6ab
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/lib/puppet/parser/functions/hash_key_true.rb
@@ -0,0 +1,42 @@
+#
+# hash_key_true.rb
+#
+
+module Puppet::Parser::Functions
+
+ newfunction(:hash_key_true, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args|
+
+ Returns true if the key within hash is truthy
+ ENDHEREDOC
+
+ unless args.length == 2
+ raise Puppet::ParseError, ("hash_key_true(): wrong number of arguments (#{args.length}; must be 2)")
+ end
+
+ arr = args[0]
+ key = args[1]
+
+ unless arr.is_a?(Hash)
+ return false
+ end
+
+ unless arr.has_key?(key)
+ return false
+ end
+
+ if arr[key].nil?
+ return false
+ end
+
+ if arr[key].empty?
+ return false
+ end
+
+ if arr[key] == 'false'
+ return false
+ end
+
+ return true
+
+ end
+end
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/hhvm.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/hhvm.pp
index 90083232cdc7c8402a859823e82981f75948fa5e..3b27ab90af63d727b7580b5e8e6436b4f4a492a6 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/hhvm.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/hhvm.pp
@@ -69,17 +69,39 @@ class puphpet::hhvm(
}
}
'centos': {
+ $jemalloc_url = 'http://files.puphpet.com/centos6/jemalloc-3.6.0-1.el6.x86_64.rpm'
+ $jemalloc_download_location = '/.puphpet-stuff/jemalloc-3.6.0-1.el6.x86_64.rpm'
+
+ $require = defined(Class['my_fw::post']) ? {
+ true => Class['my_fw::post'],
+ default => [],
+ }
+
+ exec { "download jemalloc to ${download_location}":
+ creates => $download_location,
+ command => "wget --quiet --tries=5 --connect-timeout=10 -O '${jemalloc_download_location}' '${jemalloc_url}'",
+ timeout => 30,
+ path => '/usr/bin',
+ require => $require
+ }
+
+ package { 'jemalloc':
+ ensure => latest,
+ provider => yum,
+ source => $download_location,
+ require => Exec["download jemalloc to ${download_location}"],
+ }
+
yum::managed_yumrepo { 'hop5':
descr => 'hop5 repository',
baseurl => 'http://www.hop5.in/yum/el6/',
gpgkey => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-HOP5',
enabled => 1,
gpgcheck => 0,
- priority => 1
+ priority => 1,
}
}
}
-
if $real_webserver == 'apache2' {
if ! defined(Class['apache::mod::mime']) {
class { 'apache::mod::mime': }
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/python/pip.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/python/pip.pp
new file mode 100644
index 0000000000000000000000000000000000000000..14b13fe08c6352ab2b6f42a4b5002cefedc992f6
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/python/pip.pp
@@ -0,0 +1,22 @@
+class puphpet::python::pip {
+
+ Exec { path => [ '/usr/bin/', '/usr/local/bin', '/bin', '/usr/local/sbin', '/usr/sbin', '/sbin' ] }
+
+ if ! defined(Package['python-setuptools']) {
+ package { 'python-setuptools': }
+ }
+
+ exec { 'easy_install pip':
+ unless => 'which pip',
+ require => Package['python-setuptools'],
+ }
+
+ if $::osfamily == 'RedHat' {
+ exec { 'rhel pip_provider_name_fix':
+ command => 'alternatives --install /usr/bin/pip-python pip-python /usr/bin/pip 1',
+ subscribe => Exec['easy_install pip'],
+ unless => 'which pip-python',
+ }
+ }
+
+}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/.fixtures.yml b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/.fixtures.yml
index 15f96922e017ae4ca430923922ab8f4335997caf..3f18ef2fca235831f4d6d0f53783226c383c3f02 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/.fixtures.yml
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/.fixtures.yml
@@ -1,6 +1,10 @@
fixtures:
repositories:
- stdlib: "git://github.com/puppetlabs/puppetlabs-stdlib"
- concat: "git://github.com/puppetlabs/puppetlabs-concat"
+ 'stdlib':
+ repo: 'git://github.com/puppetlabs/puppetlabs-stdlib'
+ ref: '4.1.0'
+ 'concat':
+ repo: 'git://github.com/puppetlabs/puppetlabs-concat'
+ ref: '1.0.1'
symlinks:
supervisord: "#{source_dir}"
\ No newline at end of file
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/.travis.yml b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/.travis.yml
index 6e544518c19fefc158b037f0d222cd90801fb403..bc96a165e59afefc0ec1f792b51724aa3907cadb 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/.travis.yml
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/.travis.yml
@@ -1,21 +1,28 @@
language: ruby
bundler_args: --without development
-script: "bundle exec rake spec lint"
+script: "bundle exec rake test"
rvm:
- 1.8.7
- 1.9.3
- 2.0.0
env:
- matrix:
- - PUPPET_GEM_VERSION="~> 2.7.0"
- - PUPPET_GEM_VERSION="~> 3.3.0"
- - PUPPET_GEM_VERSION="~> 3.4.0"
+ - PUPPET_VERSION="~> 2.7.0"
+ - PUPPET_VERSION="~> 3.1.0"
+ - PUPPET_VERSION="~> 3.2.0"
+ - PUPPET_VERSION="~> 3.3.0"
+ - PUPPET_VERSION="~> 3.4.0"
+ - PUPPET_VERSION="~> 3.5.0"
+ - PUPPET_VERSION="~> 3.6.0"
matrix:
exclude:
+ - rvm: 2.0.0
+ env: PUPPET_VERSION="~> 2.7.0"
- rvm: 1.9.3
- env: PUPPET_GEM_VERSION="~> 2.7.0"
+ env: PUPPET_VERSION="~> 2.7.0"
- rvm: 2.0.0
- env: PUPPET_GEM_VERSION="~> 2.7.0"
+ env: PUPPET_VERSION="~> 3.1.0"
+ - rvm: 1.8.7
+ env: PUPPET_VERSION="~> 3.2.0"
notifications:
email: false
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Changelog b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Changelog
index ab4faa445ffda9ceae49460a44dce7ef6e69f187..b1e3228ff02d94bab0616db67626afd95d40fab3 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Changelog
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Changelog
@@ -1,3 +1,66 @@
+2014-06-20 - v0.4.0
+
+Fixes:
+
+- Removed root as group and replaced with uid 0 to enhance system
+compatibility
+
+Enhancements:
+
+- Made package provider a user definable param see supervisord::package_provider and README for details of how to change this.
+- All define types can now be automatically pulled in from hiera see example https://github.com/ajcrowe/puppet-supervisord#configure-a-program
+- You can now override the default include path of $config_include/*.conf with your own array using $config_dirs. Bear in mind this would need to include whatever you set $config_include to be, with *.conf on the end.
+
+Many thanks for the PRs from @jasperla, @mvantellingen for the bug report on the service name and @hasc for the enhancement ideas.
+
+2014-06-06 - v0.3.3
+
+Fixes:
+
+- Fixed typo in stopwaitsec param, should have been stopwaitsecs, thanks to @rchrd2
+
+2014-05-03 - v0.3.2
+
+Changes:
+
+- Added supervisord::executable_ctl variable for supervisorctl binary path, thanks to @bpgoldsb
+
+2014-04-22 - v0.3.1
+
+Fixes:
+
+- Fixed typo in unix_socket_group param, thanks to @dig412
+
+2014-03-11 - v0.3.0
+
+Fixes:
+
+- Fixed typo in fcgi config
+- Fixed typo in supervisord config with minfds and minprocs, thanks to @peefourtee
+- Typo in README fixed thanks to @hopkinsth
+- Removed refreshonly from pip_install exec resource
+- Number of syntax fixes thanks to `puppet lint`
+
+Important Changes:
+
+- Lots of input validation has been added **PLEASE** check your config works before upgrading!
+- Changed init_extras naming to defaults and cleaned things up.
+- Starting and stopping apps is now done with supervisorctl commands to avoid service restarts
+
+Other Changes:
+
+- CSV functions now order things consistently
+- Included description for classes and functions
+- Expanded spec testing built with Travis CI
+- Added beaker acceptance tests
+- Added greater validation of various parameters
+- Added coverage reporting for resources
+
+To-Do:
+
+- Add support for additional OS families such as Solaris.
+
+
2013-10-31 - v0.2.3
Fixes:
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Gemfile b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Gemfile
index 8612255f5b8828898564db4ea415d9ef580205a7..ba9a19d533ae57395e4997ba1a51c41dc831687c 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Gemfile
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Gemfile
@@ -1,14 +1,26 @@
source 'https://rubygems.org'
-group :development, :test do
+group :test do
gem 'rake'
- gem 'puppetlabs_spec_helper', :require => false
- gem 'rspec-system-puppet', '~> 2.0'
- gem 'puppet-lint', '~> 0.3.2'
+ gem 'puppet-lint'
+ gem 'puppet-syntax'
+ gem 'puppetlabs_spec_helper'
+ gem 'rspec-puppet', :git => 'https://github.com/rodjek/rspec-puppet.git' , :ref => 'c44381a240ec420d4ffda7bffc55ee4d9c08d682'
+ gem 'rspec', '2.14.1'
end
-if puppetversion = ENV['PUPPET_GEM_VERSION']
- gem 'puppet', puppetversion, :require => false
+group :development do
+ gem 'travis'
+ gem 'travis-lint'
+ gem 'beaker'
+ gem 'beaker-rspec'
+ gem 'pry'
+ gem 'guard-rake'
+end
+
+
+if puppetversion = ENV['PUPPET_VERSION']
+ gem 'puppet', puppetversion
else
- gem 'puppet', :require => false
+ gem 'puppet', '~> 3.4.0'
end
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Modulefile b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Modulefile
index 4a0552115dab25111aa8986c960c7adb7c8134bf..0c99b04baf2c23e8fde245fee3963ebd02c06f71 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Modulefile
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Modulefile
@@ -1,5 +1,5 @@
name 'ajcrowe-supervisord'
-version '0.2.3'
+version '0.4.0'
source 'git@github.com/ajcrowe/puppet-supervisord.git'
author 'Alex Crowe'
license 'Apache License, Version 2.0'
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/README.md b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/README.md
index a8419a09082a7d66d2d5d534e54d1b239d12ac2f..b454cd9307a6dd620724323889858dbc2231cafe 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/README.md
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/README.md
@@ -4,7 +4,7 @@
Puppet module to manage the [supervisord](http://supervisord.org/) process control system.
-Functions available to configure
+Functions available to configure
* [programs](http://supervisord.org/configuration.html#program-x-section-settings)
* [groups](http://supervisord.org/configuration.html#group-x-section-settings)
@@ -31,10 +31,16 @@ class supervisord {
}
```
-This will download [setuptool](https://bitbucket.org/pypa/setuptools) and install pip with easy_install.
+This will download [setuptool](https://bitbucket.org/pypa/setuptools) and install pip with easy_install.
You can pass a specific url with `$setuptools_url = 'url'`
+### Install without pip
+
+If you want to use your system package manager you can specify that with `supervisord::package_provider`.
+
+You'll also likely need to adjust the `supervisord::service_name` to match that installed by the system package. If you're using Debian or Redhat OS families you'll also want to disable the init scripts with `supervisord::install_init = false`.
+
Note: Only Debian and RedHat families have an init script currently.
### Configure a program
@@ -61,23 +67,61 @@ supervisord::program { 'myprogram':
}
```
+Or you can fully define your programs in hiera:
+
+```yaml
+supervisord::programs:
+ 'myprogram':
+ command: 'command --args'
+ autostart: yes
+ autorestart: 'true'
+ environment:
+ HOME: '/home/myuser'
+ PATH: '/bin:/sbin:/usr/bin:/usr/sbin'
+ SECRET: 'mysecret'
+```
+
### Configure a group
```ruby
supervisord::group { 'mygroup':
priority => 100,
- program => ['program1', 'program2', 'program3']
+ programs => ['program1', 'program2', 'program3']
+}
+```
+
+### Configure an eventlistener
+
+```ruby
+supervisord::eventlistener { 'mylistener':
+ command => 'command --args',
+ events => ['PROCESS_STATE', 'PROCESS_STATE_START']
+ priority => '100',
+ env_var => 'my_common_envs'
+}
+```
+
+### Run supervisorctl Commands
+
+Should you need to run a sequence of command with `supervisorctl` you can use the define type `supervisord::supervisorctl`
+
+```ruby
+supervisord::supervisorctl { 'restart_myapp':
+ command => 'restart',
+ process => 'myapp'
}
```
+You can also issue a command without specifying a process.
+
### Development
If you have suggestions or improvements please file an issue or pull request, i'll try and sort them as quickly as possble.
-If you submit a pull please try and include tests for the new functionality. The module is tested with [Travis-CI](https://travis-ci.org/ajcrowe/puppet-supervisord).
+If you submit a pull please try and include tests for the new functionality/fix. The module is tested with [Travis-CI](https://travis-ci.org/ajcrowe/puppet-supervisord).
### Credits
* Debian init script sourced from the system package.
-* RedHat/Centos init script sourced from https://github.com/Supervisor/initscripts
+* RedHat/Centos init script sourced from https://github.com/Supervisor/initscripts
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Rakefile b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Rakefile
index e00f7d11877dbd4ea875de657788f846f255ae6f..cd592af48f4132703ada25389cf9c6f2ae446267 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Rakefile
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/Rakefile
@@ -1,7 +1,28 @@
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-lint/tasks/puppet-lint'
-require 'rspec-system/rake_task'
+require 'puppet-syntax/tasks/puppet-syntax'
PuppetLint.configuration.send('disable_80chars')
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
-PuppetLint.configuration.send('disable_documentation')
+PuppetLint.configuration.send('disable_quoted_booleans')
+PuppetLint.configuration.send('disable_autoloader_layout')
+
+exclude_paths = [
+ "pkg/**/*",
+ "vendor/**/*",
+ "spec/**/*",
+]
+PuppetLint.configuration.ignore_paths = exclude_paths
+PuppetSyntax.exclude_paths = exclude_paths
+
+desc "Acceptance Tests"
+RSpec::Core::RakeTask.new(:acceptance) do |t|
+ t.pattern = 'spec/acceptance'
+end
+
+desc "Test Suite"
+task :test => [
+ :lint,
+ :syntax,
+ :spec
+]
\ No newline at end of file
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/lib/puppet/parser/functions/array2csv.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/lib/puppet/parser/functions/array2csv.rb
index cfa52b2bbf2f67050e0b5ede74535531cf47f88c..6d34d5d54744181e27447ed0a878d16cd9041b80 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/lib/puppet/parser/functions/array2csv.rb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/lib/puppet/parser/functions/array2csv.rb
@@ -1,14 +1,12 @@
#
# Converts the array to a csv string
#
-#
# $array = [ 'string1', 'string2', 'string3' ]
#
# becomes:
#
# $string = "string1,string2,string3"
#
-
module Puppet::Parser::Functions
newfunction(:array2csv, :type => :rvalue, :doc => <<-'EOS'
Returns a sorted csv formatted string from an array in the form
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/lib/puppet/parser/functions/hash2csv.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/lib/puppet/parser/functions/hash2csv.rb
index 6098b67367d1230c7ba6470722c8b35e6de6c236..5371328f2ff980627e55520cc3b87879d93dfb30 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/lib/puppet/parser/functions/hash2csv.rb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/lib/puppet/parser/functions/hash2csv.rb
@@ -1,7 +1,6 @@
#
# Converts the hash to a csv string
#
-#
# $hash = {
# HOME => '/home/user',
# ENV1 => 'env1',
@@ -12,7 +11,6 @@
#
# $string = "HOME='/home/user',ENV1='env1',SECRET='secret'"
#
-
module Puppet::Parser::Functions
newfunction(:hash2csv, :type => :rvalue, :doc => <<-'EOS'
Returns a csv formatted string from an hash in the form
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/config.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/config.pp
index cc8b1ee49d00b05fcef609cb5f4de75e9c9bdd89..93713729e8b5e4a546c7a934465364edc75a17d7 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/config.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/config.pp
@@ -1,6 +1,16 @@
+# Class: supervisord::config
+#
+# Configuration class for supervisor init and conf directories
+#
class supervisord::config inherits supervisord {
- file { [ "${supervisord::config_include}", "${supervisord::log_path}"]:
+ file { $supervisord::config_include:
+ ensure => directory,
+ owner => 'root',
+ mode => '0755'
+ }
+
+ file { $supervisord::log_path:
ensure => directory,
owner => 'root',
mode => '0755'
@@ -15,30 +25,26 @@ class supervisord::config inherits supervisord {
}
if $supervisord::install_init {
-
- $osname = downcase($::osfamily)
-
file { '/etc/init.d/supervisord':
ensure => present,
owner => 'root',
mode => '0755',
- content => template("supervisord/init/${osname}_init.erb")
+ content => template("supervisord/init/${::osfamily}/init.erb")
}
- if $supervisord::init_extras {
- file { $supervisord::init_extras:
+ if $supervisord::init_defaults {
+ file { $supervisord::init_defaults:
ensure => present,
owner => 'root',
mode => '0755',
- content => template("supervisord/init/${osname}_extra.erb")
+ content => template("supervisord/init/${::osfamily}/defaults.erb")
}
}
-
}
concat { $supervisord::config_file:
owner => 'root',
- group => 'root',
+ group => '0',
mode => '0755'
}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/eventlistener.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/eventlistener.pp
index 41b7cf6c7309c9d6a581df12db2038a752e18915..fd52d6e4da400c03fa348c5610bd709e04d37e47 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/eventlistener.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/eventlistener.pp
@@ -1,8 +1,16 @@
+# Define: supervisord::eventlistener
+#
+# This define creates an eventlistener configuration file
+#
+# Documentation on parameters available at:
+# http://supervisord.org/configuration.html#eventlistener-x-section-settings
+#
define supervisord::eventlistener(
$command,
$ensure = present,
+ $ensure_process = 'running',
+ $buffer_size = 10,
$events = undef,
- $buffer_size = undef,
$result_handler = undef,
$env_var = undef,
$process_name = undef,
@@ -15,16 +23,16 @@ define supervisord::eventlistener(
$startretries = undef,
$exitcodes = undef,
$stopsignal = undef,
- $stopwaitsec = undef,
+ $stopwaitsecs = undef,
$stopasgroup = undef,
$killasgroup = undef,
$user = undef,
$redirect_stderr = undef,
- $stdout_logfile = "${supervisord::log_path}/eventlistener_${name}.log",
+ $stdout_logfile = "eventlistener_${name}.log",
$stdout_logfile_maxbytes = undef,
$stdout_logfile_backups = undef,
$stdout_events_enabled = undef,
- $stderr_logfile = "${supervisord::log_path}/eventlistener_${name}.error",
+ $stderr_logfile = "eventlistener_${name}.error",
$stderr_logfile_maxbytes = undef,
$stderr_logfile_backups = undef,
$stderr_events_enabled = undef,
@@ -36,11 +44,45 @@ define supervisord::eventlistener(
include supervisord
+ # parameter validation
+ validate_string($command)
+ validate_re($ensure_process, ['running', 'stopped', 'removed'])
+ validate_re($buffer_size, '^\d+')
+ if $events { validate_array($events) }
+ if $result_handler { validate_string($result_handler) }
+ if $numprocs { validate_re($numprocs, '^\d+')}
+ if $numprocs_start { validate_re($numprocs_start, '^\d+')}
+ if $priority { validate_re($priority, '^\d+') }
+ if $autostart { validate_bool($autostart) }
+ if $autorestart { validate_re($autorestart, ['true', 'false', 'unexpected']) }
+ if $startsecs { validate_re($startsecs, '^\d+')}
+ if $startretries { validate_re($startretries, '^\d+')}
+ if $exitcodes { validate_string($exitcodes)}
+ if $stopsignal { validate_re($stopsignal, ['TERM', 'HUP', 'INT', 'QUIT', 'KILL', 'USR1', 'USR2']) }
+ if $stopwaitsecs { validate_re($stopwaitsecs, '^\d+')}
+ if $stopasgroup { validate_bool($stopasgroup) }
+ if $killasgroup { validate_bool($killasgroup) }
+ if $user { validate_string($user) }
+ if $redirect_stderr { validate_bool($redirect_stderr) }
+ validate_string($stdout_logfile)
+ if $stdout_logfile_maxbytes { validate_string($stdout_logfile_maxbytes) }
+ if $stdout_logfile_backups { validate_re($stdout_logfile_backups, '^\d+')}
+ if $stdout_events_enabled { validate_bool($stdout_events_enabled) }
+ validate_string($stderr_logfile)
+ if $stderr_logfile_maxbytes { validate_string($stderr_logfile_maxbytes) }
+ if $stderr_logfile_backups { validate_re($stderr_logfile_backups, '^\d+')}
+ if $stderr_events_enabled { validate_bool($stderr_events_enabled) }
+ if $directory { validate_absolute_path($directory) }
+ if $umask { validate_re($umask, '^[0-7][0-7][0-7]$') }
+
+ # convert environment data into a csv
if $env_var {
- $env_hash = hiera($env_var)
+ $env_hash = hiera_hash($env_var)
+ validate_hash($env_hash)
$env_string = hash2csv($env_hash)
}
elsif $environment {
+ validate_hash($environment)
$env_string = hash2csv($environment)
}
@@ -55,6 +97,22 @@ define supervisord::eventlistener(
owner => 'root',
mode => '0755',
content => template('supervisord/conf/eventlistener.erb'),
- notify => Class['supervisord::service']
+ notify => Class['supervisord::reload']
+ }
+
+ case $ensure_process {
+ 'stopped': {
+ supervisord::supervisorctl { "stop_${name}":
+ command => 'stop',
+ process => $name
+ }
+ }
+ 'removed': {
+ supervisord::supervisorctl { "remove_${name}":
+ command => 'remove',
+ process => $name
+ }
+ }
+ default: { }
}
}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/fcgi_program.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/fcgi_program.pp
index 923b1798bffcc23d65b5d0d2258fc38b226297f1..633b024917ecb6ae2d5eb132ba8cdc6b5e8a5be6 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/fcgi_program.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/fcgi_program.pp
@@ -1,7 +1,15 @@
+# Define: supervisord::fcgi_program
+#
+# This define creates an eventlistener configuration file
+#
+# Documentation on parameters available at:
+# http://supervisord.org/configuration.html#fcgi-program-x-section-settings
+#
define supervisord::fcgi_program(
$command,
$socket,
$ensure = present,
+ $ensure_process = 'running',
$socket_owner = undef,
$socket_mode = undef,
$env_var = undef,
@@ -15,17 +23,17 @@ define supervisord::fcgi_program(
$startretries = undef,
$exitcodes = undef,
$stopsignal = undef,
- $stopwaitsec = undef,
+ $stopwaitsecs = undef,
$stopasgroup = undef,
$killasgroup = undef,
$user = undef,
$redirect_stderr = undef,
- $stdout_logfile = "${supervisord::log_path}/fcgi-program_${name}.log",
+ $stdout_logfile = "fcgi-program_${name}.log",
$stdout_logfile_maxbytes = undef,
$stdout_logfile_backups = undef,
$stdout_capture_maxbytes = undef,
$stdout_events_enabled = undef,
- $stderr_logfile = "${supervisord::log_path}/fcgi-program_${name}.error",
+ $stderr_logfile = "fcgi-program_${name}.error",
$stderr_logfile_maxbytes = undef,
$stderr_logfile_backups = undef,
$stderr_capture_maxbytes = undef,
@@ -38,11 +46,46 @@ define supervisord::fcgi_program(
include supervisord
+ # parameter validation
+ validate_string($command)
+ validate_re($ensure_process, ['running', 'stopped', 'removed'])
+ validate_re($socket, ['^tcp:\/\/.*:\d+$', '^unix:\/\/\/'])
+ if $process_name { validate_string($process_name) }
+ if $numprocs { validate_re($numprocs, '^\d+')}
+ if $numprocs_start { validate_re($numprocs_start, '^\d+')}
+ if $priority { validate_re($priority, '^\d+') }
+ if $autostart { validate_bool($autostart) }
+ if $autorestart { validate_re($autorestart, ['true', 'false', 'unexpected']) }
+ if $startsecs { validate_re($startsecs, '^\d+')}
+ if $startretries { validate_re($startretries, '^\d+')}
+ if $exitcodes { validate_string($exitcodes)}
+ if $stopsignal { validate_re($stopsignal, ['TERM', 'HUP', 'INT', 'QUIT', 'KILL', 'USR1', 'USR2']) }
+ if $stopwaitsecs { validate_re($stopwaitsecs, '^\d+')}
+ if $stopasgroup { validate_bool($stopasgroup) }
+ if $killasgroup { validate_bool($killasgroup) }
+ if $user { validate_string($user) }
+ if $redirect_stderr { validate_bool($redirect_stderr) }
+ validate_string($stdout_logfile)
+ if $stdout_logfile_maxbytes { validate_string($stdout_logfile_maxbytes) }
+ if $stdout_logfile_backups { validate_re($stdout_logfile_backups, '^\d+')}
+ if $stdout_capture_maxbytes { validate_string($stdout_capture_maxbytes) }
+ if $stdout_events_enabled { validate_bool($stdout_events_enabled) }
+ validate_string($stderr_logfile)
+ if $stderr_logfile_maxbytes { validate_string($stderr_logfile_maxbytes) }
+ if $stderr_logfile_backups { validate_re($stderr_logfile_backups, '^\d+')}
+ if $stderr_capture_maxbytes { validate_string($stderr_capture_maxbytes) }
+ if $stderr_events_enabled { validate_bool($stderr_events_enabled) }
+ if $directory { validate_absolute_path($directory) }
+ if $umask { validate_re($umask, '^[0-7][0-7][0-7]$') }
+
+ # convert environment data into a csv
if $env_var {
- $env_hash = hiera($env_var)
+ $env_hash = hiera_hash($env_var)
+ validate_hash($env_hash)
$env_string = hash2csv($env_hash)
}
elsif $environment {
+ validate_hash($environment)
$env_string = hash2csv($environment)
}
@@ -53,6 +96,22 @@ define supervisord::fcgi_program(
owner => 'root',
mode => '0755',
content => template('supervisord/conf/fcgi_program.erb'),
- notify => Class['supervisord::service']
+ notify => Class['supervisord::reload']
+ }
+
+ case $ensure_process {
+ 'stopped': {
+ supervisord::supervisorctl { "stop_${name}":
+ command => 'stop',
+ process => $name
+ }
+ }
+ 'removed': {
+ supervisord::supervisorctl { "remove_${name}":
+ command => 'remove',
+ process => $name
+ }
+ }
+ default: { }
}
}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/group.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/group.pp
index 0f6b1ca2adc7618efc3c2fe33aeddf55efb06b7b..45cb29cf29000c7d4f67d55b85c989b21955351a 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/group.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/group.pp
@@ -1,3 +1,10 @@
+# Define: supervisord::group
+#
+# This define creates an group configuration file
+#
+# Documentation on parameters available at:
+# http://supervisord.org/configuration.html#group-x-section-settings
+#
define supervisord::group (
$programs,
$ensure = present,
@@ -6,6 +13,10 @@ define supervisord::group (
include supervisord
+ # parameter validation
+ validate_array($programs)
+ if $priority { validate_re($priority, '^\d+', "invalid priority value of: ${priority}") }
+
$progstring = array2csv($programs)
$conf = "${supervisord::config_include}/group_${name}.conf"
@@ -13,6 +24,7 @@ define supervisord::group (
ensure => $ensure,
owner => 'root',
mode => '0755',
- content => template('supervisord/conf/group.erb')
+ content => template('supervisord/conf/group.erb'),
+ notify => Class['supervisord::reload']
}
}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/init.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/init.pp
index 801c46b3b368542da671454dfed9bc8bc33cf73f..1d2d55148d9ec11d30bf6e1e9d4ef9747bf8690f 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/init.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/init.pp
@@ -1,12 +1,18 @@
-# This class installs supervisord and configured it to run on boot
+# Class: supervisord
+#
+# This class installs supervisord via pip
+#
class supervisord(
$package_ensure = $supervisord::params::package_ensure,
+ $package_provider = $supervisord::params::package_provider,
$service_ensure = $supervisord::params::service_ensure,
+ $service_name = $supervisord::params::service_name,
$install_init = $supervisord::params::install_init,
$install_pip = false,
- $init_extras = $supervisord::params::init_extras,
+ $init_defaults = $supervisord::params::init_defaults,
$setuptools_url = $supervisord::params::setuptools_url,
$executable = $supervisord::params::executable,
+ $executable_ctl = $supervisord::params::executable_ctl,
$log_path = $supervisord::params::log_path,
$log_file = $supervisord::params::log_file,
@@ -19,20 +25,20 @@ class supervisord(
$nodaemon = $supervisord::params::nodaemon,
$minfds = $supervisord::params::minfds,
$minprocs = $supervisord::params::minprocs,
- $config_path = $supervisord::params::config_path,
$config_include = $supervisord::params::config_include,
$config_file = $supervisord::params::config_file,
+ $config_dirs = undef,
$umask = $supervisord::params::umask,
$unix_socket = $supervisord::params::unix_socket,
$unix_socket_file = $supervisord::params::unix_socket_file,
$unix_socket_mode = $supervisord::params::unix_socket_mode,
$unix_socket_owner = $supervisord::params::unix_socket_owner,
- $unix_scoket_group = $supervisord::params::unix_socket_group,
+ $unix_socket_group = $supervisord::params::unix_socket_group,
$inet_server = $supervisord::params::inet_server,
- $inet_server_hostname = $supervisord::params::inet_hostname,
- $inet_server_port = $supervisord::params::inet_port,
+ $inet_server_hostname = $supervisord::params::inet_server_hostname,
+ $inet_server_port = $supervisord::params::inet_server_port,
$unix_auth = false,
$unix_username = undef,
@@ -47,26 +53,76 @@ class supervisord(
$childlogdir = undef,
$environment = undef,
$env_var = undef,
+ $directory = undef,
$strip_ansi = false,
- $nocleanup = false
+ $nocleanup = false,
+
+ $eventlisteners = {},
+ $fcgi_programs = {},
+ $groups = {},
+ $programs = {}
) inherits supervisord::params {
+ validate_bool($install_pip)
+ validate_bool($install_init)
+ validate_bool($nodaemon)
+ validate_bool($unix_auth)
+ validate_bool($inet_auth)
+ validate_bool($strip_ansi)
+ validate_bool($nocleanup)
+
+ validate_hash($eventlisteners)
+ validate_hash($fcgi_programs)
+ validate_hash($groups)
+ validate_hash($programs)
+
+ validate_absolute_path($config_include)
+ validate_absolute_path($log_path)
+ validate_absolute_path($run_path)
+ if $childlogdir { validate_absolute_path($childlogdir) }
+ if $directory { validate_absolute_path($directory) }
+
+ $log_levels = ['^critical$', '^error$', '^warn$', '^info$', '^debug$', '^trace$', '^blather$']
+ validate_re($log_level, $log_levels, "invalid log_level: ${log_level}")
+ validate_re($umask, '^0[0-7][0-7]$', "invalid umask: ${umask}.")
+ validate_re($unix_socket_mode, '^[0-7][0-7][0-7][0-7]$', "invalid unix_socket_mode: ${unix_socket_mode}")
+
+ if ! is_integer($logfile_backups) { fail("invalid logfile_backups: ${logfile_backups}.")}
+ if ! is_integer($minfds) { fail("invalid minfds: ${minfds}.")}
+ if ! is_integer($minprocs) { fail("invalid minprocs: ${minprocs}.")}
+ if ! is_integer($inet_server_port) { fail("invalid inet_server_port: ${inet_server_port}.")}
+
if $env_var {
+ validate_hash($env_var)
$env_hash = hiera($env_var)
$env_string = hash2csv($env_hash)
}
elsif $environment {
+ validate_hash($environment)
$env_string = hash2csv($environment)
}
+ if $config_dirs {
+ validate_array($config_dirs)
+ $config_include_string = join($config_dirs, " ")
+ }
+ else {
+ $config_include_string = "${config_include}/*.conf"
+ }
+
+ create_resources('supervisord::eventlistener', $eventlisteners)
+ create_resources('supervisord::fcgi_program', $fcgi_programs)
+ create_resources('supervisord::group', $groups)
+ create_resources('supervisord::program', $programs)
+
if $install_pip {
include supervisord::pip
Class['supervisord::pip'] -> Class['supervisord::install']
}
- include supervisord::install, supervisord::config, supervisord::service
+ include supervisord::install, supervisord::config, supervisord::service, supervisord::reload
Class['supervisord::install'] -> Class['supervisord::config'] ~> Class['supervisord::service']
-
+ Class['supervisord::reload'] -> Supervisord::Supervisorctl <| |>
}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/install.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/install.pp
index 1d36ec68334453389ce403f9efc8be723f6a1629..31a63f3b59ea2aaf9734f90da97ed1e018f91954 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/install.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/install.pp
@@ -1,6 +1,10 @@
+# Class supervisord::install
+#
+# Installs supervisor package (defaults to using pip)
+#
class supervisord::install inherits supervisord {
package { 'supervisor':
ensure => $supervisord::package_ensure,
- provider => 'pip'
+ provider => $supervisord::package_provider
}
}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/params.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/params.pp
index 87d17d16179d77661326a958df3f31d25ba32414..f9d82e5804b0e0fbc5ab46b0d320eb1f5f36edea 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/params.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/params.pp
@@ -1,13 +1,21 @@
+# Class: supervisord::params
+#
+# Default parameters for supervisord
+#
class supervisord::params {
+ # default supervisord params
$package_ensure = 'installed'
+ $package_provider = 'pip'
$service_ensure = 'running'
+ $service_name = 'supervisord'
$package_name = 'supervisor'
- $executable = '/usr/local/bin/supervisord'
+ $executable = 'supervisord'
+ $executable_ctl = 'supervisorctl'
$run_path = '/var/run'
- $pid_file = "${run_path}/supervisord.pid"
+ $pid_file = 'supervisord.pid'
$log_path = '/var/log/supervisor'
- $log_file = "${log_path}/supervisord.log"
+ $log_file = 'supervisord.log'
$logfile_maxbytes = '50MB'
$logfile_backups = '10'
$log_level = 'info'
@@ -20,7 +28,7 @@ class supervisord::params {
$setuptools_url = 'https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py'
$unix_socket = true
- $unix_socket_file = "${run_path}/supervisor.sock"
+ $unix_socket_file = 'supervisor.sock'
$unix_socket_mode = '0700'
$unix_socket_owner = 'nobody'
@@ -31,17 +39,17 @@ class supervisord::params {
case $::osfamily {
'RedHat': {
- $init_extras = '/etc/sysconfig/supervisord'
+ $init_defaults = '/etc/sysconfig/supervisord'
$unix_socket_group = 'nobody'
$install_init = true
}
'Debian': {
- $init_extras = '/etc/default/supervisor'
+ $init_defaults = '/etc/default/supervisor'
$unix_socket_group = 'nogroup'
$install_init = true
}
default: {
- $init_extras = false
+ $init_defaults = false
$unix_socket_group = 'nogroup'
$install_init = false
}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/pip.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/pip.pp
index c05f2d7f64bee111bfeb28fc68b558d1e3d73bf1..71dd3653da3ccc6f87c51429b7ae28aae2afd355 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/pip.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/pip.pp
@@ -1,8 +1,10 @@
+# Class: supervisord::pip
+#
+# Optional class to install setuptool and pip
+#
class supervisord::pip inherits supervisord {
- Exec {
- path => '/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin'
- }
+ Exec { path => [ '/usr/bin/', '/usr/local/bin', '/bin', '/usr/local/sbin', '/usr/sbin', '/sbin' ] }
exec { 'install_setuptools':
command => "curl ${supervisord::setuptools_url} | python",
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/program.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/program.pp
index 8a00d41c77cae0bd8e1b499f3c6a5cec9ccf78a9..617a68ab208dc38ad3612566bc5d8a062168e510 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/program.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/program.pp
@@ -1,6 +1,14 @@
+# Define: supervisord::program
+#
+# This define creates an program configuration file
+#
+# Documentation on parameters available at:
+# http://supervisord.org/configuration.html#program-x-section-settings
+#
define supervisord::program(
$command,
$ensure = present,
+ $ensure_process = 'running',
$env_var = undef,
$process_name = undef,
$numprocs = undef,
@@ -12,17 +20,17 @@ define supervisord::program(
$startretries = undef,
$exitcodes = undef,
$stopsignal = undef,
- $stopwaitsec = undef,
+ $stopwaitsecs = undef,
$stopasgroup = undef,
$killasgroup = undef,
$user = undef,
$redirect_stderr = undef,
- $stdout_logfile = "${supervisord::log_path}/program_${name}.log",
+ $stdout_logfile = "program_${name}.log",
$stdout_logfile_maxbytes = undef,
$stdout_logfile_backups = undef,
$stdout_capture_maxbytes = undef,
$stdout_events_enabled = undef,
- $stderr_logfile = "${supervisord::log_path}/program_${name}.error",
+ $stderr_logfile = "program_${name}.error",
$stderr_logfile_maxbytes = undef,
$stderr_logfile_backups = undef,
$stderr_capture_maxbytes = undef,
@@ -35,11 +43,45 @@ define supervisord::program(
include supervisord
+ # parameter validation
+ validate_string($command)
+ validate_re($ensure_process, ['running', 'stopped', 'removed'])
+ if $process_name { validate_string($process_name) }
+ if $numprocs { validate_re($numprocs, '^\d+')}
+ if $numprocs_start { validate_re($numprocs_start, '^\d+')}
+ if $priority { validate_re($priority, '^\d+') }
+ if $autostart { validate_bool($autostart) }
+ if $autorestart { validate_re($autorestart, ['true', 'false', 'unexpected']) }
+ if $startsecs { validate_re($startsecs, '^\d+')}
+ if $startretries { validate_re($startretries, '^\d+')}
+ if $exitcodes { validate_string($exitcodes)}
+ if $stopsignal { validate_re($stopsignal, ['TERM', 'HUP', 'INT', 'QUIT', 'KILL', 'USR1', 'USR2']) }
+ if $stopwaitsecs { validate_re($stopwaitsecs, '^\d+')}
+ if $stopasgroup { validate_bool($stopasgroup) }
+ if $killasgroup { validate_bool($killasgroup) }
+ if $user { validate_string($user) }
+ if $redirect_stderr { validate_bool($redirect_stderr) }
+ validate_string($stdout_logfile)
+ if $stdout_logfile_maxbytes { validate_string($stdout_logfile_maxbytes) }
+ if $stdout_logfile_backups { validate_re($stdout_logfile_backups, '^\d+')}
+ if $stdout_capture_maxbytes { validate_string($stdout_capture_maxbytes) }
+ if $stdout_events_enabled { validate_bool($stdout_events_enabled) }
+ validate_string($stderr_logfile)
+ if $stderr_logfile_maxbytes { validate_string($stderr_logfile_maxbytes) }
+ if $stderr_logfile_backups { validate_re($stderr_logfile_backups, '^\d+')}
+ if $stderr_capture_maxbytes { validate_string($stderr_capture_maxbytes) }
+ if $stderr_events_enabled { validate_bool($stderr_events_enabled) }
+ if $directory { validate_absolute_path($directory) }
+ if $umask { validate_re($umask, '^[0-7][0-7][0-7]$') }
+
+ # convert environment data into a csv
if $env_var {
- $env_hash = hiera($env_var)
+ $env_hash = hiera_hash($env_var)
+ validate_hash($env_hash)
$env_string = hash2csv($env_hash)
}
elsif $environment {
+ validate_hash($environment)
$env_string = hash2csv($environment)
}
@@ -50,6 +92,22 @@ define supervisord::program(
owner => 'root',
mode => '0755',
content => template('supervisord/conf/program.erb'),
- notify => Class['supervisord::service']
+ notify => Class['supervisord::reload']
+ }
+
+ case $ensure_process {
+ 'stopped': {
+ supervisord::supervisorctl { "stop_${name}":
+ command => 'stop',
+ process => $name
+ }
+ }
+ 'removed': {
+ supervisord::supervisorctl { "remove_${name}":
+ command => 'remove',
+ process => $name
+ }
+ }
+ default: { }
}
}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/reload.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/reload.pp
new file mode 100644
index 0000000000000000000000000000000000000000..e5a4637e43080bee7bb6abc04f9a25b92555337e
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/reload.pp
@@ -0,0 +1,21 @@
+# Class: supervisord::reload
+#
+# Class to reread and update supervisord with supervisorctl
+#
+class supervisord::reload {
+
+ Exec { path => [ '/usr/bin/', '/usr/local/bin' ] }
+
+ $supervisorctl = $::supervisord::executable_ctl
+
+ exec { 'supervisorctl_reread':
+ command => "${supervisorctl} reread",
+ refreshonly => true,
+ returns => [0, 2],
+ }
+ exec { 'supervisorctl_update':
+ command => "${supervisorctl} update",
+ refreshonly => true,
+ returns => [0, 2],
+ }
+}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/service.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/service.pp
index 6e17976165de991d0ac8e2e63e3278aa3bfce9fc..f02a0d0a081000fd78bc70df2c0d4390df6cbf7f 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/service.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/service.pp
@@ -1,5 +1,9 @@
+# Class: supervisord::service
+#
+# Class for the supervisord service
+#
class supervisord::service inherits supervisord {
- service { 'supervisord':
+ service { $supervisord::service_name:
ensure => $supervisord::service_ensure,
enable => true,
hasrestart => true,
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/supervisorctl.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/supervisorctl.pp
new file mode 100644
index 0000000000000000000000000000000000000000..ec4dbed93379a12da93fb33e65e0dd3d20f1bca4
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/supervisorctl.pp
@@ -0,0 +1,29 @@
+# Define: supervisord:supervisorctl
+#
+# This define executes command with the supervisorctl tool
+#
+define supervisord::supervisorctl(
+ $command,
+ $process = undef,
+ $refreshonly = false
+) {
+
+ Exec { path => [ '/usr/bin/', '/usr/local/bin' ] }
+
+ validate_string($command)
+ validate_string($process)
+
+ $supervisorctl = $::supervisord::executable_ctl
+
+ if $process {
+ $cmd = join([$supervisorctl, $command, $process], ' ')
+ }
+ else {
+ $cmd = join([$supervisorctl, $command])
+ }
+
+ exec { "supervisorctl_command_${name}":
+ command => $cmd,
+ refreshonly => $refreshonly
+ }
+}
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/centos-65-i386.yml b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/centos-65-i386.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f8d4013a31bc2d413df8502f54c0128518894c6c
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/centos-65-i386.yml
@@ -0,0 +1,10 @@
+HOSTS:
+ centos-65-i386:
+ roles:
+ - master
+ platform: el-6-i386
+ box : centos-65-i386-virtualbox-nocm
+ box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-65-i386-virtualbox-nocm.box
+ hypervisor : vagrant
+CONFIG:
+ type: foss
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/centos-65-x64.yml b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/centos-65-x64.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7535c104afb301fcb0b247e3e04fe1fcf7fc1682
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/centos-65-x64.yml
@@ -0,0 +1,10 @@
+HOSTS:
+ centos-65-x64:
+ roles:
+ - master
+ platform: el-6-x86_64
+ box : centos-65-x64-virtualbox-nocm
+ box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box
+ hypervisor : vagrant
+CONFIG:
+ type: foss
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/debian-73-i386.yml b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/debian-73-i386.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d1233aa83d1b8ff5e0e1951307db96ca23e7762e
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/debian-73-i386.yml
@@ -0,0 +1,10 @@
+HOSTS:
+ debian-73-i386:
+ roles:
+ - master
+ platform: debian-7-i386
+ box : debian-73-i386-virtualbox-nocm
+ box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-73-i386-virtualbox-nocm.box
+ hypervisor : vagrant
+CONFIG:
+ type: foss
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/debian-73-x64.yml b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/debian-73-x64.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5b87870a9093a3c7f5abdabe39ff740ef621d45d
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/debian-73-x64.yml
@@ -0,0 +1,10 @@
+HOSTS:
+ debian-73-x64:
+ roles:
+ - master
+ platform: debian-7-amd64
+ box : debian-73-x64-virtualbox-nocm
+ box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-nocm.box
+ hypervisor : vagrant
+CONFIG:
+ type: foss
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/default.yml b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/default.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5b87870a9093a3c7f5abdabe39ff740ef621d45d
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/default.yml
@@ -0,0 +1,10 @@
+HOSTS:
+ debian-73-x64:
+ roles:
+ - master
+ platform: debian-7-amd64
+ box : debian-73-x64-virtualbox-nocm
+ box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-nocm.box
+ hypervisor : vagrant
+CONFIG:
+ type: foss
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/supervisord_spec.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/supervisord_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..47d052a4eecb14718b7e79d510b06a98c9275f78
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/supervisord_spec.rb
@@ -0,0 +1,114 @@
+require 'spec_helper_acceptance'
+
+describe 'supervisord install' do
+
+ context 'default parameters with pip and init install' do
+ it 'should work with no errors' do
+ pp = <<-EOS
+ class { 'supervisord': install_pip => true, install_init => true}
+ EOS
+
+ expect(apply_manifest(pp).exit_code).to_not eq(1)
+ expect(apply_manifest(pp).exit_code).to eq(0)
+ end
+
+ describe service('supervisord') do
+ it { should be_enabled }
+ it { should be_running }
+ it 'should restart successfully' do
+ cmd="service supervisord restart"
+ expect(shell(cmd).exit_code).to_not eq(1)
+ end
+ end
+ end
+end
+
+describe 'supervisord::program' do
+ context 'create a program config' do
+ it 'should install a program file' do
+
+ pp = <<-EOS
+ include supervisord
+ supervisord::program { 'test':
+ command => 'echo',
+ priority => '100',
+ environment => {
+ 'HOME' => '/root',
+ 'PATH' => '/bin',
+ }
+ }
+ EOS
+
+ expect(apply_manifest(pp).exit_code).to_not eq(1)
+ expect(apply_manifest(pp).exit_code).to eq(0)
+ end
+
+ it 'should contain the correct values' do
+ cmd='grep command=echo /etc/supervisor.d/program_test.conf'
+ expect(shell(cmd).exit_code).to eq(0)
+ cmd='grep priority=100 /etc/supervisor.d/program_test.conf'
+ expect(shell(cmd).exit_code).to eq(0)
+ cmd='grep "environment=" /etc/supervisor.d/program_test.conf'
+ expect(shell(cmd).exit_code).to eq(0)
+ end
+ end
+end
+
+describe 'supervisord::fcgi-program' do
+ context 'create fcgi-program config' do
+ it 'should install a fcgi-program file' do
+
+ pp = <<-EOS
+ include supervisord
+ supervisord::fcgi_program { 'test':
+ socket => 'tcp://localhost:1000',
+ command => 'echo',
+ priority => '100',
+ environment => {
+ 'HOME' => '/root',
+ 'PATH' => '/bin',
+ }
+ }
+ EOS
+
+ expect(apply_manifest(pp).exit_code).to_not eq(1)
+ expect(apply_manifest(pp).exit_code).to eq(0)
+ end
+
+ it 'should contain the correct values' do
+ cmd='grep socket=tcp://localhost:1000 /etc/supervisor.d/fcgi-program_test.conf'
+ expect(shell(cmd).exit_code).to eq(0)
+ cmd="grep command=echo /etc/supervisor.d/fcgi-program_test.conf"
+ expect(shell(cmd).exit_code).to eq(0)
+ cmd="grep priority=100 /etc/supervisor.d/fcgi-program_test.conf"
+ expect(shell(cmd).exit_code).to eq(0)
+ cmd='grep "environment=" /etc/supervisor.d/fcgi-program_test.conf'
+ expect(shell(cmd).exit_code).to eq(0)
+ end
+ end
+end
+
+describe 'supervisord::group' do
+ context 'create group config' do
+ it 'should install a group config' do
+
+ pp = <<-EOS
+ include supervisord
+ supervisord::group { 'test':
+ programs => ['test'],
+ priority => '100',
+ }
+ EOS
+
+ expect(apply_manifest(pp).exit_code).to_not eq(1)
+ expect(apply_manifest(pp).exit_code).to eq(0)
+ end
+
+ it 'should contain the correct values' do
+ cmd='grep "programs=test" /etc/supervisor.d/group_test.conf'
+ expect(shell(cmd).exit_code).to eq(0)
+ cmd="grep priority=100 /etc/supervisor.d/group_test.conf"
+ expect(shell(cmd).exit_code).to eq(0)
+ end
+ end
+end
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/classes/supervisord_spec.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/classes/supervisord_spec.rb
index 238876c7dcd5f806cfd46a063febc338f2daa892..b845920f6feba25804d1d4736ae13021ef9aba77 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/classes/supervisord_spec.rb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/classes/supervisord_spec.rb
@@ -3,14 +3,26 @@ require 'spec_helper'
describe 'supervisord' do
concatdir = '/var/lib/puppet/concat'
- configfile = '/etc/supervisord.conf'
let(:facts) {{ :concat_basedir => concatdir }}
it { should contain_class('supervisord') }
it { should contain_class('supervisord::install') }
it { should contain_class('supervisord::config') }
it { should contain_class('supervisord::service') }
- it { should contain_concat__fragment('supervisord_main').with_content(/logfile/) }
+ it { should contain_class('supervisord::params') }
+ it { should contain_class('supervisord::reload') }
+ it { should contain_package('supervisor') }
+
+ describe '#service_name' do
+ context 'default' do
+ it { should contain_service('supervisord') }
+ end
+
+ context 'specified' do
+ let(:params) {{ :service_name => 'myservicename' }}
+ it { should contain_service('myservicename') }
+ end
+ end
describe '#install_pip' do
context 'default' do
@@ -18,8 +30,16 @@ describe 'supervisord' do
end
context 'true' do
- let (:params) {{ :install_pip => true }}
+ let(:params) {{ :install_pip => true }}
it { should contain_class('supervisord::pip') }
+ it { should contain_exec('install_setuptools') }
+ it { should contain_exec('install_pip') }
+ end
+
+ context 'true and RedHat' do
+ let(:params) {{ :install_pip => true }}
+ let(:facts) {{ :osfamily => 'RedHat', :concat_basedir => concatdir }}
+ it { should contain_exec('pip_provider_name_fix') }
end
end
@@ -28,11 +48,6 @@ describe 'supervisord' do
it { should contain_class('supervisord').without_env_hash }
it { should contain_class('supervisord').without_env_string }
end
- #context 'is specified' do
- # let(:params) {{ :env_var => 'foovars' }}
- # let(:hiera_data) {{ :foovars => { 'key1' => 'value1', 'key2' => 'value2' } }}
- # it { should contain_concat__fragment('supervisord_main').with_content(/environment=key1='value1',key2='value2'/) }
- #end
end
describe '#environment' do
@@ -41,7 +56,8 @@ describe 'supervisord' do
end
context 'is specified' do
let(:params) {{ :environment => { 'key1' => 'value1', 'key2' => 'value2' } }}
- it { should contain_concat__fragment('supervisord_main').with_content(/environment=key1='value1',key2='value2'/) }
+ it { should contain_concat__fragment('supervisord_main')\
+ .with_content(/environment=key1='value1',key2='value2'/) }
end
end
@@ -54,17 +70,20 @@ describe 'supervisord' do
it { should_not contain_file('/etc/init.d/supervisord') }
end
- describe 'on supported OS'
+ describe 'on supported OS' do
context 'with Debian' do
let(:facts) {{ :osfamily => 'Debian', :concat_basedir => concatdir }}
it { should contain_file('/etc/init.d/supervisord') }
+ it { should contain_file('/etc/default/supervisor') }
end
context 'with RedHat' do
let(:facts) {{ :osfamily => 'RedHat', :concat_basedir => concatdir }}
it { should contain_file('/etc/init.d/supervisord') }
+ it { should contain_file('/etc/sysconfig/supervisord') }
end
end
+ end
describe '#unix_socket' do
context 'default' do
@@ -89,10 +108,192 @@ describe 'supervisord' do
describe '#run_path' do
context 'default' do
it { should_not contain_file('/var/run') }
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/pidfile=\/var\/run\/supervisord.pid$/) }
+ end
+ context 'is specified' do
+ let(:params) {{ :run_path => '/opt/supervisord/run' }}
+ it { should contain_file('/opt/supervisord/run') }
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/pidfile=\/opt\/supervisord\/run\/supervisord.pid$/) }
+ end
+ end
+
+ describe '#log_path' do
+ context 'default' do
+ it { should contain_file('/var/log/supervisor') }
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/logfile=\/var\/log\/supervisor\/supervisord.log$/) }
+ end
+ context 'is specified' do
+ let(:params) {{ :log_path => '/opt/supervisord/logs' }}
+ it { should contain_file('/opt/supervisord/logs')}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/logfile=\/opt\/supervisord\/logs\/supervisord.log$/) }
+ end
+ end
+
+ describe '#config_include' do
+ context 'default' do
+ it { should contain_file('/etc/supervisor.d') }
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/files=\/etc\/supervisor.d\/\*.conf$/) }
+ end
+ context 'is specified' do
+ let(:params) {{ :config_include => '/opt/supervisord/conf.d' }}
+ it { should contain_file('/opt/supervisord/conf.d') }
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/files=\/opt\/supervisord\/conf.d\/\*.conf$/) }
+ end
+ end
+
+ describe '#config_dirs' do
+ context 'is specified' do
+ let(:params) {{ :config_dirs => ['/etc/supervisor.d/*.conf', '/opt/supervisor.d/*', '/usr/share/supervisor.d/*.config'] }}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/files=\/etc\/supervisor.d\/\*.conf \/opt\/supervisor.d\/\* \/usr\/share\/supervisor.d\/\*.config$/) }
+ end
+ end
+
+ describe '#config_file' do
+ context 'default' do
+ it { should contain_file('/etc/supervisord.conf') }
+ end
+ context 'is specified' do
+ let(:params) {{ :config_file => '/opt/supervisord/supervisor.conf' }}
+ it { should contain_file('/opt/supervisord/supervisor.conf') }
+ end
+ end
+
+ describe '#nodaemon' do
+ context 'default' do
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/nodaemon=false$/) }
+ end
+ context 'true' do
+ let(:params) {{ :nodaemon => true }}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/nodaemon=true$/) }
+ end
+ context 'invalid' do
+ let(:params) {{ :nodaemon => 'invalid' }}
+ it { expect { raise_error(Puppet::Error, /is not a boolean/) }}
+ end
+ end
+
+ describe '#minfds' do
+ context 'default' do
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/minfds=1024$/) }
+ end
+ context 'specified' do
+ let(:params) {{ :minfds => 2048 }}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/minfds=2048$/) }
+ end
+ context 'invalid' do
+ let(:params) {{ :minfds => 'string' }}
+ it { expect { raise_error(Puppet::Error, /invalid minfds/) }}
+ end
+ end
+
+ describe '#minprocs' do
+ context 'default' do
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/minprocs=200$/) }
+ end
+ context 'specified' do
+ let(:params) {{ :minprocs => 300 }}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/minprocs=300$/) }
+ end
+ context 'invalid' do
+ let(:params) {{ :minfds => 'string' }}
+ it { expect { raise_error(Puppet::Error, /invalid minprocs/) }}
+ end
+ end
+
+ describe '#strip_ansi' do
+ context 'default' do
+ it { should_not contain_concat__fragment('supervisord_main') \
+ .with_content(/strip_ansi$/) }
+ end
+ context 'true' do
+ let(:params) {{ :strip_ansi => true }}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/strip_ansi=true$/) }
+ end
+ context 'invalid' do
+ let(:params) {{ :strip_ansi => 'string' }}
+ it { expect { raise_error(Puppet::Error, /is not a boolean/) }}
+ end
+ end
+
+ describe '#user' do
+ context 'default' do
+ it { should_not contain_concat__fragment('supervisord_main') \
+ .with_content(/user$/) }
+ end
+ context 'specified' do
+ let(:params) {{ :user => 'myuser' }}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/user=myuser$/) }
+ end
+ end
+
+ describe '#identifier' do
+ context 'default' do
+ it { should_not contain_concat__fragment('supervisord_main') \
+ .with_content(/identifier$/) }
+ end
+ context 'specified' do
+ let(:params) {{ :identifier => 'myidentifier' }}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/identifier=myidentifier$/) }
+ end
+ end
+
+ describe '#directory' do
+ context 'default' do
+ it { should_not contain_concat__fragment('supervisord_main') \
+ .with_content(/directory$/) }
+ end
+ context 'specified' do
+ let(:params) {{ :directory => '/opt/supervisord' }}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/directory=\/opt\/supervisord$/) }
+ end
+ end
+
+ describe '#nocleanup' do
+ context 'default' do
+ it { should_not contain_concat__fragment('supervisord_main') \
+ .with_content(/nocleanup$/) }
+ end
+ context 'true' do
+ let(:params) {{ :nocleanup => true }}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/nocleanup=true$/) }
+ end
+ context 'invalid' do
+ let(:params) {{ :nocleanup => 'string' }}
+ it { expect { raise_error(Puppet::Error, /is not a boolean/) }}
+ end
+ end
+
+ describe '#childlogdir' do
+ context 'default' do
+ it { should_not contain_concat__fragment('supervisord_main') \
+ .with_content(/childlogdir$/) }
+ end
+ context 'specified' do
+ let(:params) {{ :childlogdir => '/opt/supervisord/logdir' }}
+ it { should contain_concat__fragment('supervisord_main') \
+ .with_content(/childlogdir=\/opt\/supervisord\/logdir$/) }
end
- context 'custom setting' do
- let(:params) {{ :run_path => '/var/run/supervisord'}}
- it { should contain_file('/var/run/supervisord') }
+ context 'invalid' do
+ let(:params) {{ :childlogdir => 'not_a_path' }}
+ it { expect { raise_error(Puppet::Error, /is not an absolute path/) }}
end
end
end
\ No newline at end of file
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/eventlistener_spec.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/eventlistener_spec.rb
index 6e04f44f97bc0436ceed164f25bd6add590df532..1083b8a32305ba9c1ba53319eb3d1f6d89833fb6 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/eventlistener_spec.rb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/eventlistener_spec.rb
@@ -2,14 +2,85 @@ require 'spec_helper'
describe 'supervisord::eventlistener', :type => :define do
let(:title) {'foo'}
- let(:default_params) {{ :command => 'bar',
- :stdout_logfile => '/var/log/supervisor/eventlistener_foo.log',
- :stderr_logfile => '/var/log/supervisor/eventlistener_foo.error',
- }}
- let(:params) { default_params }
let(:facts) {{ :concat_basedir => '/var/lib/puppet/concat' }}
+ let(:default_params) do
+ {
+ :command => 'bar',
+ :process_name => '%(process_num)s',
+ :events => ['PROCESS_STATE', 'PROCESS_STATE_STARTING'],
+ :buffer_size => 10,
+ :numprocs => '1',
+ :numprocs_start => '0',
+ :priority => '999',
+ :autostart => true,
+ :autorestart => 'unexpected',
+ :startsecs => '1',
+ :startretries => '3',
+ :exitcodes => '0,2',
+ :stopsignal => 'TERM',
+ :stopwaitsecs => '10',
+ :stopasgroup => true,
+ :killasgroup => true,
+ :user => 'baz',
+ :redirect_stderr => true,
+ :stdout_logfile => 'eventlistener_foo.log',
+ :stdout_logfile_maxbytes => '50MB',
+ :stdout_logfile_backups => '10',
+ :stdout_events_enabled => true,
+ :stderr_logfile => 'eventlistener_foo.error',
+ :stderr_logfile_maxbytes => '50MB',
+ :stderr_logfile_backups => '10',
+ :stderr_events_enabled => true,
+ :environment => { 'env1' => 'value1', 'env2' => 'value2' },
+ :directory => '/opt/supervisord/chroot',
+ :umask => '022',
+ :serverurl => 'AUTO'
+ }
+ end
- it { should contain_supervisord__eventlistener('foo') }
- it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/command=bar/) }
+ context 'default' do
+ let(:params) { default_params }
+ it { should contain_supervisord__eventlistener('foo') }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/\[eventlistener:foo\]/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/command=bar/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/process_name=\%\(process_num\)s/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/events=PROCESS_STATE,PROCESS_STATE_STARTING/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/buffer_size=10/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/numprocs=1/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/numprocs_start=0/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/priority=999/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/autostart=true/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/startsecs=1/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/startretries=3/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/exitcodes=0,2/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stopsignal=TERM/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stopwaitsecs=10/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stopasgroup=true/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/killasgroup=true/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/user=baz/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/redirect_stderr=true/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stdout_logfile=\/var\/log\/supervisor\/eventlistener_foo.log/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stdout_logfile_maxbytes=50MB/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stdout_logfile_backups=10/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stdout_events_enabled=true/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stderr_logfile=\/var\/log\/supervisor\/eventlistener_foo.error/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stderr_logfile_maxbytes=50MB/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stderr_logfile_backups=10/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stderr_events_enabled=true/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/environment=env1='value1',env2='value2'/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/directory=\/opt\/supervisord\/chroot/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/umask=022/) }
+ it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/serverurl=AUTO/) }
+ end
+
+ context 'ensure_process_stopped' do
+ let(:params) { default_params.merge({ :ensure_process => 'stopped' }) }
+ it { should contain_supervisord__supervisorctl('stop_foo') }
+ end
+
+ context 'ensure_process_removed' do
+ let(:params) { default_params.merge({ :ensure_process => 'removed' }) }
+ it { should contain_supervisord__supervisorctl('remove_foo') }
+ end
end
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/fcgi_program_spec.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/fcgi_program_spec.rb
index 7fd8ab07b86124a006a1cbdfe06c17a1465caf6c..e01311be70d414dbc77748db7586360a63ed82f5 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/fcgi_program_spec.rb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/fcgi_program_spec.rb
@@ -2,21 +2,87 @@ require 'spec_helper'
describe 'supervisord::fcgi_program', :type => :define do
let(:title) {'foo'}
- let(:default_params) {{ :command => 'bar',
- :socket => 'tcp://localhost:1000',
- :stdout_logfile => '/var/log/supervisor/fcgi-program_foo.log',
- :stderr_logfile => '/var/log/supervisor/fcgi-program_foo.error',
- :user => 'baz'
- }}
- let(:params) { default_params }
let(:facts) {{ :concat_basedir => '/var/lib/puppet/concat' }}
+ let(:default_params) do
+ {
+ :command => 'bar',
+ :socket => 'tcp://localhost:1000',
+ :process_name => '%(process_num)s',
+ :numprocs => '1',
+ :numprocs_start => '0',
+ :priority => '999',
+ :autostart => true,
+ :autorestart => 'unexpected',
+ :startsecs => '1',
+ :startretries => '3',
+ :exitcodes => '0,2',
+ :stopsignal => 'TERM',
+ :stopwaitsecs => '10',
+ :stopasgroup => true,
+ :killasgroup => true,
+ :user => 'baz',
+ :redirect_stderr => true,
+ :stdout_logfile => 'fcgi-program_foo.log',
+ :stdout_logfile_maxbytes => '50MB',
+ :stdout_logfile_backups => '10',
+ :stdout_capture_maxbytes => '0',
+ :stdout_events_enabled => true,
+ :stderr_logfile => 'fcgi-program_foo.error',
+ :stderr_logfile_maxbytes => '50MB',
+ :stderr_logfile_backups => '10',
+ :stderr_capture_maxbytes => '0',
+ :stderr_events_enabled => true,
+ :environment => { 'env1' => 'value1', 'env2' => 'value2' },
+ :directory => '/opt/supervisord/chroot',
+ :umask => '022',
+ :serverurl => 'AUTO'
+ }
+ end
- it { should contain_supervisord__fcgi_program('foo') }
- it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/\[fcgi-program:foo\]/) }
- it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/socket=tcp:\/\/localhost:1000/) }
- it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/command=bar/) }
- it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/user=baz/) }
- it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_logfile=\/var\/log\/supervisor\/fcgi-program_foo.log/) }
- it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_logfile=\/var\/log\/supervisor\/fcgi-program_foo.error/) }
+ context 'default' do
+ let(:params) { default_params }
+ it { should contain_supervisord__fcgi_program('foo') }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/\[fcgi-program:foo\]/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/socket=tcp:\/\/localhost:1000/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/command=bar/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/process_name=\%\(process_num\)s/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/numprocs=1/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/numprocs_start=0/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/priority=999/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/autostart=true/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/startsecs=1/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/startretries=3/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/exitcodes=0,2/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stopsignal=TERM/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stopwaitsecs=10/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stopasgroup=true/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/killasgroup=true/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/user=baz/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/redirect_stderr=true/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_logfile=\/var\/log\/supervisor\/fcgi-program_foo.log/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_logfile_maxbytes=50MB/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_logfile_backups=10/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_capture_maxbytes=0/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_events_enabled=true/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_logfile=\/var\/log\/supervisor\/fcgi-program_foo.error/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_logfile_maxbytes=50MB/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_logfile_backups=10/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_capture_maxbytes=0/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_events_enabled=true/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/environment=env1='value1',env2='value2'/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/directory=\/opt\/supervisord\/chroot/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/umask=022/) }
+ it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/serverurl=AUTO/) }
+ end
+
+ context 'ensure_process_stopped' do
+ let(:params) { default_params.merge({ :ensure_process => 'stopped' }) }
+ it { should contain_supervisord__supervisorctl('stop_foo') }
+ end
+
+ context 'ensure_process_removed' do
+ let(:params) { default_params.merge({ :ensure_process => 'removed' }) }
+ it { should contain_supervisord__supervisorctl('remove_foo') }
+ end
end
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/program_spec.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/program_spec.rb
index 077828bdfcfbe3424956887a25a8827b9aaab506..e32c24ab2d513320086767b2d1401a577041b298 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/program_spec.rb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/program_spec.rb
@@ -2,19 +2,85 @@ require 'spec_helper'
describe 'supervisord::program', :type => :define do
let(:title) {'foo'}
- let(:default_params) {{ :command => 'bar',
- :stdout_logfile => '/var/log/supervisor/program_foo.log',
- :stderr_logfile => '/var/log/supervisor/program_foo.error',
- :user => 'baz'
- }}
- let(:params) { default_params }
let(:facts) {{ :concat_basedir => '/var/lib/puppet/concat' }}
+ let(:default_params) do
+ {
+ :command => 'bar',
+ :process_name => '%(process_num)s',
+ :numprocs => '1',
+ :numprocs_start => '0',
+ :priority => '999',
+ :autostart => true,
+ :autorestart => 'unexpected',
+ :startsecs => '1',
+ :startretries => '3',
+ :exitcodes => '0,2',
+ :stopsignal => 'TERM',
+ :stopwaitsecs => '10',
+ :stopasgroup => true,
+ :killasgroup => true,
+ :user => 'baz',
+ :redirect_stderr => true,
+ :stdout_logfile => 'program_foo.log',
+ :stdout_logfile_maxbytes => '50MB',
+ :stdout_logfile_backups => '10',
+ :stdout_capture_maxbytes => '0',
+ :stdout_events_enabled => true,
+ :stderr_logfile => 'program_foo.error',
+ :stderr_logfile_maxbytes => '50MB',
+ :stderr_logfile_backups => '10',
+ :stderr_capture_maxbytes => '0',
+ :stderr_events_enabled => true,
+ :environment => { 'env1' => 'value1', 'env2' => 'value2' },
+ :directory => '/opt/supervisord/chroot',
+ :umask => '022',
+ :serverurl => 'AUTO'
+ }
+ end
- it { should contain_supervisord__program('foo') }
- it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/\[program:foo\]/) }
- it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/command=bar/) }
- it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/user=baz/) }
- it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_logfile=\/var\/log\/supervisor\/program_foo.log/) }
- it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_logfile=\/var\/log\/supervisor\/program_foo.error/) }
+ context 'default' do
+ let(:params) { default_params }
+ it { should contain_supervisord__program('foo') }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/\[program:foo\]/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/command=bar/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/process_name=\%\(process_num\)s/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/numprocs=1/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/numprocs_start=0/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/priority=999/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/autostart=true/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/startsecs=1/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/startretries=3/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/exitcodes=0,2/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stopsignal=TERM/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stopwaitsecs=10/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stopasgroup=true/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/killasgroup=true/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/user=baz/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/redirect_stderr=true/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_logfile=\/var\/log\/supervisor\/program_foo.log/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_logfile_maxbytes=50MB/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_logfile_backups=10/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_capture_maxbytes=0/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_events_enabled=true/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_logfile=\/var\/log\/supervisor\/program_foo.error/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_logfile_maxbytes=50MB/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_logfile_backups=10/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_capture_maxbytes=0/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_events_enabled=true/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/environment=env1='value1',env2='value2'/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/directory=\/opt\/supervisord\/chroot/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/umask=022/) }
+ it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/serverurl=AUTO/) }
+ end
+
+ context 'ensure_process_stopped' do
+ let(:params) { default_params.merge({ :ensure_process => 'stopped' }) }
+ it { should contain_supervisord__supervisorctl('stop_foo') }
+ end
+
+ context 'ensure_process_removed' do
+ let(:params) { default_params.merge({ :ensure_process => 'removed' }) }
+ it { should contain_supervisord__supervisorctl('remove_foo') }
+ end
end
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/supervisorctl.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/supervisorctl.rb
new file mode 100644
index 0000000000000000000000000000000000000000..33cfd75efe941bd55c1110200d94c2bf439c4aef
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/supervisorctl.rb
@@ -0,0 +1,13 @@
+require 'spec_helper'
+
+describe 'supervisord::supervisorctl', :type => :define do
+ let(:title) {'command_foo'}
+ let(:default_params) {{
+ :command => 'command',
+ :process => 'foo'
+ }}
+ let(:params) { default_params }
+ let(:facts) {{ :concat_basedir => '/var/lib/puppet/concat' }}
+
+ it { should contain_supervisord__supervisorctl('command_foo') }
+end
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper.rb
index 644f7c33ac09f10cad2df6f5da41c1c45b14c355..745ad4a5493fa3d533ceca7e628d0de2d27469c0 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper.rb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper.rb
@@ -7,3 +7,4 @@ RSpec.configure do |c|
c.manifest_dir = File.join(fixture_path, 'manifests')
end
+at_exit { RSpec::Puppet::Coverage.report! }
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper_acceptance.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper_acceptance.rb
new file mode 100644
index 0000000000000000000000000000000000000000..dcae2850d270ad55c213de5cd10eb720bf4b9dea
--- /dev/null
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper_acceptance.rb
@@ -0,0 +1,24 @@
+require 'beaker-rspec'
+
+hosts.each do |host|
+ # Install Puppet
+ install_puppet
+end
+
+RSpec.configure do |c|
+ # Project root
+ proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
+
+ # Readable test descriptions
+ c.formatter = :documentation
+
+ # Configure all nodes in nodeset
+ c.before :suite do
+ # Install module
+ puppet_module_install(:source => proj_root, :module_name => 'supervisord')
+ hosts.each do |host|
+ on host, puppet('module','install','puppetlabs-stdlib'), { :acceptable_exit_codes => [0,1] }
+ on host, puppet('module','install','puppetlabs-concat'), { :acceptable_exit_codes => [0,1] }
+ end
+ end
+end
\ No newline at end of file
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper_system.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper_system.rb
deleted file mode 100644
index a790d7d526c0c6a818daaf587f6f4693620e78f4..0000000000000000000000000000000000000000
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper_system.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'rspec-system/spec_helper'
-require 'rspec-system-puppet/helpers'
-
-include RSpecSystemPuppet::Helpers
-
-RSpec.configure do |c|
- # Project root
- proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
-
- # Enable colour
- c.tty = true
-
- # This is where we 'setup' the nodes before running our tests
- c.before :suite do
- # Install puppet
- puppet_install
- puppet_master_install
-
- # Replace mymodule with your module name
- puppet_module_install(:source => proj_root, :module_name => 'supervisord')
- shell('puppet module install puppetlabs/stdlib')
- shell('puppet module install puppetlabs/concat')
-
- end
-end
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/system/basic_spec.rb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/system/basic_spec.rb
deleted file mode 100644
index 62cf7dd8c2e7c083b0ac45f99fd061e480f3463c..0000000000000000000000000000000000000000
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/system/basic_spec.rb
+++ /dev/null
@@ -1,120 +0,0 @@
-require 'spec_helper_system'
-
-describe 'basic install' do
-
- it 'class should work with no errors' do
- pp = <<-EOS
- class { 'supervisord': install_pip => true, install_init => true}
- EOS
-
- puppet_apply(pp) do |r|
- r.exit_code.should_not == 1
- r.refresh
- r.exit_code.should be_zero
- end
-
- shell("pgrep supervisord") do |r|
- r.exit_code.should be_zero
- end
-
- end
-end
-
-describe 'add a program config' do
-
- it 'supervisord::program should install a program config' do
-
- pp = <<-EOS
- include supervisord
- supervisord::program { 'test':
- command => 'echo',
- priority => '100',
- environment => {
- 'HOME' => '/root',
- 'PATH' => '/bin',
- }
- }
- EOS
-
- puppet_apply(pp) do |r|
- r.exit_code.should_not == 1
- r.refresh
- r.exit_code.should be_zero
- end
-
- shell("grep command=echo /etc/supervisor.d/program_test.conf") do |r|
- r.exit_code.should be_zero
- end
- shell("grep priority=100 /etc/supervisor.d/program_test.conf") do |r|
- r.exit_code.should be_zero
- end
- shell('grep "environment=" /etc/supervisor.d/program_test.conf') do |r|
- r.exit_code.should be_zero
- end
- end
-end
-
-describe 'add a fcgi-program config' do
-
- it 'supervisord::fcgi_program should install a program config' do
-
- pp = <<-EOS
- include supervisord
- supervisord::fcgi_program { 'test':
- socket => 'tcp://localhost:1000',
- command => 'echo',
- priority => '100',
- environment => {
- 'HOME' => '/root',
- 'PATH' => '/bin',
- }
- }
- EOS
-
- puppet_apply(pp) do |r|
- r.exit_code.should_not == 1
- r.refresh
- r.exit_code.should be_zero
- end
-
- shell("grep socket=tcp://localhost:1000 /etc/supervisor.d/fcgi-program_test.conf") do |r|
- r.exit_code.should be_zero
- end
- shell("grep command=echo /etc/supervisor.d/fcgi-program_test.conf") do |r|
- r.exit_code.should be_zero
- end
- shell("grep priority=100 /etc/supervisor.d/fcgi-program_test.conf") do |r|
- r.exit_code.should be_zero
- end
- shell('grep "environment=" /etc/supervisor.d/fcgi-program_test.conf') do |r|
- r.exit_code.should be_zero
- end
- end
-end
-
-describe 'add a group config' do
-
- it 'supervisord::group should install a program config' do
-
- pp = <<-EOS
- include supervisord
- supervisord::group { 'test':
- programs => ['program1', 'program2'],
- priority => '100',
- }
- EOS
-
- puppet_apply(pp) do |r|
- r.exit_code.should_not == 1
- r.refresh
- r.exit_code.should be_zero
- end
-
- shell('grep "programs=program1,program2" /etc/supervisor.d/group_test.conf') do |r|
- r.exit_code.should be_zero
- end
- shell("grep priority=100 /etc/supervisor.d/fcgi-program_test.conf") do |r|
- r.exit_code.should be_zero
- end
- end
-end
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/eventlistener.erb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/eventlistener.erb
index 4ee2b893419b26ab5b33d39f953d8d07b89e7ac8..9875c8ef5b23022312656fb159093ace9bc83349 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/eventlistener.erb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/eventlistener.erb
@@ -39,8 +39,8 @@ exitcodes=<%= @exitcodes %>
<% if @stopsignal -%>
stopsignal=<%= @stopsignal %>
<% end -%>
-<% if @stopwaitsec -%>
-stopwaitsec=<%= @stopwaitsec %>
+<% if @stopwaitsecs -%>
+stopwaitsecs=<%= @stopwaitsecs %>
<% end -%>
<% if @stopasgroup -%>
stopasgroup=<%= @stopasgroup %>
@@ -54,7 +54,7 @@ user=<%= @user %>
<% if @redirect_stderr -%>
redirect_stderr=<%= @redirect_stderr %>
<% end -%>
-stdout_logfile=<%= @stdout_logfile %>
+stdout_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stdout_logfile %>
<% if @stdout_logfile_maxbytes -%>
stdout_logfile_maxbytes=<%= @stdout_logfile_maxbytes %>
<% end -%>
@@ -64,7 +64,7 @@ stdout_logfile_backups=<%= @stdout_logfile_backups %>
<% if @stdout_events_enabled -%>
stdout_events_enabled=<%= @stdout_events_enabled %>
<% end -%>
-stderr_logfile=<%= @stderr_logfile %>
+stderr_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stderr_logfile %>
<% if @stderr_logfile_maxbytes -%>
stderr_logfile_maxbytes=<%= @stderr_logfile_maxbytes %>
<% end -%>
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/fcgi_program.erb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/fcgi_program.erb
index a1478bce5360de78aa35abe462acb8b577658fbd..98a7fb1cb3285ed4bf8438ec4e52abf559636ab2 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/fcgi_program.erb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/fcgi_program.erb
@@ -37,8 +37,8 @@ exitcodes=<%= @exitcodes %>
<% if @stopsignal -%>
stopsignal=<%= @stopsignal %>
<% end -%>
-<% if @stopwaitsec -%>
-stopwaitsec=<%= @stopwaitsec %>
+<% if @stopwaitsecs -%>
+stopwaitsecs=<%= @stopwaitsecs %>
<% end -%>
<% if @stopasgroup -%>
stopasgroup=<%= @stopasgroup %>
@@ -53,7 +53,7 @@ user=<%= @user %>
redirect_stderr=<%= @redirect_stderr %>
<% end -%>
<% if @stdout_logfile -%>
-stdout_logfile=<%= @stdout_logfile %>
+stdout_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stdout_logfile %>
<% end -%>
<% if @stdout_logfile_maxbytes -%>
stdout_logfile_maxbytes=<%= @stdout_logfile_maxbytes %>
@@ -68,7 +68,7 @@ stdout_capture_maxbytes=<%= @stdout_capture_maxbytes %>
stdout_events_enabled=<%= @stdout_events_enabled %>
<% end -%>
<% if @stderr_logfile -%>
-stderr_logfile=<%= @stderr_logfile %>
+stderr_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stderr_logfile %>
<% end -%>
<% if @stderr_logfile_maxbytes -%>
stderr_logfile_maxbytes=<%= @stderr_logfile_maxbytes %>
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/program.erb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/program.erb
index ca96d34d6adcb696be761ce182112420715ca692..78002c87ca6d276d4a8c9f9a67ee413b9df56d4a 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/program.erb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/conf/program.erb
@@ -30,8 +30,8 @@ exitcodes=<%= @exitcodes %>
<% if @stopsignal -%>
stopsignal=<%= @stopsignal %>
<% end -%>
-<% if @stopwaitsec -%>
-stopwaitsec=<%= @stopwaitsec %>
+<% if @stopwaitsecs -%>
+stopwaitsecs=<%= @stopwaitsecs %>
<% end -%>
<% if @stopasgroup -%>
stopasgroup=<%= @stopasgroup %>
@@ -46,7 +46,7 @@ user=<%= @user %>
redirect_stderr=<%= @redirect_stderr %>
<% end -%>
<% if @stdout_logfile -%>
-stdout_logfile=<%= @stdout_logfile %>
+stdout_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stdout_logfile %>
<% end -%>
<% if @stdout_logfile_maxbytes -%>
stdout_logfile_maxbytes=<%= @stdout_logfile_maxbytes %>
@@ -61,7 +61,7 @@ stdout_capture_maxbytes=<%= @stdout_capture_maxbytes %>
stdout_events_enabled=<%= @stdout_events_enabled %>
<% end -%>
<% if @stderr_logfile -%>
-stderr_logfile=<%= @stderr_logfile %>
+stderr_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stderr_logfile %>
<% end -%>
<% if @stderr_logfile_maxbytes -%>
stderr_logfile_maxbytes=<%= @stderr_logfile_maxbytes %>
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/debian_extra.erb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/Debian/defaults.erb
similarity index 100%
rename from dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/debian_extra.erb
rename to dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/Debian/defaults.erb
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/debian_init.erb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/Debian/init.erb
similarity index 96%
rename from dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/debian_init.erb
rename to dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/Debian/init.erb
index b94f9337f5919fe4a0b572c27d198ffaa2c3b21c..bff9857257ae916d68de34bb1c72629e89b8924f 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/debian_init.erb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/Debian/init.erb
@@ -19,15 +19,15 @@ DESC=supervisor
test -x $DAEMON || exit 0
LOGDIR=<%= @log_path %>
-PIDFILE=<%= @pid_file %>
+PIDFILE=<%= @run_path %>/<%= @pid_file %>
DODTIME=5 # Time to wait for the server to die, in seconds
# If this value is set too low you might not
# let some servers to die gracefully and
# 'restart' will not work
# Include supervisor defaults if available
-if [ -f /etc/default/supervisor ] ; then
- . /etc/default/supervisor
+if [ -f <%= @init_defaults %> ] ; then
+ . <%= @init_defaults %>
fi
set -e
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/redhat_extra.erb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/RedHat/defaults.erb
similarity index 81%
rename from dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/redhat_extra.erb
rename to dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/RedHat/defaults.erb
index b892c2d62038b4e8a5de38f1728264ed1ca653b3..0d7862d0233b4b924059faa2223218bae2f6bd5d 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/redhat_extra.erb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/RedHat/defaults.erb
@@ -5,4 +5,4 @@ set -a
# should probably put both of these options as runtime arguments
OPTIONS="-c <%= @config_file %>"
-PIDFILE=<%= @pid_file %>
+PIDFILE=<%= @run_path %><%= @pid_file %>
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/redhat_init.erb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/RedHat/init.erb
similarity index 94%
rename from dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/redhat_init.erb
rename to dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/RedHat/init.erb
index 1dc2da2aff11baed096e97312856a77d2a7c45d0..dabb27845104e2a1b27f7fec0dff5212df6c7866 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/redhat_init.erb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/init/RedHat/init.erb
@@ -13,18 +13,19 @@
# xmlrpc interface as well as a few other nifty features.
# processname: supervisord
# config: <%= @config_file %>
-# pidfile: <%= @pid_file %>
+# pidfile: <%= @run_path %>/<%= @pid_file %>
#
# source function library
. /etc/rc.d/init.d/functions
# source system settings
-[ -e <%= @init_extras %> ] && . <%= @init_extras %>
+[ -e <%= @init_defaults %> ] && . <%= @init_defaults %>
RETVAL=0
DAEMON=/usr/bin/supervisord
DESC=supervisord
+PIDFILE=<%= @run_path %>/<%= @pid_file %>
running_pid()
{
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/supervisord_main.erb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/supervisord_main.erb
index 1baf5607a2f4fe8c059595f2b117a0b40dc35578..8ab8fee51dfc1ffb1a4f5a9d7b119948b6c24502 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/supervisord_main.erb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/supervisord_main.erb
@@ -1,9 +1,9 @@
[supervisord]
-logfile=<%= @log_file %>
-pidfile=<%= @pid_file %>
+logfile=<%= @log_path %>/<%= @log_file %>
+pidfile=<%= @run_path %>/<%= @pid_file %>
nodaemon=<%= @nodaemon %>
minfds=<%= @minfds %>
-minfds=<%= @minprocs %>
+minprocs=<%= @minprocs %>
umask=<%= @umask %>
<% if @strip_ansi -%>
strip_ansi=<%= @strip_ansi %>
@@ -12,7 +12,7 @@ strip_ansi=<%= @strip_ansi %>
user=<%= @user %>
<% end -%>
<% if @identifier -%>
-indentifier=<%= @identifier %>
+identifier=<%= @identifier %>
<% end -%>
<% if @directory -%>
directory=<%= @directory %>
@@ -31,4 +31,4 @@ environment=<%= @env_string %>
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[include]
-files=<%= @config_include %>/*.conf
+files=<%= @config_include_string %>
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/supervisord_unix.erb b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/supervisord_unix.erb
index 414e75198ba5863dceb94eea7c000a7b198a19ee..39e85199916d35614f005b8dfff9e147af10e1e5 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/supervisord_unix.erb
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/templates/supervisord_unix.erb
@@ -1,5 +1,5 @@
[unix_http_server]
-file=<%= @unix_socket_file %>
+file=<%= @run_path %>/<%= @unix_socket_file %>
chmod=<%= @unix_socket_mode %>
chown=<%= @unix_socket_owner %>:<%= @unix_socket_group %>
<% if @unix_auth -%>
@@ -8,7 +8,7 @@ password=<%= @unix_socket_password %>
<% end -%>
[supervisorctl]
-serverurl=unix://<%= @unix_socket_file %>
+serverurl=unix://<%= @run_path %>/<%= @unix_socket_file %>
<% if @unix_auth -%>
username=<%= @unix_username %>
password=<%= @unix_password %>
diff --git a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/tests/program.pp b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/tests/program.pp
index 6c789c96dc15d7bfc583283b1164b7f82f2a5542..0d45ebe1b3dec0235a859f29d7a1ea6584c86ebd 100644
--- a/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/tests/program.pp
+++ b/dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/tests/program.pp
@@ -1,9 +1,35 @@
supervisord::program { 'myprogram':
- command => 'command --args',
- priority => '100',
- environment => {
+ command => 'command --args',
+ process_name => '%(process_num)s',
+ numprocs => '1',
+ numprocs_start => '0',
+ priority => '999',
+ autostart => true,
+ autorestart => 'unexpected',
+ startsecs => '1',
+ startretries => '3',
+ exitcodes => '0,2',
+ stopsignal => 'TERM',
+ stopwaitsecs => '10',
+ stopasgroup => false,
+ killasgroup => false,
+ redirect_stderr => false,
+ stdout_logfile => 'program_foo.log',
+ stdout_logfile_maxbytes => '50MB',
+ stdout_logfile_backups => '10',
+ stdout_capture_maxbytes => '0',
+ stdout_events_enabled => false,
+ stderr_logfile => 'program_foo.error',
+ stderr_logfile_maxbytes => '50MB',
+ stderr_logfile_backups => '10',
+ stderr_capture_maxbytes => '0',
+ stderr_events_enabled => false,
+ environment => {
'HOME' => '/home/myuser',
'PATH' => '/bin:/sbin:/usr/bin:/usr/sbin',
'SECRET' => 'mysecret'
- }
+ },
+ directory => undef,
+ umask => '022',
+ serverurl => 'AUTO'
}
\ No newline at end of file
diff --git a/dev/vagrant/dolibarrdev/puphpet/shell/execute-files.sh b/dev/vagrant/dolibarrdev/puphpet/shell/execute-files.sh
index 06713c2ee99293ba5bf095300f83ce112b495a0f..c6c08a7b04cf82fb499f4772622a74197198ca7c 100644
--- a/dev/vagrant/dolibarrdev/puphpet/shell/execute-files.sh
+++ b/dev/vagrant/dolibarrdev/puphpet/shell/execute-files.sh
@@ -4,17 +4,26 @@ export DEBIAN_FRONTEND=noninteractive
VAGRANT_CORE_FOLDER=$(cat '/.puphpet-stuff/vagrant-core-folder.txt')
+EXEC_ONCE_DIR="$1"
+EXEC_ALWAYS_DIR="$2"
+
shopt -s nullglob
-files=("${VAGRANT_CORE_FOLDER}"/files/exec-once/*)
-
-if [[ ! -f '/.puphpet-stuff/exec-once-ran' && (${#files[@]} -gt 0) ]]; then
- echo 'Running files in files/exec-once'
- find "${VAGRANT_CORE_FOLDER}/files/exec-once" -maxdepth 1 -not -path '*/\.*' -type f \( ! -iname "empty" \) -exec chmod +x '{}' \; -exec {} \;
- echo 'Finished running files in files/exec-once'
- echo 'To run again, delete file /.puphpet-stuff/exec-once-ran'
- touch /.puphpet-stuff/exec-once-ran
+files=("${VAGRANT_CORE_FOLDER}"/files/"${EXEC_ONCE_DIR}"/*)
+
+if [[ (${#files[@]} -gt 0) ]]; then
+ echo "Running files in files/${EXEC_ONCE_DIR}"
+
+ if [ ! -d "/.puphpet-stuff/${EXEC_ONCE_DIR}-ran" ]; then
+ mkdir "/.puphpet-stuff/${EXEC_ONCE_DIR}-ran"
+ echo "Created directory /.puphpet-stuff/${EXEC_ONCE_DIR}-ran"
+ fi
+
+ find "${VAGRANT_CORE_FOLDER}/files/${EXEC_ONCE_DIR}" -maxdepth 1 -not -path '*/\.*' -type f \( ! -iname "empty" \) -exec cp -n '{}' "/.puphpet-stuff/${EXEC_ONCE_DIR}-ran" \;
+ find "/.puphpet-stuff/${EXEC_ONCE_DIR}-ran" -maxdepth 1 -type f -exec chmod +x '{}' \; -exec {} \; -exec sh -c '>{}' \;
+ echo "Finished running files in files/${EXEC_ONCE_DIR}"
+ echo "To run again, delete file(s) you want rerun in /.puphpet-stuff/${EXEC_ONCE_DIR}-ran or the whole folder to rerun all"
fi
-echo 'Running files in files/exec-always'
-find "${VAGRANT_CORE_FOLDER}/files/exec-always" -maxdepth 1 -not -path '*/\.*' -type f \( ! -iname "empty" \) -exec chmod +x '{}' \; -exec {} \;
-echo 'Finished running files in files/exec-always'
+echo "Running files in files/${EXEC_ALWAYS_DIR}"
+find "${VAGRANT_CORE_FOLDER}/files/${EXEC_ALWAYS_DIR}" -maxdepth 1 -not -path '*/\.*' -type f \( ! -iname "empty" \) -exec chmod +x '{}' \; -exec {} \;
+echo "Finished running files in files/${EXEC_ALWAYS_DIR}"
diff --git a/dev/vagrant/dolibarrdev/puphpet/shell/ssh-keygen.sh b/dev/vagrant/dolibarrdev/puphpet/shell/ssh-keygen.sh
index 6bb7614f9c6ee5022eccdac1d48d121b19ea1d8d..ef00495b2b6608bf38932145dbccdc7f40f3bd05 100644
--- a/dev/vagrant/dolibarrdev/puphpet/shell/ssh-keygen.sh
+++ b/dev/vagrant/dolibarrdev/puphpet/shell/ssh-keygen.sh
@@ -5,37 +5,76 @@ VAGRANT_CORE_FOLDER=$(cat '/.puphpet-stuff/vagrant-core-folder.txt')
OS=$(/bin/bash "${VAGRANT_CORE_FOLDER}/shell/os-detect.sh" ID)
VAGRANT_SSH_USERNAME=$(echo "$1")
-if [[ ! -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa" ]]; then
- ssh-keygen -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa" -P ""
-
- if [[ ! -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.ppk" ]]; then
- if [ "${OS}" == 'debian' ] || [ "${OS}" == 'ubuntu' ]; then
- apt-get install -y putty-tools >/dev/null
- elif [ "${OS}" == 'centos' ]; then
- yum -y install putty >/dev/null
+function create_key()
+{
+ BASE_KEY_NAME=$(echo "$1")
+
+ if [[ ! -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/${BASE_KEY_NAME}" ]]; then
+ ssh-keygen -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/${BASE_KEY_NAME}" -P ""
+
+ if [[ ! -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/${BASE_KEY_NAME}.ppk" ]]; then
+ if [ "${OS}" == 'debian' ] || [ "${OS}" == 'ubuntu' ]; then
+ apt-get install -y putty-tools >/dev/null
+ elif [ "${OS}" == 'centos' ]; then
+ yum -y install putty >/dev/null
+ fi
+
+ puttygen "${VAGRANT_CORE_FOLDER}/files/dot/ssh/${BASE_KEY_NAME}" -O private -o "${VAGRANT_CORE_FOLDER}/files/dot/ssh/${BASE_KEY_NAME}.ppk"
fi
- puttygen "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa" -O private -o "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.ppk"
+ echo "Your private key for SSH-based authentication has been saved to 'puphpet/files/dot/ssh/${BASE_KEY_NAME}'!"
+ else
+ echo "Pre-existing private key found at 'puphpet/files/dot/ssh/${BASE_KEY_NAME}'"
fi
+}
- echo 'Your private key for SSH-based authentication have been saved to "puphpet/files/dot/ssh/"!'
-else
- echo 'Using pre-existing private key at "puphpet/files/dot/ssh/id_rsa"'
-fi
+create_key 'root_id_rsa'
+create_key 'id_rsa'
+
+PUBLIC_SSH_KEY=$(cat "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub")
+echo 'Adding generated key to /root/.ssh/id_rsa'
+echo 'Adding generated key to /root/.ssh/id_rsa.pub'
echo 'Adding generated key to /root/.ssh/authorized_keys'
+
mkdir -p /root/.ssh
-cat "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" > '/root/.ssh/authorized_keys'
+
+cp "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa" '/root/.ssh/'
+cp "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" '/root/.ssh/'
+
+if [[ ! -f '/root/.ssh/authorized_keys' ]] || ! grep -q "${PUBLIC_SSH_KEY}" '/root/.ssh/authorized_keys'; then
+ cat "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" >> '/root/.ssh/authorized_keys'
+fi
+
+chown -R root '/root/.ssh'
+chgrp -R root '/root/.ssh'
+chmod 700 '/root/.ssh'
+chmod 644 '/root/.ssh/id_rsa.pub'
+chmod 600 '/root/.ssh/id_rsa'
chmod 600 '/root/.ssh/authorized_keys'
if [ "${VAGRANT_SSH_USERNAME}" != 'root' ]; then
VAGRANT_SSH_FOLDER="/home/${VAGRANT_SSH_USERNAME}/.ssh";
+ mkdir -p "${VAGRANT_SSH_FOLDER}"
+
+ echo "Adding generated key to ${VAGRANT_SSH_FOLDER}/id_rsa"
+ echo "Adding generated key to ${VAGRANT_SSH_FOLDER}/id_rsa.pub"
echo "Adding generated key to ${VAGRANT_SSH_FOLDER}/authorized_keys"
- cat "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" > "${VAGRANT_SSH_FOLDER}/authorized_keys"
- chown "${VAGRANT_SSH_USERNAME}" "${VAGRANT_SSH_FOLDER}/authorized_keys"
- chgrp "${VAGRANT_SSH_USERNAME}" "${VAGRANT_SSH_FOLDER}/authorized_keys"
+
+ cp "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa" "${VAGRANT_SSH_FOLDER}/id_rsa"
+ cp "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" "${VAGRANT_SSH_FOLDER}/id_rsa.pub"
+
+ if [[ ! -f "${VAGRANT_SSH_FOLDER}/authorized_keys" ]] || ! grep -q "${PUBLIC_SSH_KEY}" "${VAGRANT_SSH_FOLDER}/authorized_keys"; then
+ cat "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" >> "${VAGRANT_SSH_FOLDER}/authorized_keys"
+ fi
+
+ chown -R "${VAGRANT_SSH_USERNAME}" "${VAGRANT_SSH_FOLDER}"
+ chgrp -R "${VAGRANT_SSH_USERNAME}" "${VAGRANT_SSH_FOLDER}"
+ chmod 700 "${VAGRANT_SSH_FOLDER}"
+ chmod 644 "${VAGRANT_SSH_FOLDER}/id_rsa.pub"
+ chmod 600 "${VAGRANT_SSH_FOLDER}/id_rsa"
chmod 600 "${VAGRANT_SSH_FOLDER}/authorized_keys"
-fi
-passwd -d vagrant >/dev/null
+ passwd -d "${VAGRANT_SSH_USERNAME}" >/dev/null
+fi