Skip to content

Commit 5452422

Browse files
chrisboultoncwalsh
authored andcommitted
allow environment variables when configuring fpm pools. fixes voxpupuli#649
1 parent 5cd551f commit 5452422

File tree

3 files changed

+65
-44
lines changed

3 files changed

+65
-44
lines changed

Diff for: manifests/fpm/pool.pp

+44-44
Original file line numberDiff line numberDiff line change
@@ -121,50 +121,50 @@
121121
# '/etc/php5/fpm/pool.d' or '/etc/php-fpm.d'
122122
#
123123
define php::fpm::pool (
124-
Enum['present', 'absent'] $ensure = 'present',
125-
String[1] $listen = '127.0.0.1:9000',
126-
Integer[-1] $listen_backlog = -1,
127-
Optional[String[1]] $listen_allowed_clients = undef,
128-
Optional[String[1]] $listen_owner = undef,
129-
Optional[String[1]] $listen_group = undef,
130-
Optional[Stdlib::Filemode] $listen_mode = undef,
131-
String[1] $user = $php::fpm::config::user,
132-
String[1] $group = $php::fpm::config::group,
133-
Optional[String[1]] $apparmor_hat = undef,
134-
String[1] $pm = 'dynamic',
135-
Integer[1] $pm_max_children = 50,
136-
Integer[0] $pm_start_servers = 5,
137-
Integer[0] $pm_min_spare_servers = 5,
138-
Integer[0] $pm_max_spare_servers = 35,
139-
Integer[0] $pm_max_requests = 0,
140-
Php::Duration $pm_process_idle_timeout = '10s',
141-
Optional[Stdlib::Absolutepath] $pm_status_path = undef,
142-
Optional[Stdlib::Absolutepath] $ping_path = undef,
143-
String[1] $ping_response = 'pong',
144-
Optional[Stdlib::Absolutepath] $access_log = undef,
145-
String[1] $access_log_format = '"%R - %u %t \"%m %r\" %s"',
146-
Php::Duration $request_terminate_timeout = 0,
147-
Php::Duration $request_slowlog_timeout = 0,
148-
Array[String[1]] $security_limit_extensions = [],
149-
Stdlib::Absolutepath $slowlog = "/var/log/php-fpm/${name}-slow.log",
150-
String[1] $template = 'php/fpm/pool.conf.erb',
151-
Optional[Integer] $rlimit_files = undef,
152-
Optional[Integer] $rlimit_core = undef,
153-
Optional[Stdlib::Absolutepath] $chroot = undef,
154-
Optional[Stdlib::Absolutepath] $chdir = undef,
155-
Enum['yes', 'no'] $catch_workers_output = 'no',
156-
Optional[String[1]] $include = undef,
157-
Array[String[1]] $env = [],
158-
Hash $env_value = {},
159-
Boolean $clear_env = true,
160-
Hash $options = {},
161-
Hash $php_value = {},
162-
Hash $php_flag = {},
163-
Hash $php_admin_value = {},
164-
Hash $php_admin_flag = {},
165-
Array[String[1]] $php_directives = [],
166-
String[1] $root_group = $php::params::root_group,
167-
Optional[Stdlib::Absolutepath] $base_dir = undef,
124+
Enum['present', 'absent'] $ensure = 'present',
125+
String[1] $listen = '127.0.0.1:9000',
126+
Integer[-1] $listen_backlog = -1,
127+
Optional[String[1]] $listen_allowed_clients = undef,
128+
Optional[String[1]] $listen_owner = undef,
129+
Optional[String[1]] $listen_group = undef,
130+
Optional[Stdlib::Filemode] $listen_mode = undef,
131+
String[1] $user = $php::fpm::config::user,
132+
String[1] $group = $php::fpm::config::group,
133+
Optional[String[1]] $apparmor_hat = undef,
134+
String[1] $pm = 'dynamic',
135+
Variant[Integer[1], Php::EnvString] $pm_max_children = 50,
136+
Variant[Integer[0], Php::EnvString] $pm_start_servers = 5,
137+
Variant[Integer[0], Php::EnvString] $pm_min_spare_servers = 5,
138+
Variant[Integer[0], Php::EnvString] $pm_max_spare_servers = 35,
139+
Variant[Integer[0], Php::EnvString] $pm_max_requests = 0,
140+
Variant[Php::Duration, Php::EnvString] $pm_process_idle_timeout = '10s',
141+
Optional[Stdlib::Absolutepath] $pm_status_path = undef,
142+
Optional[Stdlib::Absolutepath] $ping_path = undef,
143+
String[1] $ping_response = 'pong',
144+
Optional[Stdlib::Absolutepath] $access_log = undef,
145+
String[1] $access_log_format = '"%R - %u %t \"%m %r\" %s"',
146+
Variant[Php::Duration, Php::EnvString] $request_terminate_timeout = 0,
147+
Variant[Php::Duration, Php::EnvString] $request_slowlog_timeout = 0,
148+
Array[String[1]] $security_limit_extensions = [],
149+
Stdlib::Absolutepath $slowlog = "/var/log/php-fpm/${name}-slow.log",
150+
String[1] $template = 'php/fpm/pool.conf.erb',
151+
Optional[Integer] $rlimit_files = undef,
152+
Optional[Integer] $rlimit_core = undef,
153+
Optional[Stdlib::Absolutepath] $chroot = undef,
154+
Optional[Stdlib::Absolutepath] $chdir = undef,
155+
Enum['yes', 'no'] $catch_workers_output = 'no',
156+
Optional[String[1]] $include = undef,
157+
Array[String[1]] $env = [],
158+
Hash $env_value = {},
159+
Boolean $clear_env = true,
160+
Hash $options = {},
161+
Hash $php_value = {},
162+
Hash $php_flag = {},
163+
Hash $php_admin_value = {},
164+
Hash $php_admin_flag = {},
165+
Array[String[1]] $php_directives = [],
166+
String[1] $root_group = $php::params::root_group,
167+
Optional[Stdlib::Absolutepath] $base_dir = undef,
168168
) {
169169
# The base class must be included first because it is used by parameter defaults
170170
if ! defined(Class['php']) {

Diff for: spec/defines/fpm_pool_spec.rb

+20
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,26 @@
1010
end
1111
let(:pre_condition) { 'include php' }
1212

13+
context 'with environment based config' do
14+
let(:title) { 'env-config' }
15+
let(:params) do
16+
{
17+
pm_max_children: '${PM_MAX_CHILDREN}',
18+
pm_start_servers: '${PM_START_SERVERS}',
19+
pm_min_spare_servers: '${PM_MIN_SPARE_SERVERS}',
20+
pm_max_spare_servers: '${PM_MAX_SPARE_SERVERS}',
21+
pm_max_requests: '${PM_MAX_REQUESTS}',
22+
pm_process_idle_timeout: '${PM_PROCESS_IDLE_TIMEOUT}',
23+
request_terminate_timeout: '${REQUEST_TERMINATE_TIMEOUT}',
24+
request_slowlog_timeout: '${REQUEST_SLOWLOG_TIMEOUT}',
25+
}
26+
end
27+
28+
it {
29+
is_expected.to compile
30+
}
31+
end
32+
1333
case facts[:os]['name']
1434
when 'Debian'
1535
context 'plain config' do

Diff for: types/envstring.pp

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
type Php::EnvString = Pattern[/\$\{[\w]+\}/]

0 commit comments

Comments
 (0)