我写了一本厨师食谱,用来配置公司的服务器。
其中一个任务是安装一个名为" pssh“的"apt_package”,另一个任务是在pssh包安装之后运行。
实际上,第二个任务是在包安装之前运行,然后主厨-客户端运行失败,说明相关文件丢失,因为pssh包安装创建了它。
我正在尝试将第二个任务配置为只在包安装任务完成后才运行。
以下是相关代码:
apt_package 'pssh' do
action :install
subscribes :run, 'file[/usr/bin/pssh]', :before
end
file '/usr/bin/pssh' do
owner 'root'
group 'root'
mode 0755
content ::File.open("/usr/bin/parallel-ssh").read
action :create
end我试过使用“通知”和“订阅”,但没有结果,第二个任务总是先运行,导致主厨-客户端运行失败。
如何在任务之间建立依赖关系?
发布于 2018-01-08 12:12:41
问题是你写东西的方式,文件读取发生在编译时。请查看https://coderanger.net/two-pass以获得修复它的详细信息,但简要地说,您需要在文件读取时使用lazy{}助手。
https://serverfault.com/questions/890728
复制相似问题