Chef节点未从继承角色接收属性

时间:2013-12-21 00:17:18

标签: chef

我有一个角色层次结构,我将其应用于节点以尝试设置它。它们看起来像这样:

  • 基的ubuntu
    • 设置一些apt存储库,定义一些用户。
  • 的NodeJS基
    • 安装nodejs和npm。定义一些属性。
  • 我的应用内
    • 我们的应用是nodejs服务器。
    • 该角色在其运行列表中具有nodejs-base角色。

我有一个看起来像这样的节点(刀子输出)

ubuntu:~/chef$ knife node show my-app-node
Node Name:   my-app-node
Environment: development
FQDN:        <amazon>
IP:          <ip>
Run List:    role[base-ubuntu], role[my-app], recipe[my-app::start_apps]
Roles:       base-ubuntu, my-app, nodejs-base
Recipes:     apt, secret_file, splunkstorm, nodejs, nodejs::npm, my-app, my-app::start_apps
Platform:    ubuntu 12.04
Tags:

这清楚地表明该节点确实应用了nodejs-base角色。但是,该角色中存在一个关键属性,该属性在程序运行之前不会进入属性列表。角色如下所示:

cat roles/nodejs-base.json
{
  "name": "nodejs-base",
  "description": "Provides a base role for an application server running nodejs.",
  "default_attributes": {
    "nodejs" : {
      "user" : "ubuntu"
    }
  },
  "override_attributes": {
    "nodejs": {
      "version": "0.10.22",
      "npm": "1.3.14"
    }
  },
  "run_list": [
    "recipe[nodejs]",
    "recipe[nodejs::npm]"
  ]
}

在食谱my-app::default.rb中,当我尝试做这样的事情时:node['nodejs']['user']我得到一个空字符串。在目标节点上运行sudo chef-client会因类似原因而失败。

Chef::Exceptions::Exec
----------------------
group[] (spicoli-app::default line 38) had an error: Chef::Exceptions::Exec: groupadd  returned 2, expected 0

 38:  g = group "#{node['nodejs']['user']}" do
 39:    action :create
 40:  end
 41:  # Explicitly create the user and group during compile phase so we can
 42:  # resolve the home dir afterwards
 43>> g.run_action(:create)

错误输出中的group[]确认我的nodejs用户此时是一个空字符串。

那是什么给出的?是否将角色的属性解析为从另一个角色的运行列表中获取角色的节点?

0 个答案:

没有答案