2012-05-14 1 views
3

새로운 인형극 사용자, 이름 공간 등에서 머리를 감싸려고합니다.인형극 : 네임 스페이스가 가상 리소스, 클래스 및 정의와 어떻게 작동합니까?

저는 현재 user이라는 모듈을 만들고 있습니다. 그것은 클래스와 unixuser.ppunixgroup.ppunixgroup 클래스를 가지고 있습니다. 내 질문을 사용자 생성으로 제한 할 것입니다.

init.pp는 현재 포함 : 만 가상 자원을 정의 할

class user { 
    class {'user::unixuser': } 
    class {'user::unixgroup': } 

    # Create groups before creating users 
    Class['user::unixgroup'] -> ['user::unixuser'] 
} 

unixuser.pp에서와 unixgroup.pp. 이 작업을 수행하는 함수는 가독성을 위해 functions.pp이어야합니다.

질문 1 : functions.pp에는 정의 만 포함되어 있거나 정의가 클래스 안에 있어야합니까? 그래서 코드에서 functions.pp이 포함되어 있어야합니다

class user::functions { 
    define login ($uid, $gid) { 
    user { $title: 
     ensure => present, 
     uid  => $uid, 
     gid  => $gid, 
    } 
    } 
} 

또는 define login 사용자 :: 기능 클래스에 있어야하지 않겠습니까? 그렇다면 define 행이 define user::login이나 다른 항목이되어야합니까? 이 모든 것이 완료되면

class user::unixuser { 
    @something { 'admin': 
    uid => 1000, 
    gid => 1000, 
    } 
} 

그때 내가 realize User::Something['admin'] 같은 뭔가 nodes.pp에서 사용자를 realize합니다 : 더 나아가

, unixuser.pp는 다음 (불완전) 연 비슷한 포함됩니다.

질문 2 : user::unixuser 클래스는 login 기능을 어떻게 인식해야합니까? 이 작업은 class user::unixuser inherits user::functions 일 수 있습니까? 아니면 include user::functions 또는 class {'user::functions': }이되어야합니까 ...?

질문 3 : 질문 2를 바탕으로 user::unixuser 클래스가 functions.pp으로 활약했을 때 @something 자리에 오는 것은 무엇입니까?

나는 능력을 최대한 발휘하려고 노력했지만 아직 혼란 스러울 정도라면 사과하겠습니다. :)

답변

1

우선 사용자는 그룹이 자동으로 필요하지 않은 그룹에 할당 된, 그래서 당신은 functions.pp 잘 보이는 다음, :

# Create groups before creating users 
    Class['user::unixgroup'] -> ['user::unixuser'] 

가 초기화에 다음을 시도 할 필요가 없습니다합니다. 쪽 :

class user { 
    include user::functions 
    include user::unixgroup 
    include user::unixuser 
} 

및 unixuser.pp :

class user::unixuser { 
    login { 'admin': 
    uid => 1000, 
    gid => 1000, 
    } 
    ... 
}