【问题标题】:Use Chef roles to insert attributes使用 Chef 角色插入属性
【发布时间】:2013-06-16 11:07:59
【问题描述】:

我正在阅读 Opscode 的 Roles 页面,据我了解,我的角色文件 ruby​​ DSL 应该如下所示:

name "role_zabbix_agent_corp"
description "Assigning Server IP's to the config for Corporate side."
run_list "recipe[zabbix_agent_corp]"
default_attributes "zabbix_agent_corp" => { 
    "Server" => [ "zabbix-server1.com" ],
    "ServerActive" => [ "zabbix-server1.com" ]
}

但是,当我执行chef-client 运行时,上面指定的属性不会填充配置文件中的空白点。食谱的名称是zabbix_agent_corp,属性文件是default.rb 文件。以下是应该填写的属性:

default['zabbix']['agent']['conf']['Server'] = ""
default['zabbix']['agent']['conf']['ServerActive'] = ""

我需要做些不同的事情来调用食谱中的属性,还是我的角色文件没有正确编写?

【问题讨论】:

  • zabbix_agent_corp 与 ['zabbix']['agent']['conf']。感受路径最后部分的不同。
  • 那么,代替我在 default_attributes 之后的内容,放入哈希? default_attributes "default['zabbix']['agent']['conf']" =>?
  • Chef: How do I override default attributes in roles?的其他人可能有重复或类似的帖子

标签: ruby chef-infra role zabbix


【解决方案1】:

您在角色中创建的哈希需要与属性的定义相匹配。

在这种情况下,您的角色应如下所示:

default_attributes
  'zabbix' => {
    'agent' => {
      'conf' => {
        'Server' => 'zabbix-server1.com',
        'ServerActive' => 'zabbix-server1.com'
      }
    }
  }

请参阅 Chef 文档的 Ruby DSL 部分以获取完整参考。

注意:Chef 约定是属性名称应全部小写并带有下划线,而不是 Pascal/CamelCase。例如。 ServerActive 应该是 server_active

【讨论】:

  • 这些变量的 Zabbix 命名就是这样。否则我会遵循这些准则。
猜你喜欢
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多