Vagrant 中的 Chef Solo:如何创建 RabbitMQ 虚拟主机并将其绑定到给定的用户名
Chef Solo in Vagrant: How to create RabbitMQ virtual host nad bind it to given username
我在 Vagrant 中创建了一个虚拟机(一个简单的 hashicorp/precise64
)。我需要用 RabbitMq 来配置它,我会:
- 创建用户名
testUsr
并将 testPass
作为具有管理角色的密码
- 创建虚拟主机
testVirtualHost
- 将
testVirtualHost
绑定到 testUsr
这是我的尝试:
Vagrant.configure(2) do |config|
config.vm.box = "hashicorp/precise64"
config.vm.provision "chef_solo" do |chef|
chef.add_recipe "rabbitmq"
chef.json = {
'rabbitmq' => {
'default_user' => 'testUsr',
'default_pass' => 'testPass',
'virtualhosts' => ['testVirtualHost'],
'enabled_users' => [
{
'name' => 'testUsr',
'password' => 'testPass',
'rights' => [{ 'vhost' => 'testVirtualHost', 'conf' => '.*', 'write' => '.*', 'read' => '.*' }]
}
]
}
}
end
config.vm.network "forwarded_port", guest: 15672, host: 15672, id: "rabbitmq"
end
用户和密码已创建,但虚拟主机尚未创建。哪里错了?
这是根据您的要求修改后的 Vagrantfile:
Vagrant.configure(2) do |config|
config.vm.box = "hashicorp/precise64"
config.vm.provision "chef_solo" do |chef|
chef.add_recipe "rabbitmq::user_management"
chef.add_recipe "rabbitmq::mgmt_console"
chef.json = {
'rabbitmq' => {
'default_user' => 'testUsr',
'default_pass' => 'testPass',
'virtualhosts' => ['testVirtualHost'],
'enabled_users' => [
{
'name' => 'testUsr',
'password' => 'testPass',
'rights' => [{ 'vhost' => 'testVirtualHost', 'conf' => '.*', 'write' => '.*', 'read' => '.*' }],
'tag' => 'administrator'
}
]
}
}
end
config.vm.network "forwarded_port", guest: 15672, host: 15672, id: "rabbitmq"
end
以下是我所做的修改和补充:
- 创建用户名 testUsr 并将 testPass 作为具有管理角色的密码
要使 testUsr 成为管理员,此用户需要标记为 'administrator' permissions:
'enabled_users' => [
{
'name' => 'testUsr',
'password' => 'testPass',
'rights' => [{ 'vhost' => 'testVirtualHost', 'conf' => '.*', 'write' => '.*', 'read' => '.*' }],
'tag' => 'administrator'
}
- 创建虚拟主机testVirtualHost
这里的变化不是调用 rabbitmq 配方,而是调用 rabbitmq::user_management 配方:
chef.add_recipe "rabbitmq::user_management"
这个配方调用rabbitmq配方。 user_management 部分代码将创建 testVirtualHost。
- 将 testVirtualHost 绑定到 testUsr
您已经为此准备好了代码。更改如上(调用 rabbitmq::user_management 配方)
我还注意到您正在将端口转发到 rabbitmq 管理控制台。要使控制台正常工作,您需要根据 management.
启用 rabbitmq_management 插件
我补充了:
chef.add_recipe "rabbitmq::mgmt_console"
因为 mgmt_console 配方管理该插件。
您现在可以通过 http://localhost:15672
访问管理控制台
我在 Vagrant 中创建了一个虚拟机(一个简单的 hashicorp/precise64
)。我需要用 RabbitMq 来配置它,我会:
- 创建用户名
testUsr
并将testPass
作为具有管理角色的密码 - 创建虚拟主机
testVirtualHost
- 将
testVirtualHost
绑定到testUsr
这是我的尝试:
Vagrant.configure(2) do |config|
config.vm.box = "hashicorp/precise64"
config.vm.provision "chef_solo" do |chef|
chef.add_recipe "rabbitmq"
chef.json = {
'rabbitmq' => {
'default_user' => 'testUsr',
'default_pass' => 'testPass',
'virtualhosts' => ['testVirtualHost'],
'enabled_users' => [
{
'name' => 'testUsr',
'password' => 'testPass',
'rights' => [{ 'vhost' => 'testVirtualHost', 'conf' => '.*', 'write' => '.*', 'read' => '.*' }]
}
]
}
}
end
config.vm.network "forwarded_port", guest: 15672, host: 15672, id: "rabbitmq"
end
用户和密码已创建,但虚拟主机尚未创建。哪里错了?
这是根据您的要求修改后的 Vagrantfile:
Vagrant.configure(2) do |config|
config.vm.box = "hashicorp/precise64"
config.vm.provision "chef_solo" do |chef|
chef.add_recipe "rabbitmq::user_management"
chef.add_recipe "rabbitmq::mgmt_console"
chef.json = {
'rabbitmq' => {
'default_user' => 'testUsr',
'default_pass' => 'testPass',
'virtualhosts' => ['testVirtualHost'],
'enabled_users' => [
{
'name' => 'testUsr',
'password' => 'testPass',
'rights' => [{ 'vhost' => 'testVirtualHost', 'conf' => '.*', 'write' => '.*', 'read' => '.*' }],
'tag' => 'administrator'
}
]
}
}
end
config.vm.network "forwarded_port", guest: 15672, host: 15672, id: "rabbitmq"
end
以下是我所做的修改和补充:
- 创建用户名 testUsr 并将 testPass 作为具有管理角色的密码
要使 testUsr 成为管理员,此用户需要标记为 'administrator' permissions:
'enabled_users' => [
{
'name' => 'testUsr',
'password' => 'testPass',
'rights' => [{ 'vhost' => 'testVirtualHost', 'conf' => '.*', 'write' => '.*', 'read' => '.*' }],
'tag' => 'administrator'
}
- 创建虚拟主机testVirtualHost
这里的变化不是调用 rabbitmq 配方,而是调用 rabbitmq::user_management 配方:
chef.add_recipe "rabbitmq::user_management"
这个配方调用rabbitmq配方。 user_management 部分代码将创建 testVirtualHost。
- 将 testVirtualHost 绑定到 testUsr
您已经为此准备好了代码。更改如上(调用 rabbitmq::user_management 配方)
我还注意到您正在将端口转发到 rabbitmq 管理控制台。要使控制台正常工作,您需要根据 management.
启用 rabbitmq_management 插件我补充了:
chef.add_recipe "rabbitmq::mgmt_console"
因为 mgmt_console 配方管理该插件。
您现在可以通过 http://localhost:15672
访问管理控制台