2017-03-23 3 views
0

私は、Puppetのクラス継承を使用しようとしています。 fooという名前の基本クラスと、という名前の継承されたクラスがあります。 fileまたはpackageのリソースをオーバーライドすると、正常に動作し、正常に動作します。しかし同時に、私はsudoを設定するためのカスタムモジュールを使用しています。継承を使用する場合のPuppetクラスのオーバーライド

sudoクラスを内部クラスバーからオーバーライドしようとすると問題が発生します。次のように人形のクラスは、次のとおりです。

class foo { 
    $nrpe_plugin_pkgs = [ .... ] 

    service { 'nrpe service': 
    .. 
    } 

    package { $nrpe_plugin_pkgs: 
    .. 
    } 

    file { '/etc/nagios/nrpe.cfg': 
    .. 
    } 

    file { '/etc/resolv.conf': 
    .. 
    } 

    class { 'sudo': 
    purge    => true, 
    config_file_replace => true, 
    } 

    sudo::conf { 'sudo_conf': 
    priority => 10, 
    content => [ 
     '%gr1 ALL=(userfoo) NOPASSWD: ALL', 
     '%gr1 ALL=(root) NOPASSWD: /usr/bin/wbinfo *', 
    ] 
    } 
} 


class bar inherits foo { 
    File['/etc/resolv.conf'] { 
    .. 
    } 

    sudo::conf { 'sudo_conf': 
    priority => 10, 
    content => [ 
     '%gr2  ALL=NOPASSWD:/bin/chown userbar\:gr2 /dirbar/*', 
     '%gr2  ALL=NOPASSWD:/bin/chown -R userbar\:gr2 /dirbar/*', 
     '%gr2  ALL=NOPASSWD:/bin/chmod * /dirbar/*', 
    ] 
    } 
} 

は、私はちょうどのみのresolv.confsudoの設定をカスタマイズしたいのですが、次のように私はエラーを取得しています:

Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Resource Statement, Duplicate declaration: Sudo::Conf[sudo_conf] is already declared in file /etc/puppetlabs/code/environments/foobar_servers/manifests/foobar.pp:80; cannot redeclare at /etc/puppetlabs/code/environments/foobar_servers/manifests/foobar.pp:335 at /etc/puppetlabs/code/environments/foobar_servers/manifests/foobar.pp:335:3 on node foobartest01

の/ etc/sudoers.d/10_sudo_confファイルが作成される予定です。どうすればそれを達成できますか?

使用方法:パペット4.9コミュニティバージョン。

助けてください。あなたが使用しているので、resolv.confのオーバーライドが、ここで働く

答えて

2

the correct syntax

class bar inherits foo { 
    File['/etc/resolv.conf'] { 
    .. 
    } 

しかし、それが失敗したので、あなたが上書きしようとする次の行の構文は、異なります。

sudo::conf { 'sudo_conf': 

これはto override an existing resourceではなく、declare a new resource(なぜ重複エラーが発生するのか)の構文です。それは以下のようになります。

Sudo::Conf['sudo_conf'] { 
    priority => 10, 
    content => [ 
    '%gr2  ALL=NOPASSWD:/bin/chown userbar\:gr2 /dirbar/*', 
    '%gr2  ALL=NOPASSWD:/bin/chown -R userbar\:gr2 /dirbar/*', 
    '%gr2  ALL=NOPASSWD:/bin/chmod * /dirbar/*', 
    ] 
} 
+0

ありがとうございました。これは完璧に動作します。 – Kadir

関連する問題