Puppet은 매니페스트의 변경 사항을 반영하지 않습니다.

Puppet은 매니페스트의 변경 사항을 반영하지 않습니다.

모듈 매니페스트가 있는데 , work.pp. 을 실행하여 확인 하면 사실이 적절한 값을 갖습니다. 그러나 내 파일에는 다음과 같은 조건이 있습니다.has_work/lib/facter/work.rbpuppet agent -tfacter -p has_workwork.pp

if ($has_work)            { $create_file = true }

그런 다음 이를 기반으로 $create_file다음과 같은 내용이 있습니다.

if ($create_file) {
    file {
      "create file":
        path    => "/path/to/file.ini",
        alias   => "/path/to/file.ini",
        ensure  => file,
        owner   => devops,
        mode    => "0644",
    }

그러나 이는 $has_work사실이지만 클라이언트에는 파일이 생성되지 않습니다.

왜 이런 일이 일어나는지 알아내려고 노력 중입니다. 도움을 주시면 감사하겠습니다. 감사해요!

답변1

구문이 올바른지, 잘못 붙여넣었는지 확실하지 않은 경우 개발에 PDK를 사용하는 것이 좋습니다. 따라서 모듈에서 다음을 시도해 보세요 example. 이름을 지정해 보겠습니다.

$ tree example
├── manifests
│   └── init.pp
└── examples
    └── init.pp
$ cat manifests/init.pp
class example {
  if ($create_file) {
    file { "/path/to/file.ini":
      alias   => "/path/to/file.ini",
      ensure  => file,
      owner   => "devops",
      mode    => "0644",
    }
  }
}
$ cat examples/init.pp

include example

다음 명령을 사용하여 코드를 테스트하십시오.

puppet apply examples/init.pp --noop

또한 Puppet 콘솔 UI(Puppet Enterprise)에서 테스트하는 경우 차트를 확인하여 리소스가 관리되고 있는지 확인하세요.

코딩 스타일 관점에서 보면 if clause구현에 따라 관리하는 리소스의 양이 달라지므로 사용하지 않는 것이 좋습니다. 이것이 다음을 위한 것인지 궁금합니다 if.

  • .inivs 관리하기 싫다
  • .ini이 파일은 이미 생성되었으며 수동으로 수정되었을 수 있으므로 이 파일을 변경/생성하고 싶지 않습니다 .

두 번째인 경우에는 다음을 사용하고 싶을 수도 있습니다 file_line(참조문서)

답변2

문제를 해결했는데, 문제는 노드 분류자가 빈 디렉터리를 덤프하고 있다는 것이었습니다. 덤프한 코드를 제거했는데 이제 작동합니다.

관련 정보