Puppet

使用 /etc/hosts 的 Puppet Augeas

  • December 8, 2014

我對 Augeas 還很陌生,但有人告訴我它是用 puppet 修改配置工具。

我正在嘗試創建一個簡單的類,如果 /etc/hosts 尚不存在,該類將添加一行。

   augeas { "test_config":
            context => "/files/etc/hosts/01/",
            changes => [
                        "set ipaddr 192.168.100.3",
                        "set canonical test.localdomain",
                        "set alias[1] test",
                       ],

這創造了我追求的路線。

主機文件看起來像這樣

127.0.0.1       localhost       localhost.localdomain localhost4 localhost4.localdomain4
::1     localhost       localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.3     test.localhost test
192.168.0.4     badger.oam.eeint.co.uk badger

因為我不想重複,所以我在 augtool 中創建了一條匹配線來獲得匹配。

augtool> 匹配 /files/etc/hosts/3/alias /files/etc/hosts/3/alias = test

我目前的配置似乎充其量是不可預測的

   augeas { "test_config":
            context => "/files/etc/hosts/*/",
            changes => [
                        "set ipaddr 192.168.100.3",
                        "set canonical test.localdomain",
                        "set alias[1] test",
                       ],

           onlyif => "match alias 'test'",
          }

任何人都可以幫助我在這個正確的方向上推動我嗎?

要管理主機條目,您應該使用host資源類型。

Puppet 預設提供這種類型,但您也可以通過使用augeasproviders模組(特別是 augeasproviders-base 模組)將其與 Augeas(我推薦)一起使用。

為什麼不使用exec資源?

exec{'serverfault demo':
    command => 'echo 192.168.100.3       test.localdomain >> /etc/hosts',
    unless => 'grep test.localdomain /etc/hosts',
    path => ['/bin','/usr/bin'],
}

這將執行命令並僅當/etc/hosts 中不存在echo該行時添加該行。192.168.100.3 test.localdomain

引用自:https://serverfault.com/questions/650001