Puppet: 사용자 유형의 홈 관리는 사용자가 존재하지 않는 경우에만 작동합니다.

Puppet: 사용자 유형의 홈 관리는 사용자가 존재하지 않는 경우에만 작동합니다.

여기서 설명을 찾고 있습니다. 그것은 보인다관리 홈의 속성사용자정의된 유형은 사용자가 존재하지 않는 경우에만 작동합니다. 이 DSL을 살펴보십시오.

user { 'artifactory':
        ensure     => 'present',
        home       => '/home/artifactory',
        managehome => true,
}

file { '/home/artifactory/data':
        ensure  => link,
        target  => '/var/lib',
        require => User['artifactory'],
}

처음 실행하면 제대로 작동하지만, 삭제하면인공물사용자의 홈 디렉토리를 다시 실행한 다음 puppet barfs를 실행하세요.

오류: 확인 시 '링크'를 설정할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

내 첫 번째 생각은정말? 다음을 살펴보세요.선적 서류 비치

사용자 관리 시 홈디렉토리를 관리할지 여부입니다. => 존재하는지 확인하면 홈 디렉토리가 생성됩니다.

사용자를 삭제하고 다시 시도하면 작동합니다. 그렇다면 이것은 의도된 것입니까, 아니면 버그입니까? 제가 보기에는 섬세한 것 같습니다.

답변1

런타임 관점에서 Puppet은 시스템의 사용자 상태를 확인하고 이를 매니페스트와 비교합니다. 사용자가 시스템에 없으면 puppet은 적절한 useradd명령을 실행하여 사용자를 생성합니다. 사용자가 존재하지 않아야 하는데 존재한다면 적절한 userdel명령을 실행합니다. 그룹 멤버십, uid, 이름 등과 같은 사용자의 일부 속성이 변경된 경우 적절한 gpasswd또는 usermod명령을 실행합니다.

불행하게도 사용자 유형에 대한 문서는 가장 명확하지 않습니다. 매개 변수는 , 또는 명령 managehome에 대한 옵션이므로 해당 디렉토리에 대한 설명을 많이 작성하지 않습니다 . 따라서 홈 디렉터리의 위치를 ​​설정 및 변경하면 생성되고, 사용자를 삭제하면 삭제되며, 사용자를 추가하면 생성됩니다. 그러나 디렉토리가 항상 존재하는지 확인하지는 않습니다.useraddusermoduserdelmanagehome => true

이것이 필요한 경우 파일 형식을 만들고 적절한 요구 사항을 설정하는 것이 좋습니다. 이 같은:

user { 'artifactory':
    ensure     => 'present',
    home       => '/home/artifactory',
    managehome => true,
}

file { 
  '/home/artifactory/data':
    ensure  => link,
    target  => '/var/lib',
    require => [ User['artifactory'], File['artifactoryhomedir'] ]; 
  '/home/artifactory':
    ensure => directory,
    alias => 'artifactoryhomedir',
    require => User['artifactory'];
}

답변2

그것은알려진 문제. 계획된 해결 방법은 현재 동작을 유지하되 이름을 바꾸는 것입니다.관리 홈에게집 만들기더 명확하게하기 위해.

관련 정보