我们使用 Boxen/Puppet 来自动构建我们的 Mac 开发笔记本电脑,第一步是安装 rabbitmq,声明 vhosts 并添加用户。
但是rabbitmq需要更多的时间来准备vhosts声明和添加新用户,所以我们总是需要运行两次boxen。
这是我的逻辑
通过运行以下命令检查rabbitmq是否准备好
rabbitmqadmin list vhost
但是我们需要安装并运行rabbitmq所以我添加了
require => Service['dev.rabbitmq']
如果上述命令有效,那么我们知道rabbit正在接受连接。
在这里,让我们把所有东西放在一起。
exec { "Wait for rabbitmq":
command => "rabbitmqadmin list vhosts",
tries => 2,
try_sleep => 30,
require => Service['dev.rabbitmq']
}
dev::rabbitmq::vhost { '/clearvh':
require => Exec['Wait for rabbitmq']
}
dev::rabbitmq::user { 'clear': password => 'password' }
dev::rabbitmq::permission { [ 'guest', 'clear' ]: vhost => '/clearvh' }
}
这很好用,但Exec {"Wait for rabbit"}
每次都会被调用,即使dev::rabbit::vhost
不是。如果它只被dev::rabbitmq::vhost
.
那可能吗 ?
谢谢