
При выполнении puppet apply возникает ошибка:
Warning: Scope(Mod::Cl[title]): Can't load '/tmp/file.yaml' File does not exist!
Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Operator '[]' is not applicable to an Undef Value.
Я указываю, что loadyaml — это функция модуля stdlib
Однако я хочу выполнить файл resource перед определением ресурса
Кто-нибудь может мне помочь?
класс mod::princ ( файл { '/tmp/file.yaml': обеспечить => файл, владелец => 'root', группа => 'корень', режим => '0644', источник => "puppet:///modules/othermod/file.yaml", до => Mod::Cl["title"], }-> Mod::Cl{ "заголовок": tmp_file => "/tmp/file.yaml", } } определить mod::cl ( Строка $tmp_file, ){ $tmp = loadyaml("$tmp_file") $tmp[var].each |Целое число $i, Хэш[Строка,Строка] $var| { $mark=$var['Марк'] } }
решение1
Из моего опыта работы с puppet, такие вещи, как "before"/"require" и sequencing(->) не очень хорошо работают вместе. Попробуйте удалить sequencing, так как, вероятно, файл не создается...
решение2
Как указано в вызове функции puppetсправочная страницафункции вызываются во время компиляции, поэтому порядок не имеет значения, функция будет вызвана до выполнения модуля.