member.pp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # Define: nginx::resources::upstream::member
  2. #
  3. # Creates an upstream member inside the upstream block. Export this resource
  4. # in all upstream member servers and collect them on the NGINX server.
  5. #
  6. #
  7. # Requirements:
  8. # Requires storeconfigs on the Puppet Master to export and collect resources
  9. #
  10. #
  11. # Parameters:
  12. # [*ensure*] - Enables or disables the specified member (present|absent)
  13. # [*upstream*] - The name of the upstream resource
  14. # [*server*] - Hostname or IP of the upstream member server
  15. # [*port*] - Port of the listening service on the upstream member
  16. # [*upstream_fail_timeout*] - Set the fail_timeout for the upstream. Default is 10 seconds
  17. #
  18. #
  19. # Examples:
  20. #
  21. # Exporting the resource on a upstream member server:
  22. #
  23. # @@nginx::resource::upstream::member { $::fqdn:
  24. # ensure => present,
  25. # upstream => 'proxypass',
  26. # server => $::ipaddress,
  27. # port => 3000,
  28. # }
  29. #
  30. #
  31. # Collecting the resource on the NGINX server:
  32. #
  33. # nginx::resource::upstream { 'proxypass':
  34. # ensure => present,
  35. # }
  36. #
  37. define nginx::resource::upstream::member (
  38. $upstream,
  39. $server,
  40. $ensure = 'present',
  41. $port = 80,
  42. $upstream_fail_timeout = '10s',
  43. ) {
  44. validate_re($ensure, '^(present|absent)$',
  45. "${ensure} is not supported for ensure. Allowed values are 'present' and 'absent'.")
  46. if is_string($port) {
  47. warning('DEPRECATION: String $port must be converted to an integer. Integer string support will be removed in a future release.')
  48. }
  49. elsif !is_integer($port) {
  50. fail('$port must be an integer.')
  51. }
  52. $ensure_real = $ensure ? {
  53. 'absent' => absent,
  54. default => present,
  55. }
  56. # Uses: $server, $port, $upstream_fail_timeout
  57. concat::fragment { "${upstream}_upstream_member_${name}":
  58. target => "${::nginx::config::conf_dir}/conf.d/${upstream}-upstream.conf",
  59. order => 40,
  60. content => template('nginx/conf.d/upstream_member.erb'),
  61. }
  62. }