У меня есть сценарий оболочки для установки nodejs пакетов модуля, которые должны быть, выполняются после того, как все пакеты установлены. Я определил этап 'в последний раз' после того, как Этап [основной] вот, является моим кодом
stage { 'last': }
Stage[main] -> Stage[last]
class npm {
stage => last,
file { '/tmp/nodejs.sh':
source => 'puppet:///modules/npm/nodejs.sh',
ensure => present,
}
exec { 'install web development nodejs packages':
command => '/tmp/nodejs.sh',
user => "root",
require => Package['nodejs', 'npm']
}
}
Однако это возвращает ошибку
==> значение по умолчанию: Ошибка: не Мог проанализировать для производства среды: Синтаксическая ошибка в '=>'; ожидаемый '}' в/tmp/vagrant-puppet-/manifests/init.pp:90 на узле local.d ev
на строку 90 указывают на "этап => в последний раз",
Вы путаете две концепции, которые, к сожалению, имеют очень похожий синтаксис.
class <name> {
# includes of other classes ...
# resource declarations ...
}
# usually
include <name>
# ...but if you need stages
class {
'<name>':
stage => 'last'
}
Последнее известно как объявление класса, подобное ресурсу (и имеет некоторые оговорки ).
Также обратите внимание, что этапы несколько осуждаются в сообществе.
Если вы не используете ресурсы виртуального пакета, вы можете избежать использования стадий.
Package<| |> -> Exec['install web development nodejs packages']
Это устанавливает отношение перед
от всех ресурсов пакета
к вашему exec
].