Puppet 앱을 실행하면 오류가 발생합니다.
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.
stdlib 모듈의 함수로 loadyaml을 지정했습니다.
하지만 정의하기 전에 파일 리소스를 실행하고 싶습니다.
누구든지 나를 도와줄 수 있나요?
클래스 모드::프린스( 파일 { '/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
Puppet에 대한 내 경험에 따르면 "이전"/"필요" 및 정렬(->)과 같은 작업은 함께 잘 작동하지 않습니다. 파일이 생성되지 않을 수 있으므로 정렬을 제거해 보세요...
답변2
꼭두각시 함수 호출에 지정된 대로참고 페이지, 함수는 컴파일 타임에 호출되므로 순서에 관계없이 모듈이 실행되기 전에 함수가 호출됩니다.