Проект развертывания узла локально на машине ec2

У меня есть машина ec2 Linux-16.04, и на ней установлен Jenkins.

Я хотел бы иметь задание Jenkins по развертыванию моего Node-сервера на той же машине под другим пользователем. но в марионетке 4.x и выше .. он опускается до значения по умолчанию "не знаю" (поэтому оператор сравнения не соответствует) .. Я считаю, что это как-то связано с фактером, возвращающим значение в виде строки, и я знаю puppet 4.x намного строже со строками .. Я пробовал цитировать условные выражения «5», «6» и т. д., но без всякой радости ...

0
задан 6 July 2018 в 00:15
1 ответ

Этот факт является строкой, которую вы можете доказать с помощью:

notice("${type($operatingsystemmajrelease)}")

Что вернет:

Notice: Scope(Class[main]): String

Таким образом, даже если он выглядит числовым, это должно быть:

$version = $operatingsystemmajrelease ? {
  '5'     => 'five',
  '6'     => 'six',
  '7'     => 'seven',
  default => "don't know",
}

Если вы хотите, чтобы это было действительное целое число для целей использования операторов < / > , вы всегда можете сделать:

$version = Integer($operatingsystemmajrelease)
notice("${version} is of type ${type($version)}")

Что даст вам:

Notice: Scope(Class[main]): 7 is of type Integer[7, 7]

и т. Д. однако есть также функция versioncmp () специально для сравнения номеров версий. Есть также более новые структурированные факты, поэтому вы, вероятно, захотите использовать $ fact ['os'] ['release'] ['major'] (который также является строкой).

0
ответ дан 5 December 2019 в 05:40

Теги

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