厨师 - 如果elsif声明

时间:2018-03-09 15:56:58

标签: ruby chef

尝试在Chef中做一些相当简单的事情,但似乎无法做对。我知道使用IIS菜谱会更容易,但长话短说它目前还没有。

尝试从属性文件中运行if elsif,如下所示。但if node[:domain]部分似乎无法运行,它只是忽略它或它没有被验证,我无法说明。默认部分可以使用

      if node[:platform] == 'windows'

    default['WebSiteCreation']['Dir'] = 'D:\Websites'
    default['WebSiteCreation']['AppPool'] = 'MySite'
    end

if node[:domain] == 'Dev.com'

    default['WebSiteCreation']['HostHeader'] = 'Dev'

elsif node[:domain] == 'Test.com'

    default['WebSiteCreation']['HostHeader'] = 'Test'

elsif node[:domain] == 'Preprod.com'

    default['WebSiteCreation']['HostHeader'] = 'PreProd'

elsif node[:domain] == 'prod.com'

    default['WebSiteCreation']['HostHeader'] = 'Prod'

    else
end

但是,当我调用任何引用的东西时,如果节点部分作为配方空白中的变量被传递,那么它就无法定义。

我已经尝试将代码移到配方中,没有效果。

我做错了什么......

2 个答案:

答案 0 :(得分:1)

如果你有一个厨师节点来测试运行ohai,grep for domain并检查它返回的值。基于此更新您的比较。此外,最好使用case语句而不是if if else阻塞,这将使代码看起来整洁

答案 1 :(得分:0)

这段代码很好,来自Ruby和Chef PoV,很可能是你的域名不是你想象的那样。