我是厨师的新手并且正在努力解决这个问题 - 我不确定它是否可能,如果可能,如何实现它。到目前为止,谷歌已经失败了。
我有一个厨师客户和厨师服务员,我上传食谱在我的客户端上运行。我通过在Chef客户端计算机上运行chef-client来触发代码。
我尝试做的是通过ssh连接到其他几个盒子,然后停止服务,清除目录并重启服务。
工作时,我将定位Solr服务
我的基本测试代码如下:
ruby_block 'do something' do
block do
Chef::Log.info('Do Something')
Chef::Resource::Notification.new('stop', :run, self)
end
end
#define the service - does nothing
service 'atd' do
action :nothing
end
#do something that triggers
execute 'start' do
command 'pwd'
Chef::Log.info('triggers start')
action :nothing
notifies :start, run_context.resource_collection.find(:service => 'atd')
end
execute 'stop' do
# some stuff
# on success...
command 'pwd'
Chef::Log.info('triggers restart')
notifies :stop, run_context.resource_collection.find(:service => 'atd'), :immediately
notifies :run, 'execute[start]'
end
在ruby块中我计划迭代我拥有的机器列表并对它们进行ssh。那么可以在这些机器上运行其余的代码吗?
感谢您提供任何帮助/建议。