
꼭두각시 적용을 하면 다음과 같은 오류가 발생합니다.
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 모듈의 함수임을 지정합니다.
그런데 리소스를 정의하기 전에 파일 리소스를 실행하고 싶습니다.
누군가 나를 도와줄 수 있나요?
클래스 모드::프린스( 파일 { '/tmp/file.yaml': 보장 => 파일, 소유자 => '루트', 그룹 => '루트', 모드 => '0644', 소스 => "puppet:///modules/othermod/file.yaml", 이전 => Mod::Cl["제목"], }-> Mod::Cl{ "제목" : tmp_file => "/tmp/file.yaml", } } mod::cl 정의( 문자열 $tmp_file, ){ $tmp = loadyaml("$tmp_file") $tmp[var].each |정수 $i, Hash[String,String] $var| { $mark=$var['마크'] } }
답변1
내 경험에 따르면 "이전"/"필요" 및 순서 지정(->)과 같은 작업은 함께 잘 작동하지 않습니다. 파일이 생성되지 않을 수 있으므로 순서를 제거해 보십시오...
답변2
꼭두각시 함수 호출에 지정된 대로참조 페이지, 함수는 컴파일 타임에 호출되므로 순서는 중요하지 않으며 모듈이 실행되기 전에 함수가 호출됩니다.