web-dev-qa-db-ja.com

saz-Sudo puppetモジュールを使用して自分のsudoersファイルをhieraでデプロイするにはどうすればよいですか?

Saz-Sudoをインストールし、それに基づいてsite_Sudoモジュールを作成しました(願っています)。これが私のsite_Sudo/manifest/init.ppファイルにあるものです:

class { 'site_Sudo': }
    Sudo::conf { 'web':
      source => 'puppet:///files/etc/sudoers',
    }
    Sudo::conf { 'syseng':
      priority => 10,
      content  => "%sysadm ALL=(ALL) NOPASSWD: ALL",
    }

include Sudo

私が何をしても、ターゲット上のsudoersファイルは常にsaz-Sudoモジュールのsudoers.rhel6ファイルで上書きされます。

私もcommon.yamlを使用しています:

classes:
  - site_Sudo
1
mr.zog

それはあなたのファイルからの正確なコピーですか? class { 'site_Sudo': }行は、そのクラスを構成に含めますが、モジュールのinit.ppで行う必要があるようにクラスを定義しません。これにより、ファイル内の残りの構成が適用されなくなります(このファイルはそのクラスをロードするためにのみ評価されているため、他の行はimportステートメントの場合のように評価されません)。

代わりに、次のようになります。

class site_Sudo { 
  include Sudo
  Sudo::conf { 'web':
    source => 'puppet:///files/etc/sudoers',
  }
  Sudo::conf { 'syseng':
    priority => 10,
    content  => "%sysadm ALL=(ALL) NOPASSWD: ALL",
  }
}
2
Shane Madden

[〜#〜] readme [〜#〜] によると、パラメータをSudoクラスに送信する必要があります。

class { 'Sudo':
  config_file_replace => true,
}

プレーンの代わりに

include Sudo

どのクローバー/etc/sudoers as 記載

3
Felix Frank

[〜#〜] readme [〜#〜] およびクラス Sudo :: configs を確認してください。

使用されている規則はかなり奇妙です(私見では、クラスSudoにハッシュパラメーターを追加する方が簡単です)...しかし、Hieraでは非常にうまく機能しているようです。

値の例:

classes:
  - Sudo 
  - Sudo::configs

Sudo::configs:
    'syseng':
        'priority'  : 10
        'content'   : "%sysadm ALL=(ALL) NOPASSWD: ALL"
0
mschuett

saz/Sudoは、sudoers.dファイルと#includeを使用するように設計されています。これが、sudoersファイルをクリーンなファイルで上書きして、正しいファイルであることを確認する理由です。これらのSudo :: conf宣言により、/ etc/sudoersを直接変更する代わりに、ファイルが/etc/sudoers.dに表示されます。

0
marco