![在 Chef 中如何覆盖 node.json 中的默认属性值](https://linux22.com/image/568660/%E5%9C%A8%20Chef%20%E4%B8%AD%E5%A6%82%E4%BD%95%E8%A6%86%E7%9B%96%20node.json%20%E4%B8%AD%E7%9A%84%E9%BB%98%E8%AE%A4%E5%B1%9E%E6%80%A7%E5%80%BC.png)
我正在运行 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