mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop
This commit is contained in:
commit
f096253a6d
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -17,7 +17,4 @@ doxygen_warnings.log
|
|||
*.iml
|
||||
Thumbs.db
|
||||
# Vagrant generated files
|
||||
.vagrant
|
||||
/index.html
|
||||
/phpmyadmin
|
||||
/xhprof
|
||||
.vagrant
|
||||
10
ChangeLog
10
ChangeLog
|
|
@ -37,7 +37,7 @@ For users:
|
|||
- Fix: [ bug #1501 ] DEPLACEMENT_CREATE trigger do not intercept trigger action
|
||||
- Fix: [ bug #1506, #1507 ] ECM trigger error problem
|
||||
- Fix: [ bug #1469 ] Triggers CONTACT_MODIFY and CONTACT_DELETE duplicates error message
|
||||
|
||||
- New: [ task #1204 ] add a External reference to contract
|
||||
|
||||
For translators:
|
||||
- Update language files.
|
||||
|
|
@ -46,7 +46,10 @@ For developers:
|
|||
- New: Add hook "searchAgendaFrom".
|
||||
- New: Add trigger DON_UPDATE, DON_DELETE
|
||||
- New: Add country iso code on 3 chars into table of countries.
|
||||
- Qual: Removed hard coded rowid into data init of table llx_c_action_trigger.
|
||||
- Qual: Removed hard coded rowid into data init of table llx_c_action_trigger.
|
||||
- LINEBILL_DELETE, LINK_DELETE, ORDER_SUPPLIER_DELETE, RESOURCE_DELETE trigger called before SQL delete
|
||||
- New: [ Task #1481 ] Add trigger BILL_SUPPLIER_UPDATE.
|
||||
- New: [ Task #1495 ] Add trigger LINECONTRACT_CREATE.
|
||||
|
||||
WARNING: Following change may create regression for some external modules, but was necessary to make
|
||||
Dolibarr better:
|
||||
|
|
@ -162,6 +165,7 @@ removed. You must now use the 6 parameters way. See file modMyModule.class.php f
|
|||
So check that return value is 0 to keep default standard behaviour after hook, or 1 to disable
|
||||
default standard behaviour.
|
||||
- Properties "civilite_id" were renamed into "civility_id".
|
||||
- Remove add_photo_web() that is ot used anymore by core code.
|
||||
|
||||
|
||||
|
||||
|
|
@ -207,6 +211,8 @@ Fix: [ bug #1461 ] LINEORDER_SUPPLIER_CREATE does not intercept supplier order l
|
|||
Fix: [ bug #1484 ] BILL_SUPPLIER_PAYED trigger action does not intercept failure under some circumstances
|
||||
Fix: [ bug #1482 ] Several supplier invoice triggers do not show trigger error messages
|
||||
Fix: [ bug #1486 ] LINEBILL_SUPPLIER_CREATE and LINEBILL_SUPPLIER_UPDATE triggers do not intercept trigger action
|
||||
Fix: [ bug #1522 ] Element list into associate object into project are no more filterd by project thirdparty
|
||||
Fix: Import ProfId1 to siren and ProfId2 to siret
|
||||
|
||||
***** ChangeLog for 3.5.3 compared to 3.5.2 *****
|
||||
Fix: Error on field accountancy code for export profile of invoices.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
25
dev/vagrant/dolibarrdev/Vagrantfile
vendored
25
dev/vagrant/dolibarrdev/Vagrantfile
vendored
|
|
@ -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")
|
||||
|
|
|
|||
26
dev/vagrant/dolibarrdev/puphpet/config.yaml
vendored
26
dev/vagrant/dolibarrdev/puphpet/config.yaml
vendored
|
|
@ -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'
|
||||
target: /var/www/dolibarr
|
||||
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,9 +81,9 @@ apache:
|
|||
- php
|
||||
- rewrite
|
||||
vhosts:
|
||||
CGyWQB0fx4x0:
|
||||
b2tOrs1TMtoF:
|
||||
servername: dev.dolibarr.org
|
||||
docroot: /var/www/htdocs
|
||||
docroot: /var/www/dolibarr/htdocs
|
||||
port: '80'
|
||||
setenv:
|
||||
- 'APP_ENV dev'
|
||||
|
|
@ -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
|
||||
|
|
@ -166,16 +168,16 @@ mysql:
|
|||
host: localhost
|
||||
user: user
|
||||
password: user
|
||||
sql_file: /var/www/dev/initdata/mysqldump_dolibarr_3.5.0.sql
|
||||
sql_file: /var/www/dolibarr/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'
|
||||
|
|
|
|||
|
|
@ -1,4 +1 @@
|
|||
ssh/id_rsa
|
||||
ssh/id_rsa.pub
|
||||
ssh/insecure_private_key
|
||||
ssh/id_rsa.ppk
|
||||
ssh/*
|
||||
0
dev/vagrant/dolibarrdev/puphpet/files/startup-always/empty
vendored
Normal file
0
dev/vagrant/dolibarrdev/puphpet/files/startup-always/empty
vendored
Normal file
0
dev/vagrant/dolibarrdev/puphpet/files/startup-once/empty
vendored
Normal file
0
dev/vagrant/dolibarrdev/puphpet/files/startup-once/empty
vendored
Normal file
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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': }
|
||||
|
|
|
|||
22
dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/python/pip.pp
vendored
Normal file
22
dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/python/pip.pp
vendored
Normal file
|
|
@ -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',
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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}"
|
||||
|
|
@ -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: 1.9.3
|
||||
env: PUPPET_GEM_VERSION="~> 2.7.0"
|
||||
- rvm: 2.0.0
|
||||
env: PUPPET_GEM_VERSION="~> 2.7.0"
|
||||
env: PUPPET_VERSION="~> 2.7.0"
|
||||
- rvm: 1.9.3
|
||||
env: PUPPET_VERSION="~> 2.7.0"
|
||||
- rvm: 2.0.0
|
||||
env: PUPPET_VERSION="~> 3.1.0"
|
||||
- rvm: 1.8.7
|
||||
env: PUPPET_VERSION="~> 3.2.0"
|
||||
notifications:
|
||||
email: false
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
else
|
||||
gem 'puppet', :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', '~> 3.4.0'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
]
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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: { }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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: { }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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']
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 <| |>
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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: { }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
21
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/reload.pp
vendored
Normal file
21
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/reload.pp
vendored
Normal file
|
|
@ -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],
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
29
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/supervisorctl.pp
vendored
Normal file
29
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/supervisorctl.pp
vendored
Normal file
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
10
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/default.yml
vendored
Normal file
10
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/default.yml
vendored
Normal file
|
|
@ -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
|
||||
114
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/supervisord_spec.rb
vendored
Normal file
114
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/supervisord_spec.rb
vendored
Normal file
|
|
@ -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
|
||||
|
|
@ -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 'custom setting' do
|
||||
let(:params) {{ :run_path => '/var/run/supervisord'}}
|
||||
it { should contain_file('/var/run/supervisord') }
|
||||
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 'invalid' do
|
||||
let(:params) {{ :childlogdir => 'not_a_path' }}
|
||||
it { expect { raise_error(Puppet::Error, /is not an absolute path/) }}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
13
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/supervisorctl.rb
vendored
Normal file
13
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/supervisorctl.rb
vendored
Normal file
|
|
@ -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
|
||||
|
|
@ -7,3 +7,4 @@ RSpec.configure do |c|
|
|||
c.manifest_dir = File.join(fixture_path, 'manifests')
|
||||
end
|
||||
|
||||
at_exit { RSpec::Puppet::Coverage.report! }
|
||||
|
|
|
|||
24
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper_acceptance.rb
vendored
Normal file
24
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper_acceptance.rb
vendored
Normal file
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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 -%>
|
||||
|
|
|
|||
|
|
@ -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 %>
|
||||
|
|
|
|||
|
|
@ -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 %>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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 %>
|
||||
|
|
@ -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()
|
||||
{
|
||||
|
|
@ -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 %>
|
||||
|
|
|
|||
|
|
@ -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 %>
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
}
|
||||
|
|
@ -4,17 +4,26 @@ export DEBIAN_FRONTEND=noninteractive
|
|||
|
||||
VAGRANT_CORE_FOLDER=$(cat '/.puphpet-stuff/vagrant-core-folder.txt')
|
||||
|
||||
shopt -s nullglob
|
||||
files=("${VAGRANT_CORE_FOLDER}"/files/exec-once/*)
|
||||
EXEC_ONCE_DIR="$1"
|
||||
EXEC_ALWAYS_DIR="$2"
|
||||
|
||||
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
|
||||
shopt -s nullglob
|
||||
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}"
|
||||
|
|
|
|||
|
|
@ -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 ""
|
||||
function create_key()
|
||||
{
|
||||
BASE_KEY_NAME=$(echo "$1")
|
||||
|
||||
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
|
||||
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"'
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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'
|
||||
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";
|
||||
|
||||
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"
|
||||
chmod 600 "${VAGRANT_SSH_FOLDER}/authorized_keys"
|
||||
fi
|
||||
mkdir -p "${VAGRANT_SSH_FOLDER}"
|
||||
|
||||
passwd -d vagrant >/dev/null
|
||||
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"
|
||||
|
||||
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"
|
||||
|
||||
passwd -d "${VAGRANT_SSH_USERNAME}" >/dev/null
|
||||
fi
|
||||
|
|
|
|||
0
htdocs/accountancy/class/index.html
Normal file
0
htdocs/accountancy/class/index.html
Normal file
0
htdocs/accountancy/index.html
Normal file
0
htdocs/accountancy/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/adherents/canvas/default/tpl/index.html
Normal file
0
htdocs/adherents/canvas/default/tpl/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/adherents/canvas/index.html
Normal file
0
htdocs/adherents/canvas/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/adherents/cartes/index.html
Normal file
0
htdocs/adherents/cartes/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/adherents/class/index.html
Normal file
0
htdocs/adherents/class/index.html
Normal file
0
htdocs/asterisk/index.html
Normal file
0
htdocs/asterisk/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/barcode/index.html
Normal file
0
htdocs/barcode/index.html
Normal file
0
htdocs/bookmarks/admin/index.html
Normal file
0
htdocs/bookmarks/admin/index.html
Normal file
0
htdocs/bookmarks/class/index.html
Normal file
0
htdocs/bookmarks/class/index.html
Normal file
0
htdocs/bookmarks/index.html
Normal file
0
htdocs/bookmarks/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/boutique/admin/index.html
Normal file
0
htdocs/boutique/admin/index.html
Normal file
0
htdocs/boutique/client/class/index.html
Normal file
0
htdocs/boutique/client/class/index.html
Normal file
0
htdocs/boutique/commande/class/index.html
Normal file
0
htdocs/boutique/commande/class/index.html
Normal file
0
htdocs/boutique/critiques/class/index.html
Normal file
0
htdocs/boutique/critiques/class/index.html
Normal file
0
htdocs/boutique/promotion/class/index.html
Normal file
0
htdocs/boutique/promotion/class/index.html
Normal file
0
htdocs/cashdesk/admin/index.html
Normal file
0
htdocs/cashdesk/admin/index.html
Normal file
0
htdocs/cashdesk/class/index.html
Normal file
0
htdocs/cashdesk/class/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/cashdesk/css/index.html
Normal file
0
htdocs/cashdesk/css/index.html
Normal file
0
htdocs/cashdesk/img/index.html
Normal file
0
htdocs/cashdesk/img/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/cashdesk/include/index.html
Normal file
0
htdocs/cashdesk/include/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/cashdesk/javascript/index.html
Normal file
0
htdocs/cashdesk/javascript/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/cashdesk/tpl/index.html
Normal file
0
htdocs/cashdesk/tpl/index.html
Normal file
|
|
@ -1 +0,0 @@
|
|||
Url not available
|
||||
0
htdocs/categories/admin/index.html
Normal file
0
htdocs/categories/admin/index.html
Normal file
0
htdocs/categories/class/index.html
Normal file
0
htdocs/categories/class/index.html
Normal file
0
htdocs/comm/action/class/index.html
Normal file
0
htdocs/comm/action/class/index.html
Normal file
0
htdocs/comm/admin/index.html
Normal file
0
htdocs/comm/admin/index.html
Normal file
0
htdocs/comm/mailing/class/index.html
Normal file
0
htdocs/comm/mailing/class/index.html
Normal file
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user