марионеточная синтаксическая ошибка этапа

У меня есть сценарий оболочки для установки 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 указывают на "этап => в последний раз",

0
задан 27 September 2014 в 02:54
1 ответ

Вы путаете две концепции, которые, к сожалению, имеют очень похожий синтаксис.

Определение класса

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 ].

0
ответ дан 5 December 2019 в 13:16

Теги

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