4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'modules/envoyproxy/manifests/conf.pp', line 4
define envoyproxy::conf(
String $content,
Enum['listener', 'cluster'] $conf_type,
Integer[0,99] $priority = 50,
) {
$safe_title = regsubst($title, '\W', '_', 'G')
# First of all, we can't configure anything if envoy is not installed.
if !defined(Class['envoyproxy']) {
fail('This resource should only be used once the envoyproxy class is declared.')
}
$priority_string = sprintf('%02d', $priority)
# Please note we don't use validate_cmd here because we want to avoid
# race conditions where a listener gets applied before the corresponding
# clusters are applied, thus failing verification.
#
# While the wrong file will be written to disk, we are guaranteed that:
# - it will never be composed into the actual configuration file until it produces
# a valid configuration
# - We will be notified of the failure
file { "${envoyproxy::envoy_directory}/${conf_type}s.d/${priority_string}-${safe_title}.yaml":
ensure => present,
content => $content,
owner => 'root',
group => 'root',
mode => '0444',
notify => Exec['verify-envoy-config']
}
}
|