如何使用 'puppetlabs/rabbitmq' 模块设置 HA rabbitMQ?

How can I use 'puppetlabs/rabbitmq' module to set up HA rabbitMQ?

我绝不是 RabbitMQ 方面的专家,但我正在尝试操纵 RabbitMQ 集群的设置。在文档中,我的一位同事写道,我需要实现相当于执行...

rabbitmqctl set_policy HA '^(?!amq.).*' '{"ha-mode": "all"}

...在我的人偶清单中。我试过了...

  rabbitmq_policy { 'HA':
      pattern    => '^(?!amq.).*',
      priority   => 0,
      applyto    => 'all',
      definition => {
         'ha-mode'      => 'all',
         'ha-sync-mode' => 'automatic',
      },
  }

...但是当我在我的兔子代码上执行 "puppet agent -t" 时出现此错误:

Error: Failed to apply catalog: Parameter name failed on Rabbitmq_policy[HA]: Invalid value "HA". Valid values match /^\S+@\S+$/. at /etc/puppetlabs/code/environments/production/modules/core/wraprabbitmq/manifests/init.pp:59

我做错了什么?我也 have/need 有这样的东西吗...

rabbitmq_vhost { 'myvhost':
  ensure => present,
}

...如果我正在设置 HA rabbitMQ?

更新:谢谢马特

我现在正在使用这个:

   rabbitmq_policy { 'HA@/':
      pattern    => '^(?!amq.).*',
      priority   => 0,
      applyto    => 'all',
      definition => {
         'ha-mode'      => 'all',
         'ha-sync-mode' => 'automatic',
      },
   }

我也不需要用这个:

rabbitmq_vhost { 'myvhost':
  ensure => present,
}

在这里检查源代码:https://github.com/puppetlabs/puppetlabs-rabbitmq/blob/master/lib/puppet/type/rabbitmq_policy.rb#L21-L24

我们看到该类型的名称参数需要是 'combination of policy@vhost to create policy for.' 您的 'HA' 值不遵循该命名法,因此无法通过 /^\S+@\S+$/ 的正则表达式检查。

您需要按照 'policy@vhost' 格式为 rabbitmq_policy 资源命名,然后您的代码才能编译。