марионеточные и явные циклы

Нет это не корректно, что касается меня. Какова была бы Ваша причина того, чтобы иметь CNAME?

2
задан 12 February 2013 в 20:49
1 ответ

Невозможно создать цикл в традиционном смысле слова, но вы, вероятно, все равно сможете достичь того, чего собираетесь. Массив, когда он используется в качестве заголовка ресурса, будет автоматически расширен.

Итак, в простом случае у вас будет просто массив типа

$packages = [ 'httpd', 'mysql', 'puppet' ]

Затем используйте его в ресурсе, например:

package { $packages:
  ensure => installed,
}

Для более сложных случаях вы можете использовать определенный тип. Я не совсем уверен, куда вы идете со своим примером - дайте мне знать, если это не имеет смысла для вашего варианта использования.

Скажем, например, вы отправляете массив [ 'testserver', 'floor1', 'floor3'] и что вам нужно сделать с этим списком, так это создать файл по адресу / etc / foo / testserver (для первого элемента) , затем запустите exec , чтобы что-то настроить, когда это будет сделано.

define datafiles {
  file { "/etc/foo/${title}":
    ensure  => present,
    content => $title,
  }
  exec { "setup-${title}":
    command => "/usr/local/bin/something -a /etc/foo/${title}",
    require => File["/etc/foo/${title}"],
  }
}

Затем использование массива в заголовке определенного типа расширит его, создав ресурсы файла и exec для каждого члена массива.

$names = [ 'testserver', 'floor1', 'floor3' ]
datafiles { $names: }
8
ответ дан 3 December 2019 в 08:54

Теги

Похожие вопросы