这是我下载的食谱: https://github.com/edelight/chef-mongodb
我安装了Chef服务器,Chef工作站,并准备好一个testnode来自举。
我创建的角色:
$ knife role create mongodb_standalone_testproj
JSON格式:
{
"name": "mongodb_standalone_testproj",
"description": "Deploy MongoDB standalone with override attributes",
"json_class": "Chef::Role",
"default_attributes": {
},
"override_attributes": {
"mongodb::default": {
"port": "27060",
"dbpath": "/data/"
}
},
"chef_type": "role",
"run_list": [
"recipe[mongodb::default]"
],
"env_run_lists": {
}
}
但是,当我使用此角色引导testnode时:
knife bootstrap testnode --sudo -x <omit> -P <omit> -N testnode -r 'role[mongodb_standalone_testproj]'
在此处登录:http://pastebin.com/DWxY3vNV
问题是,MongoDB安装并在testnode上运行但是覆盖属性(port和dbpath)没有应用,有任何线索吗?
答案 0 :(得分:56)
这些属性不正确:
"override_attributes": {
"mongodb::default": {
"port": "27060",
"dbpath": "/data/"
}
},
我愿意打赌你想要:
"override_attributes": {
"mongodb": {
"config": {
"port": "27060",
"dbpath": "/data/"
}
}
},
答案 1 :(得分:4)
我认为你只是覆盖了错误的属性(而不是完整的属性)。查看mongodb cookbook的默认值,列出:
default['mongodb']['config']['port'] = 27017
但你使用的是等效的:
['mongodb']['port']