꼭두각시, 두 개의 종속 파일 리소스를 관리하시겠습니까?

꼭두각시, 두 개의 종속 파일 리소스를 관리하시겠습니까?

꼭두각시로 관리되는 두 개의 리소스가 서로 의존하고(하나는 다른 하나의 부모) 둘 다 absent. 아래 테스트 케이스. 디렉토리는 아직 존재하지 않지만 puppet은 거기에 파일을 생성하는 것에 대해 불평합니다. 이 목록을 수정하는 방법은 무엇입니까?

$ find . -type f
./modules/test/manifests/init.pp
./modules/test/files/b/x
./modules/test/files/b/z
./modules/test/files/b/y
./manifests/site.pp
./test.pp
$ cat manifests/site.pp 
## site.pp

node default {
    include test
}
$ cat modules/test/manifests/init.pp 
## init.pp

class test {
    file { 'dir1':
        ensure  => absent,
        path    => '/tmp/a',
        before  => File['dir2'],
    }

    file { 'dir2':
        ensure  => absent,
        path    => '/tmp/a/b',
        source  => 'puppet:///modules/test/b',
        force   => true,
        purge   => true,
        recurse => true,

    }
}
$ puppet apply --modulepath ./modules manifests/site.pp
Notice: Compiled catalog for localhost in environment production in 0.11 seconds
Error: Could not set 'file' on ensure: cannot generate tempfile `/tmp/a/b/z20140523-14751-1qpqnds-9'
Error: Could not set 'file' on ensure: cannot generate tempfile `/tmp/a/b/z20140523-14751-1qpqnds-9'
Wrapped exception:
cannot generate tempfile `/tmp/a/b/z20140523-14751-1qpqnds-9'
Error: /Stage[main]/Test/File[/tmp/a/b/z]/ensure: change from absent to file failed: Could not set 'file' on ensure: cannot generate tempfile `/tmp/a/b/z20140523-14751-1qpqnds-9'
Error: Could not set 'file' on ensure: cannot generate tempfile `/tmp/a/b/y20140523-14751-1bxpkko-9'
Error: Could not set 'file' on ensure: cannot generate tempfile `/tmp/a/b/y20140523-14751-1bxpkko-9'
Wrapped exception:
cannot generate tempfile `/tmp/a/b/y20140523-14751-1bxpkko-9'
Error: /Stage[main]/Test/File[/tmp/a/b/y]/ensure: change from absent to file failed: Could not set 'file' on ensure: cannot generate tempfile `/tmp/a/b/y20140523-14751-1bxpkko-9'
Error: Could not set 'file' on ensure: cannot generate tempfile `/tmp/a/b/x20140523-14751-1u3y3dl-9'
Error: Could not set 'file' on ensure: cannot generate tempfile `/tmp/a/b/x20140523-14751-1u3y3dl-9'
Wrapped exception:
cannot generate tempfile `/tmp/a/b/x20140523-14751-1u3y3dl-9'
Error: /Stage[main]/Test/File[/tmp/a/b/x]/ensure: change from absent to file failed: Could not set 'file' on ensure: cannot generate tempfile `/tmp/a/b/x20140523-14751-1u3y3dl-9'
Notice: Finished catalog run in 0.14 seconds

편집하다:

전체 내용:

## init.pp

class test {

    $is_master  = false

    if $is_master {
        $file_ensure        = present
        $directory_ensure   = directory
    } else {
        $file_ensure        = absent
        $directory_ensure   = absent
    }

    file { 'dir1':
        ensure  => $directory_ensure,
        path    => '/tmp/a',
        before  => File['dir2'],
    }

    file { 'dir2':
        ensure  => $directory_ensure,
        path    => '/tmp/a/b',
        source  => 'puppet:///modules/test/b',
        force   => true,
        purge   => true,
        recurse => true,
    }
}

dir1은 마스터에서 실패하기 때문에 제거할 수 없으며 마스터와 슬레이브 모두에서 작동하도록 해야 합니다.

답변1

File['dir2']리소스를 완전히 삭제 하고 다음 File['dir1']과 같이 수정합니다.

file { 'dir1':
    ensure  => absent,
    path    => '/tmp/a',
    recurse => true,
    force   => true,
}

/tmp/a귀하의 코드를 사용하여 삭제하기 전에 을(를) 제거 하려고 합니다 /tmp/a/b. /tmp/a먼저 삭제 하면 /tmp/a/b전혀 존재하지 않습니다. 당신은 역순을 원합니다.

그러나 이것은 필요하지도 않습니다. 삭제하려는 경우 /tmp/a리소스 정의를 생성하여 그 안에 있는 내용을 삭제할 이유가 없습니다.

관련 정보