노드의 기존 모듈에서 파일 정의를 확장하는 방법은 무엇입니까?

노드의 기존 모듈에서 파일 정의를 확장하는 방법은 무엇입니까?

나는 mysql.conf 파일을 정의하지만 그 내용은 정의하지 않는 이전 버전의 example42 mysql 모듈을 사용하고 있습니다. Mmy 목표는 mysql 모듈을 포함하고 노드에 콘텐츠 정의를 추가하는 것입니다.

class mysql {
    ...
    file { "mysql.conf":
        path => "${mysql::params::configfile}",
        mode => "${mysql::params::configfile_mode}",
        owner => "${mysql::params::configfile_owner}",
        group => "${mysql::params::configfile_group}",
        ensure => present,
        require => Package["mysql"],
        notify => Service["mysql"],
    }
    ...
}


node xyz
{
    include mysql
    File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")}
}

위의 코드는 "하위 클래스만 매개변수를 재정의할 수 있습니다"를 생성합니다.

기존 파일 정의에 콘텐츠 정의를 추가하는 올바른 방법은 무엇입니까?

답변1

사용자원 수집가, 설명여기. 리소스 수집기는 하위 클래스에 있지 않더라도 리소스 매개변수를 재정의할 수 있습니다. 또한 제목뿐만 아니라 태그나 기타 매개변수를 사용하여 리소스를 수집할 수 있어 더욱 다양합니다.

node xyz
{
    include mysql
    File <| title == "mysql.conf" |> { 
        content => template("mymodule/mysql.conf.erb"),
    }
}

편집: 서브클래스 사용

또 다른 옵션은 하위 클래스를 선언하고 이를 노드 정의에 포함하는 것입니다.

class mysql_custom inherits mysql {
    File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")}
}

node xyz {
    include mysql_custom
}

관련 정보