Tag: 厨师食谱

Chef条件资源参数

我正在通过Chef创建一个用户。 他的属性存储在数据包中: { “id”: “developer”, “home”: “/home/developer”, “shell”: “/bin/zsh”, “password”: “s3cr3t” } 食谱是: developer = data_bag_item(‘users’, ‘developer’) user developer[‘id’] do action :create supports :manage_home => true home developer[‘home’] comment developer[‘comment’] shell developer[‘shell’] password developer[‘password’] end 问题是如果节点上没有安装zsh ,我就无法以developer身份登录。 所以,我想有条件地为user资源应用参数,例如: user developer[‘id’] do action :create supports :manage_home => true home developer[‘home’] comment developer[‘comment’] if installed?(developer[‘shell’]) shell developer[‘shell’] […]

如何编写扩展现有提供程序的Chef提供程序?

Cookbook A提供了一个LWRP,我希望在cookbook B中使用LWRP或HWRP进行扩展,这样我就可以执行以下操作,其中provider_b将使用provider_b的现有代码/资源并接受可用于其的其他属性。自己的行动: provider_a “A” do attr_from_a :value end provider_b “B” do attr_from_a :value attr_from_b :value end 这是可能的,如果我想避免编辑食谱A,它仍然可能吗?

Windows配方中的厨师NOT_IF和ONLY_IFvalidation问题

我正在运行这个简单的配方块来在IIS中创建一个Web应用程序 powershell_script “create_site_my_site” do code “New-webapppool -name ‘My_Web_App’; New-Website -Name ‘My_Web_App’ -applicationpool ‘My_Web_App’ -Port ’80’ -IPAddress * -PhysicalPath ‘c:\webs\My_Web_App’ ” action :run not_if “get-website | where-object { $_.name -eq ‘My_Web_App’ }” end 这里的问题是NOT_IF部分它总是真的 PS C:\Users\carlos> PS C:\Users\carlos> get-website | where-object { $_.name -eq ‘asdfasdfasdf’ } PS C:\Users\carlos> echo $lastexitcode 1 PS C:\Users\carlos> get-website | where-object […]

如何使用Ruby块在Chef recipe中分配变量

我正在尝试在Chef配方中动态执行Ruby逻辑,并相信实现这一目标的最佳方法是使用块。 我无法将块内分配的变量传输到主厨配方的主代码中。 这是我试过的: ruby_block “Create list” do block do to_use ||= [] node[‘hosts’].each do |host| system( “#{path}/command –all” \ ” | awk ‘{print $2; print $3}'” \ ” | grep #{host} > /dev/null” ) unless $? == 0 to_use << host end end node['hosts'] = to_use.join(',') end action :create end execute "Enable on hosts" do […]

Ruby代码块和Chef

我是Ruby和Chef的新手。 我一直试图绕过语法并做一些研究,但我相信大家都知道,除非你知道术语,否则很难找到你想要的东西。 我已经阅读了Ruby代码块,但是Chef代码块仍然让我感到困惑。 我看到这样的事情: log “a debug string” do level :debug end 这会在日志中添加“调试字符串”。 从我所看到的情况来看,在我看来它应该表示为: log do |message| #some logic end Chef将这些视为资源。 有人可以帮助解释语法差异并给我一些术语,我可以从中开始教育自己吗?