我有一个案例,我试图在Chef中创建systemd_unit来创建服务。一旦创建了服务(假设它不是最新的),我想启动它,然后只有在刚创建服务时我想调用bash脚本来执行一些初始化在它上面。
我从这开始:
systemd_unit 'mysvc.service' do
content({
.
.
.
})
action [ :create ]
notifies :run, 'bash[mysvc.init]', :delayed
end
bash 'mysvc.init' do
code <<-CODE
.
.
.
CODE
action :nothing
end
systemd_unit 'mysvc.service' do
action [ :enable, :start ]
end
我的期望是,如果:create在systemd_unit上运行,我的bash脚本就会执行。由于bash脚本标记为:nothing,它不会再运行任何时间。
不幸的是,这并不是我得到的行为。实际发生的是,如果执行systemd_unit的:create或[:enable,:start]块,则运行我的bash脚本。如果我已经初始化了我的服务中的数据,尝试重新初始化将失败,这不会起作用。
如何仅在新创建服务时让我的bash脚本运行 ?
答案 0 :(得分:0)
这不是我们支持的事情。 updated?
标志(内部通知功能)有意模糊,对每个资源都意味着不同的东西,但通常在资源采取任何行动时它都会被视为已更新。这看起来好像我们搞砸了systemd_unit
的实现,并且直接使用了资源名称而不是名称属性:(我至少会得到一张票来解决这个问题。