Puppet
使用 /etc/hosts 的 Puppet Augeas
我對 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