저는 소프트웨어를 테스트하기 위해 주방장을 사용하고 있습니다. 따라서 상기 소프트웨어의 파일명 및 다운로드 위치는 속성으로서 전달 될 것이다.요리사의 속성을 프로그래밍 방식으로 재정의
테스트 절차의 일부로 운영 팀에서 사용하는 요리사 스크립트 및 요리법을 사용해야합니다. 그들은 환경 적 수준과 default.rb 요리 책 수준에서 문제의 가치를 지니고 있습니다. 그들은 REST API를 통해 요리사 해당 서버를 추가 & & OpenStack은 칼을 통해 VM 설정에 루비 스크립트를 사용 : 이상적으로 파일 이름과 위치는 명령 행 매개 변수로 파이썬 응용 프로그램에 전달 될
Chef::Config.from_file("/root/.chef/knife.rb")
rest = Chef::REST.new(CHEF_API)
newserver=
{
:name => server.hostname,
:chef_type => "node",
:chef_environment => server.environment,
:json_class => "Chef::Node",
:attributes => {
:cobbler_profile => server.profile
},
:overrides => {
},
:defaults => {
},
:run_list => server.roles
}
begin
result = rest.post_rest("/nodes",newserver)
....
하고, 기존 노드 레벨 속성을 설정/재정의하려면 나이프 또는 pychef (또는 루비)를 사용하십시오.
서버를 추가하는 데 사용하는 방법은 다른 유사한 질문에서 본 옵션을 제외합니다. 내가
node = chef.Node('myNode')
node.override['testSoftware']['downloads']['testSoftwareInstaller'] = 'http://location/of/download'
node.save()
그러나 node.override['testSoftware']['downloads']['testSoftwareInstaller']
이후에 원래의 값을 반환 시도 (그리고 원래로 볼 수있다
하지만이 편집기의 사용을 필요로 .. -
나는 knife node edit
을 시도 UI). 새 속성은이 방법으로 만 설정할 수 있지만 기존 항목을 편집/덮어 쓸 수는 없습니다.
나는 environment.json 파일을 동적으로 생성하는 것을 고려하고 있지만, 어떤 작업이 사용하고있는 것에서 벗어나지 않는 것을 선호합니다.
아이디어가 있으십니까?