gpt4 book ai didi

chef-infra - 在 Chef 中,如何通知资源外的资源?

转载 作者:行者123 更新时间:2023-12-05 01:04:51 32 4
gpt4 key购买 nike

我想创建一个execute 资源来设置一些环境变量并调用某个命令。但是这个 execute 资源应该只是一种“方法”,即定义一些我以后可以重用的功能。我希望能够从其他 Recipe 触发此 execute,目前我正在使用 ruby_block,尽管我觉得我做错了什么。 (我的 Recipe 叫做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.rbrake_db_migrate .rb,这是正确的方法还是我遗漏了什么?

最佳答案

在这种情况下,您可能想使用一个定义:http://docs.chef.io/definitions.html

定义可重用位并使用“任务”作为参数。

关于chef-infra - 在 Chef 中,如何通知资源外的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684848/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com