Defined Type: nginx::resource::streamhost

Defined in:
manifests/resource/streamhost.pp

Overview

define: nginx::resource::streamhost

This definition creates a virtual host

Parameters:

[*ensure*]              - Enables or disables the specified streamhost
  (present|absent)
[*listen_ip*]           - Default IP Address for NGINX to listen with this
  streamhost on. Defaults to all interfaces (*)
[*listen_port*]         - Default IP Port for NGINX to listen with this
  streamhost on. Defaults to TCP 80
[*listen_options*]      - Extra options for listen directive like
  'default' to catchall. Undef by default.
[*ipv6_enable*]         - BOOL value to enable/disable IPv6 support
  (false|true). Module will check to see if IPv6 support exists on your
  system before enabling.
[*ipv6_listen_ip*]      - Default IPv6 Address for NGINX to listen with
  this streamhost on. Defaults to all interfaces (::)
[*ipv6_listen_port*]    - Default IPv6 Port for NGINX to listen with this
  streamhost on. Defaults to TCP 80
[*ipv6_listen_options*] - Extra options for listen directive like 'default'
  to catchall. Template will allways add ipv6only=on. While issue
  jfryman/puppet-nginx#30 is discussed, default value is 'default'.
[*proxy*]               - Proxy server(s) for the root location to connect
  to.  Accepts a single value, can be used in conjunction with
  nginx::resource::upstream
[*proxy_read_timeout*]  - Override the default the proxy read timeout value
  of 90 seconds
[*resolver*]            - Array: Configures name servers used to resolve
  names of upstream servers into addresses.
[*server_name*]         - List of streamhost names for which this streamhost will
  respond. Default [$name].
[*raw_prepend*]            - A single string, or an array of strings to
  prepend to the server directive (after cfg prepend directives). NOTE:
  YOU are responsible for a semicolon on each line that requires one.
[*raw_append*]             - A single string, or an array of strings to
  append to the server directive (after cfg append directives). NOTE:
  YOU are responsible for a semicolon on each line that requires one.
[*owner*]                   - Defines owner of the .conf file
[*group*]                   - Defines group of the .conf file
[*mode*]                    - Defines mode of the .conf file
                              Default to return 503

Actions:

Requires:

Sample Usage:

nginx::resource::streamhost { 'test2.local':
  ensure   => present,
}

Parameters:

  • ensure (Any) (defaults to: 'present')
  • listen_ip (Any) (defaults to: '*')
  • listen_port (Any) (defaults to: '80')
  • listen_options (Any) (defaults to: undef)
  • ipv6_enable (Any) (defaults to: false)
  • ipv6_listen_ip (Any) (defaults to: '::')
  • ipv6_listen_port (Any) (defaults to: '80')
  • ipv6_listen_options (Any) (defaults to: 'default ipv6only=on')
  • proxy (Any) (defaults to: undef)
  • proxy_read_timeout (Any) (defaults to: $::nginx::config::proxy_read_timeout)
  • proxy_connect_timeout (Any) (defaults to: $::nginx::config::proxy_connect_timeout)
  • resolver (Any) (defaults to: [])
  • server_name (Any) (defaults to: [$name])
  • raw_prepend (Any) (defaults to: undef)
  • raw_append (Any) (defaults to: undef)
  • owner (Any) (defaults to: $::nginx::config::global_owner)
  • group (Any) (defaults to: $::nginx::config::global_group)
  • mode (Any) (defaults to: $::nginx::config::global_mode)


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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'manifests/resource/streamhost.pp', line 51

define nginx::resource::streamhost (
  $ensure                       = 'present',
  $listen_ip                    = '*',
  $listen_port                  = '80',
  $listen_options               = undef,
  $ipv6_enable                  = false,
  $ipv6_listen_ip               = '::',
  $ipv6_listen_port             = '80',
  $ipv6_listen_options          = 'default ipv6only=on',
  $proxy                        = undef,
  $proxy_read_timeout           = $::nginx::config::proxy_read_timeout,
  $proxy_connect_timeout        = $::nginx::config::proxy_connect_timeout,
  $resolver                     = [],
  $server_name                  = [$name],
  $raw_prepend                  = undef,
  $raw_append                   = undef,
  $owner                        = $::nginx::config::global_owner,
  $group                        = $::nginx::config::global_group,
  $mode                         = $::nginx::config::global_mode,
) {

  validate_re($ensure, '^(present|absent)$',
    "${ensure} is not supported for ensure. Allowed values are 'present' and 'absent'.")
  if !(is_array($listen_ip) or is_string($listen_ip)) {
    fail('$listen_ip must be a string or array.')
  }
  if !is_integer($listen_port) {
    fail('$listen_port must be an integer.')
  }
  if ($listen_options != undef) {
    validate_string($listen_options)
  }
  validate_bool($ipv6_enable)
  if !(is_array($ipv6_listen_ip) or is_string($ipv6_listen_ip)) {
    fail('$ipv6_listen_ip must be a string or array.')
  }
  if !is_integer($ipv6_listen_port) {
    fail('$ipv6_listen_port must be an integer.')
  }
  validate_string($ipv6_listen_options)

  validate_string($proxy_read_timeout)

  validate_array($resolver)
  validate_array($server_name)

  validate_string($owner)
  validate_string($group)
  validate_re($mode, '^\d{4}$',
    "${mode} is not valid. It should be 4 digits (0644 by default).")

  # Variables
  $streamhost_dir = "${::nginx::config::conf_dir}/streams-available"
  $streamhost_enable_dir = "${::nginx::config::conf_dir}/streams-enabled"
  $streamhost_symlink_ensure = $ensure ? {
    'absent' => absent,
    default  => 'link',
  }

  $name_sanitized = regsubst($name, ' ', '_', 'G')
  $config_file = "${streamhost_dir}/${name_sanitized}.conf"

  File {
    ensure => $ensure ? {
      'absent' => absent,
      default  => 'file',
    },
    notify => Class['::nginx::service'],
    owner  => $owner,
    group  => $group,
    mode   => $mode,
  }

  # 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 == true) and (!$::ipaddress6) {
    warning('nginx: IPv6 support is not enabled or configured properly')
  }

  concat { $config_file:
    owner  => $owner,
    group  => $group,
    mode   => $mode,
    notify => Class['::nginx::service'],
  }

  concat::fragment { "${name_sanitized}-header":
    target  => $config_file,
    content => template('nginx/streamhost/streamhost.erb'),
    order   => '001',
  }

  file{ "${name_sanitized}.conf symlink":
    ensure  => $streamhost_symlink_ensure,
    path    => "${streamhost_enable_dir}/${name_sanitized}.conf",
    target  => $config_file,
    require => Concat[$config_file],
    notify  => Class['::nginx::service'],
  }

}