Puppet Class: nova::rabbitmq

Defined in:
manifests/rabbitmq.pp

Overview

Class: nova::rabbitmq

Installs and manages rabbitmq server for nova

Parameters:

userid

(optional) The username to use when connecting to Rabbit Defaults to ‘guest’

password

(optional) The password to use when connecting to Rabbit Defaults to ‘guest’

port

(optional) The port to use when connecting to Rabbit Defaults to ‘5672’

virtual_host

(optional) The virtual host to use when connecting to Rabbit Defaults to ‘/’

cluster_disk_nodes

(optional) Enables/disables RabbitMQ clustering. Specify an array of Rabbit Broker IP addresses to configure clustering. Defaults to false

enabled

(optional) Whether to enable the Rabbit service Defaults to false

rabbitmq_class

(optional) The rabbitmq puppet class to depend on, which is dependent on the puppet-rabbitmq version. Use the default for 1.x, use ‘rabbitmq’ for 3.x Defaults to ‘rabbitmq::server’

Parameters:

  • userid (Any) (defaults to: 'guest')
  • password (Any) (defaults to: 'guest')
  • port (Any) (defaults to: '5672')
  • virtual_host (Any) (defaults to: '/')
  • cluster_disk_nodes (Any) (defaults to: false)
  • enabled (Any) (defaults to: true)
  • rabbitmq_class (Any) (defaults to: 'rabbitmq::server')


38
39
40
41
42
43
44
45
46
47
48
49
50
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
# File 'manifests/rabbitmq.pp', line 38

class nova::rabbitmq(
  $userid             ='guest',
  $password           ='guest',
  $port               ='5672',
  $virtual_host       ='/',
  $cluster_disk_nodes = false,
  $enabled            = true,
  $rabbitmq_class     = 'rabbitmq::server'
) {

  # only configure nova after the queue is up
  Class[$rabbitmq_class] -> Anchor<| title == 'nova-start' |>

  if ($enabled) {
    if $userid == 'guest' {
      $delete_guest_user = false
    } else {
      $delete_guest_user = true
      rabbitmq_user { $userid:
        admin     => true,
        password  => $password,
        provider  => 'rabbitmqctl',
        require   => Class[$rabbitmq_class],
      }
      # I need to figure out the appropriate permissions
      rabbitmq_user_permissions { "${userid}@${virtual_host}":
        configure_permission => '.*',
        write_permission     => '.*',
        read_permission      => '.*',
        provider             => 'rabbitmqctl',
      }->Anchor<| title == 'nova-start' |>
    }
    $service_ensure = 'running'
  } else {
    $service_ensure = 'stopped'
  }

  if $cluster_disk_nodes {
    class { $rabbitmq_class:
      service_ensure           => $service_ensure,
      port                     => $port,
      delete_guest_user        => $delete_guest_user,
      config_cluster           => true,
      cluster_disk_nodes       => $cluster_disk_nodes,
      wipe_db_on_cookie_change => true,
    }
  } else {
    class { $rabbitmq_class:
      service_ensure    => $service_ensure,
      port              => $port,
      delete_guest_user => $delete_guest_user,
    }
  }

  if ($enabled) {
    rabbitmq_vhost { $virtual_host:
      provider => 'rabbitmqctl',
      require  => Class[$rabbitmq_class],
    }
  }
}