首页 > 解决方案 > 如何根据厨师中的节点角色执行任务

问题描述

我正在尝试执行验证厨师环境和角色的收据:

配方示例:

if (node.chef_environment == "dev" && node.role?('api'))

    bash "Restarting service" do
      code <<-EOF
            #Codeblock
      EOF
    end
end

if (node.chef_environment == "dev" && node.role?('web'))

    bash "Restarting service" do
      code <<-EOF
            #Codeblock
      EOF
    end
end

但是在执行我的代码块时不起作用。

我尝试了条件 "node["roles"].include?("api")" @coderanger 但没有工作。以下是以下调试日志:
2018-05-04T08:50:26+00:00] 调试:从 /etc/chef/chef-cache/cache/cookbooks/service_file/resources/default.rb
[2018 ] 加载说明书 service_file 的资源-05-04T08:50:26+00:00] 调试:将 /etc/chef/chef-cache/cache/cookbooks/service_file/resources/default.rb 的内容加载到资源 service_file (来自说明书 service_file 的自定义资源 service_file)
[ 2018-05-04T08:50:26+00:00] 调试:通过 include_recipe 加载配方 service_file::service_restart
[2018-05-04T08:50:26+00:00] 调试:在说明书 service_file 中找到配方 service_restart_plugin 正在聚合
0 个资源
[2018-05-04T08:50:26+00:00] 调试:聚合节点 ip-xx。
[2018-05-04T08:50:26+00:00] 警告:跳过最终节点保存,因为给出了 override_runlist
[2018-05-04T08:50:26+00:00] 信息:Chef Run 在 0.161187151 秒内完成
[2018 -05-04T08:50:26+00:00] 信息:跳过从缓存中删除未使用的文件

运行处理程序:
[2018-05-04T08:50:26+00:00] 信息:运行报告处理程序
运行处理程序完成

标签: chef-infra

解决方案


推荐阅读