일부 환경 변수를 설정하고 특정 명령을 호출하는 execute
리소스를 생성하려고합니다. 하지만이 execute
리소스는 일종의 "방법"일뿐입니다. 즉 나중에 재사용 할 수있는 기능을 정의해야합니다. 다른 조리법에서이 execute
을 트리거 할 수 있기를 원하며 현재 내가 뭔가 잘못하고 있다고 느낄지라도 ruby_block
을 사용하고 있습니다.주방장은 자원 밖의 자원에 어떻게 알리십니까?
이 내 재사용 가능한 기능입니다 (내 요리 책은 commands
라고합니다) :
# default.rb
execute 'Run command' do
Chef::Log.info("Running command: #{node['task']}")
command node['task']
cwd deploy[:current_path]
environment (node[:task] || {})
action :nothing
not_if node[:task].nil?
end
그리고 이것은 그것을 사용하는 특정 작업 중 하나입니다 : 나는 또한 할 수 있도록하려는
# rake_db_migrate.rb
include_recipe 'commands'
node.set[:task] = 'rake db:migrate'
ruby_block 'Trigger command' do
block {}
notifies :run, 'execute[Run command]', :immediately
end
을 노드에서 속성을 설정하여 위와 동일하지만 쓰기가없는 임의의 작업으로 실행하십시오. node['task']
:
# run.rb
include_recipe 'commands'
ruby_block 'Trigger command' do
block {}
notifies :run, 'execute[Run command]', :immediately
end
본질적으로 default.rb
에 재사용 가능한 기능을 정의한 다음 run.rb
과 rake_db_migrate.rb
과 같은 다른 조리법에서이 기능을 사용할 수 있습니까? 그렇지 않은가요? http://docs.chef.io/definitions.html
는 재사용 가능한 비트를 정의하고 매개 변수로 '작업'을 사용 : 당신은 아마 정의를 사용하려면이 경우
[정의] (http://docs.opscode.com/essentials_cookbook_definitions.html) 또는 [libraries] (http://docs.opscode.com/essentials_cookbook_libraries.html)를 사용하여 재사용 가능한 기능. – StephenKing
정의 또는 LWRP로 마무리하십시오. – sethvargo
끝에 정의를 사용했습니다. 어느 쪽이든 대답을 게시하고 싶다면 올바른 것으로 표시 할 것입니다. – lms