小编Mat*_*son的帖子

在 Chef (solo) 食谱中循环的正确方法是什么?

有人可以向我解释厨师是如何工作的吗?这是一个相当广泛的问题,所以为了缩小范围,我有一个非常简单的方法,它循环遍历用户列表并创建每个用户(如果它们尚不存在)。这是行不通的。

据我所知,循环似​​乎正如我所期望的那样发生。一旦循环完成了我创建每个用户的 bash 命令,循环中的每次迭代都会执行一次。然而,当 bash 命令被执行时,它们似乎只有来自第一次循环迭代的用户值。

编写类似于此示例的循环变量数据的配方的正确方法是什么?

这是食谱:

node[:users].each do |user|
  puts "in loop for #{user['username']}"
  bash "create_user" do
    user "root"
    code do
      puts "running 'useradd' for #{user['username']}"
      "useradd #{user['username']}"
    end
    not_if do
      puts "checking /etc/passwd for #{user['username']}"
      "cat /etc/passwd | grep #{user['username']}"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我正在使用具有以下设置的 Vagrant 对此进行测试:

Vagrant::Config.run do |config|
  config.vm.box = "precise32"
  config.vm.box_url = "http://files.vagrantup.com/precise32.box"
  config.vm.provision :chef_solo do |chef|
    chef.add_recipe "sample"
    chef.json = {
      :users => [
        {:username => 'testA'},
        {:username => 'testB'},
        {:username => 'testC'},
        {:username …
Run Code Online (Sandbox Code Playgroud)

chef chef-solo

8
推荐指数
2
解决办法
2万
查看次数

标签 统计

chef ×1

chef-solo ×1