【问题标题】:Overriding a Puppet Class when using Inheritance使用继承时覆盖 Puppet 类
【发布时间】:2017-03-23 10:40:13
【问题描述】:

我正在尝试为 puppet 使用类继承。有一个名为 foo 的基类和一个名为 bar 的继承类。覆盖 filepackage 资源非常好并且可以正常工作。但同时我正在使用自定义模块来配置sudo

当我尝试从类 bar 中覆盖 sudo 类时,就会出现问题。 Puppet类如下:

 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 配置,但出现如下错误:

评估资源语句时出错,评估错误:错误 在评估资源声明时,重复声明: Sudo::Conf[sudo_conf] 已经在文件中声明 /etc/puppetlabs/code/environments/foobar_servers/manifests/foobar.pp:80; 不能重新声明 /etc/puppetlabs/code/environments/foobar_servers/manifests/foobar.pp:335 在 /etc/puppetlabs/code/environments/foobar_servers/manifests/foobar.pp:335:3 在节点 foobartest01 上

/etc/sudoers.d/10_sudo_conf 文件应该被创建。我怎样才能做到这一点?

使用:Puppet 4.9 社区版。

任何帮助表示赞赏。

【问题讨论】:

    标签: linux inheritance puppet sudo


    【解决方案1】:

    resolv.conf 覆盖在这里有效,因为您使用的是the correct syntax

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

    但是你尝试覆盖的下一行的语法不同,所以它失败了:

    sudo::conf { 'sudo_conf':
    

    这是declare a new resource 的语法(因此会出现重复错误)而不是to override an existing 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/*',
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-20
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      • 1970-01-01
      相关资源
      最近更新 更多