amqp.pp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. define enable_rabbitmq {
  2. create_resources(packstack::firewall, hiera('FIREWALL_AMQP_RULES', {}))
  3. $amqp_enable_ssl = hiera('CONFIG_AMQP_SSL_ENABLED')
  4. if $amqp_enable_ssl {
  5. $kombu_ssl_ca_certs = hiera('CONFIG_AMQP_SSL_CACERT_FILE', undef)
  6. $kombu_ssl_keyfile = '/etc/pki/tls/private/ssl_amqp.key'
  7. $kombu_ssl_certfile = '/etc/pki/tls/certs/ssl_amqp.crt'
  8. $files_to_set_owner = [ $kombu_ssl_keyfile, $kombu_ssl_certfile ]
  9. file { $files_to_set_owner:
  10. owner => 'rabbitmq',
  11. group => 'rabbitmq',
  12. require => Package['rabbitmq-server'],
  13. notify => Service['rabbitmq-server'],
  14. }
  15. class { '::rabbitmq':
  16. port => undef,
  17. ssl_port => hiera('CONFIG_AMQP_CLIENTS_PORT'),
  18. ssl_only => true,
  19. ssl => true,
  20. ssl_cacert => $kombu_ssl_ca_certs,
  21. ssl_cert => $kombu_ssl_certfile,
  22. ssl_key => $kombu_ssl_keyfile,
  23. default_user => hiera('CONFIG_AMQP_AUTH_USER'),
  24. default_pass => hiera('CONFIG_AMQP_AUTH_PASSWORD'),
  25. package_provider => 'yum',
  26. repos_ensure => false,
  27. admin_enable => false,
  28. # FIXME: it's ugly to not to require client certs
  29. ssl_fail_if_no_peer_cert => true,
  30. config_variables => {
  31. 'tcp_listen_options' => '[binary,{packet, raw},{reuseaddr, true},{backlog, 128},{nodelay, true},{exit_on_close, false},{keepalive, true}]',
  32. 'loopback_users' => '[]',
  33. },
  34. }
  35. } else {
  36. class { '::rabbitmq':
  37. port => hiera('CONFIG_AMQP_CLIENTS_PORT'),
  38. ssl => false,
  39. default_user => hiera('CONFIG_AMQP_AUTH_USER'),
  40. default_pass => hiera('CONFIG_AMQP_AUTH_PASSWORD'),
  41. package_provider => 'yum',
  42. repos_ensure => false,
  43. admin_enable => false,
  44. config_variables => {
  45. 'tcp_listen_options' => '[binary,{packet, raw},{reuseaddr, true},{backlog, 128},{nodelay, true},{exit_on_close, false},{keepalive, true}]',
  46. 'loopback_users' => '[]',
  47. },
  48. }
  49. }
  50. # TO-DO: remove this workaround as soon as this is fixed in puppetlabs-rabbitmq module
  51. # https://github.com/puppetlabs/puppetlabs-rabbitmq/pull/454
  52. File <| path == '/etc/rabbitmq/rabbitmq.config' |> {
  53. ensure => present,
  54. owner => 'rabbitmq',
  55. group => 'rabbitmq',
  56. mode => '0640',
  57. }
  58. }
  59. class packstack::amqp ()
  60. {
  61. $amqp = hiera('CONFIG_AMQP_BACKEND')
  62. case $amqp {
  63. 'rabbitmq': {
  64. enable_rabbitmq { 'rabbitmq': }
  65. # The following kernel parameters help alleviate some RabbitMQ
  66. # connection issues
  67. sysctl::value { 'net.ipv4.tcp_keepalive_intvl':
  68. value => '1',
  69. }
  70. sysctl::value { 'net.ipv4.tcp_keepalive_probes':
  71. value => '5',
  72. }
  73. sysctl::value { 'net.ipv4.tcp_keepalive_time':
  74. value => '5',
  75. }
  76. }
  77. default: {}
  78. }
  79. }