在 Chef 中如何覆盖 node.json 中的默认属性值

在 Chef 中如何覆盖 node.json 中的默认属性值

我正在运行 chef-solo,chef-solo -c solo.rb -j node.json -ldebug但失败了,因为 nginx cookbook/recipe 引用了我没有的用户“www-data”。我可以更改 node.json 文件中的值吗?我的 node.json 如下所示:

{
  "nginx": {
    "user": "my_username"
  },
  "run_list": [
    "recipe[nginx]",
    "recipe[mysql::server]"
  ]
}

我的问题是Opscode nginx 配方似乎忽略了这个设置。

答案1

是的:-)

www-data只是 Debian(以及类似 Debian 的系统)中用于运行 Web 服务器的默认用户。将其更改为其他用户root即可。对于大多数没有 的发行版,www-data没有用户httpd,否则您可以nobody

如果您使用的是 Windows,请使用适当的用户。

答案2

使用 chef-{client,solo} 选项传递的“json_attribs”文件-j旨在代表“默认”节点对象,类似于您knife node create FOO在 Chef Server 上执行创建新的空白节点时发生的情况。要覆盖说明书中的属性,您应该使用角色应用它们。

Chef Solo 可以使用角色。您必须role_path在配置文件中指定。

http://wiki.opscode.com/display/chef/Chef+Solo#ChefSolo-Roles

相关内容