我使用pychef在Chef服务器上运行命令,基本上是成功的。Pychef目前不支持cookbook(上传、下载等),但它在Chef服务器restapi中公开,Pychef有一些函数可以让您轻松地访问Chef API(将auth凭证头和其他东西组合在一起)。在
因此,我在服务器上有一个名为my_environment
的环境,我正在尝试在环境文件中更新一个cookbook版本,即"some_cookbook": "= 1.2.3"
,因此我的整个环境文件将如下所示:
{
"json_class": "Chef::Environment",
"chef_type": "environment",
"cookbook_versions": {
"some_cookbook": "= 1.2.3"
},
"description": "example environment file",
"name": "my_environment"
}
因此,我创建chef api对象如下:
^{pr2}$ChefApi类有request()
函数,我这样使用它:
chef_api.request("PUT", "/environments/my_environment", data=json.dumps(environment_file_dict))
# environment_file_dict is the dictionary shown above.
但是,我收到一条错误消息,说:chef.exceptions.ChefServerError: The '_default' environment cannot be modified.
。在
这是令人困惑的,因为给定了我的端点,我真的不希望它试图改变_default
环境。我试着通过Chef和刀子代码来寻找问题的根源,但是没有结果,Chef网站上的文档似乎也没有提供任何线索。更奇怪的是,除了使用"GET"
并完美地下拉环境文件之外,我可以做同样的事情。有什么想法吗?在
经过进一步的调查,我意识到我对pychef和我的问题的看法是错误的。这是一个没有充分阅读文档的情况。虽然pychef不上传/下载烹饪书,但它可以轻松地处理chef环境:https://pychef.readthedocs.org/en/latest/api.html#environments。我所做的是用与上面相同的方式创建了一个chef api:
然后使用Environment对象更新现有环境:
^{pr2}$但是,我仍然无法解释错误“the''u default'environment cannot modified”(无法修改“\u default”环境)的错误。在
相关问题 更多 >
编程相关推荐