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’ 
| 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],
    }
  }
} |