Назад | Перейти на главную страницу

Как объединить переменные массива марионеток

Учитывая следующий манифест марионетки, как я могу объединить / объединить два массива, чтобы команда выполнялась с обоими a=b и b=c ?

Cron{
  environment => ["a=b"]
}

class a{
  cron{'test':
    command     => "/usr/bin/true",
    user        => "francois",
    environment => ["b=c"],
  }
}

include a

Моя запись в crontab выглядит так:

# Puppet Name: test
b=c
* * * * * /usr/bin/true

Насколько я помню, вы не можете сделать это напрямую. Что-то вроде этого может сработать:

$default_env = ["a=b"]

Cron {
  environment => $default_env
}

class a {
  $additional_env = split(inline_template("<%= (default_env).join(',') %>"),',')

  cron {"test":
    command => "true",
    user => "me",
    environment => $additional_env
  }
}

include a

(шаблон split / inline_template основан на чем-то из http://www.crobak.org/2011/02/two-puppet-tricks-combining-arrays-and-local-tests/ )