1
PyChef APIを使用して役割を作成しようとしています。私はノードまたはロール(GETメソッド)のリストを正常に取得できますが、ロール(POSTメソッド)を作成しようとしているときに実行時excetionを取得しています。 は、ここに私のコードです:chef.exceptions.ChefServerErrorの取得:シェフでロールを作成中にメソッドが使用できない
import json
import requests
import re
import chef
from chef.exceptions import ChefError, ChefServerNotFoundError
from chef.base import ChefQuery, ChefObject
from chef import Role
pem_file = "path-to-validator.pem/chef-validator.pem"
client_name = "validator"
node_name = "root"
role_url = "ChefServer-URL/roles/"
rolelist =[]
chef_api = chef.ChefAPI(role_url,pem_file,client_name,ssl_verify=False)
create_role = chef.Role.create(name='myrole', api=chef_api ,description='A test role', run_list=['recipe[foo]'],default_attributes={'attr': 'foo'}, override_attributes={'attr': 'bar'})
rolelst = chef.Role.list()
for j in rolelst:
rolelist.append(j)
print rolelist
そして、ここで私が直面していますエラーです:
Traceback (most recent call last):
File "roleapi.py", line 37, in <module>
create_role = chef.Role.create(name='myrole', api=chef_api ,description='A
test role', run_list=['recipe[foo]'],default_attributes={'attr': 'foo'},
override_attributes={'attr': 'bar'})
File "/usr/lib/python2.6/site-packages/chef/base.py", line 99, in create
api.api_request('POST', cls.url, data=obj)
File "/usr/lib/python2.6/site-packages/chef/api.py", line 217, in
api_request
response = self.request(method, path, headers, data)
File "/usr/lib/python2.6/site-packages/chef/api.py", line 207, in request
raise ChefServerError.from_error(response.reason, code=response.status_code)
chef.exceptions.ChefServerError: Method Not Allowed
は、だから私はこのエラーを解決する方法を私に何かを提案してください。前もって感謝します。
バリデータークライアントではなく、ユーザーとそのキーを使用します。その役割は新しいノードを登録することです。ノードとクライアント以外のものを作成する権限はありません。 – Tensibai
@天使:ありがとうございました。私はあなたの提案(バリデータークライアントの代わりにユーザーとそのキーを使用してください)を試しましたが、それでも私は同じエラーが表示されます。 – Suneha
myroleという名前のロールはありません。 (既存のオブジェクトのPOSTは機能しません.PUTを実行する必要があります) – Tensibai