51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'manifests/resource/streamhost.pp', line 51
define nginx::resource::streamhost (
Enum['absent', 'present'] $ensure = 'present',
Variant[Array, String] $listen_ip = '*',
Integer $listen_port = 80,
Optional[String] $listen_options = undef,
Boolean $ipv6_enable = false,
Variant[Array, String] $ipv6_listen_ip = '::',
Integer $ipv6_listen_port = $listen_port,
String $ipv6_listen_options = 'default ipv6only=on',
$proxy = undef,
Optional[Nginx::Time]
$proxy_read_timeout = $nginx::proxy_read_timeout,
Optional[Nginx::Time]
$proxy_connect_timeout = $nginx::proxy_connect_timeout,
Array $resolver = [],
Variant[Array[String], String] $raw_prepend = [],
Variant[Array[String], String] $raw_append = [],
String $owner = $nginx::global_owner,
String $group = $nginx::global_group,
String $mode = $nginx::global_mode,
) {
if ! defined(Class['nginx']) {
fail('You must include the nginx base class before using any defined resources')
}
# Variables
if $nginx::confd_only {
$streamhost_dir = "${nginx::conf_dir}/conf.stream.d"
} else {
$streamhost_dir = "${nginx::conf_dir}/streams-available"
$streamhost_enable_dir = "${nginx::conf_dir}/streams-enabled"
$streamhost_symlink_ensure = $ensure ? {
'absent' => absent,
default => 'link',
}
}
$name_sanitized = regsubst($name, ' ', '_', 'G')
$config_file = "${streamhost_dir}/${name_sanitized}.conf"
# Add IPv6 Logic Check - Nginx service will not start if ipv6 is enabled
# and support does not exist for it in the kernel.
if $ipv6_enable and !$facts['networking']['ip6'] {
warning('nginx: IPv6 support is not enabled or configured properly')
}
concat { $config_file:
ensure => $ensure,
owner => $owner,
group => $group,
mode => $mode,
notify => Class['nginx::service'],
require => File[$streamhost_dir],
tag => 'nginx_config_file',
}
concat::fragment { "${name_sanitized}-header":
target => $config_file,
content => template('nginx/streamhost/streamhost.erb'),
order => '001',
}
unless $nginx::confd_only {
file { "${name_sanitized}.conf symlink":
ensure => $streamhost_symlink_ensure,
path => "${streamhost_enable_dir}/${name_sanitized}.conf",
target => $config_file,
owner => $owner,
group => $group,
mode => $mode,
require => Concat[$config_file],
notify => Class['nginx::service'],
}
}
}
|