AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 626292
Accepted
Peter M
Peter M
Asked: 2014-09-05 08:01:42 +0800 CST2014-09-05 08:01:42 +0800 CST 2014-09-05 08:01:42 +0800 CST

厨师:如何阻止 rabbitmq 食谱中的 user_management 配方添加访客帐户?

  • 772

我是新来的厨师,想使用 rabbitmq user_management 配方,而不是添加 rabbitmq 来宾帐户的默认行为。

我正在使用 chef-server 11.1.3 和 rabbitmq cookbook 版本 3.3.0 ( https://supermarket.getchef.com/cookbooks/rabbitmq ) 在 ubuntu 14.04 上安装和配置 rabbitmq 3.3.5。

我定义了一个厨师角色,我使用 user_management 配方和 disabled_users 删除来宾帐户,但每次运行厨师客户端时,来宾帐户首先添加到rabbitmq,然后再次删除(从“-执行”行中可以看到下面的 client.log 输出)。我究竟做错了什么?

/var/log/chef/client.log 输出

Recipe: rabbitmq::user_management
  * rabbitmq_user[guest] action addRecipe: <Dynamically Defined Resource>
  * execute[rabbitmqctl add_user guest] action run
    - execute rabbitmqctl add_user guest 'guest'

Recipe: rabbitmq::user_management
  * rabbitmq_user[guest] action set_tags (up to date)
  * rabbitmq_user[guest] action set_permissionsRecipe: <Dynamically Defined Resource>
  * execute[rabbitmqctl set_permissions  guest ".*" ".*" ".*"] action run
    - execute rabbitmqctl set_permissions  guest ".*" ".*" ".*"

Recipe: rabbitmq::user_management
  * rabbitmq_user[user1] action add (up to date)
  * rabbitmq_user[user1] action set_tags (up to date)
  * rabbitmq_user[user1] action set_permissionsRecipe: <Dynamically Defined Resource>
  * execute[rabbitmqctl set_permissions -p / user1 ".*" ".*" ".*"] action run
    - execute rabbitmqctl set_permissions -p / user1 ".*" ".*" ".*"

Recipe: rabbitmq::user_management
  * rabbitmq_user[guest] action deleteRecipe: <Dynamically Defined Resource>
  * execute[rabbitmqctl delete_user guest] action run
    - execute rabbitmqctl delete_user guest

我的厨师角色

{
  "name": "server-rabbitmq-test",
  "description": "testing",
  "json_class": "Chef::Role",
  "default_attributes": {
    "rabbitmq": {
      "version": "3.3.5",
      "use_distro_version": "true",
      "port": "5672",
      "virtualhosts": [
        "/vhost1"
      ],
      "disabled_users": [
        "guest"
      ],
      "enabled_users": [
        {
          "name": "user1",
          "password": "user1",
          "tag": "user tag",
          "rights": [
            {
              "vhost": "/vhost1",
              "conf": ".*",
              "write": ".*",
              "read": ".*"
            }
          ]
        }
      ]
    }
  },
  "override_attributes": {
  },
  "chef_type": "role",
  "run_list": [
    "recipe[rabbitmq]",
    "recipe[rabbitmq::mgmt_console]",
    "recipe[rabbitmq::policy_management]",
    "recipe[rabbitmq::user_management]",
    "recipe[rabbitmq::virtualhost_management]",
    "recipe[rabbitmq::plugin_management]"
  ],
  "env_run_lists": {
  }
}

修改rabbitmq食谱???

我可以通过更改 rabbitmq/attributes/default.rb 文件来停止该行为:

# users
default['rabbitmq']['enabled_users'] =
  [{ :name => 'guest', :password => 'guest', :rights =>
    [{ :vhost => nil , :conf => '.*', :write => '.*', :read => '.*' }]
  }]

对此:

# users
    default['rabbitmq']['enabled_users'] = []

但是必须有更好的方法来做到这一点,不是吗?

谢谢!!

ubuntu
  • 3 3 个回答
  • 897 Views

3 个回答

  • Voted
  1. Best Answer
    Matt
    2014-09-11T00:50:51+08:002014-09-11T00:50:51+08:00

    您需要在[:rabbitmq][:enabled_users]某处覆盖该属性。编辑原始食谱并不是最好的方法,因为有一天食谱会更新,你需要记住再做一次。

    当您处理default在食谱属性文件中设置的属性时,它几乎可以在 Chef 的任何位置被覆盖。

    包装食谱

    可能最便携的方法是创建您自己的特定领域的 RabbitMQ包装食谱,并通过它完成所有定制工作。基本上,它是一个薄垫片,可以将大部分工作直接传递到原始的 RabbitMQ 食谱上,除非你想改变的地方。

    在这种情况下,您可以default[:rabbitmq][:enabled_users] = []在包装器说明书中进行设置attributes.rb,因为它首先加载将是默认的default。

    角色、环境、节点覆盖

    您还可以在节点(单数)、环境(组)或角色(全局)级别为 Chef 服务器上的属性设置覆盖。如果您觉得将在这些分组之一中使用属性覆盖,那么在那里完成可能会更好。

    请注意,您会丢失在食谱中执行此类操作时获得的版本控制(并且很可能是更改跟踪)。

    • 1
  2. StephenKing
    2014-09-05T11:00:44+08:002014-09-05T11:00:44+08:00

    是的,差不多。您还可以使用显式禁用用户

    node[:rabbitmq][:disabled_users] = ["guest"]
    

    确保它在早期运行中不存在(我在这里使用它)。

    • 0
  3. Peter M
    2014-09-26T06:12:11+08:002014-09-26T06:12:11+08:00

    再次感谢@mtm。对于此处的记录,添加了解决 override_attributes 部分问题的完整角色:

     {
       "name": "server-rabbitmq-test",
       "description": "testing",
       "json_class": "Chef::Role",
       "default_attributes": {
         "rabbitmq": {
           "version": "3.3.5",
           "use_distro_version": "true",
           "port": "5672",
           "virtualhosts": [
             "/vhost1"
           ],
           "disabled_users": [
             "guest"
           ],
           "enabled_users": [
             {
               "name": "user1",
               "password": "user1",
               "tag": "user tag",
               "rights": [
                 {
                   "vhost": "/vhost1",
                   "conf": ".*",
                   "write": ".*",
                   "read": ".*"
                 }
               ]
             }
           ]
         }
       },
       "override_attributes": {
         "rabbitmq": {
           "enabled_users": []
         }
       },
       "chef_type": "role",
       "run_list": [
         "recipe[rabbitmq]",
         "recipe[rabbitmq::mgmt_console]",
         "recipe[rabbitmq::policy_management]",
         "recipe[rabbitmq::user_management]",
         "recipe[rabbitmq::virtualhost_management]",
         "recipe[rabbitmq::plugin_management]"
       ],
       "env_run_lists": {
       }
     }
    
    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve