使用 /etc/hosts 控制 Puppet Augeas

使用 /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",
                        ],

这将创建我想要的线条。

hosts 文件如下所示

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 = 测试

我当前的配置似乎无法预测

    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'",
           }

有人能帮我在这方面指明正确的方向吗?

答案1

要管理主机条目,您应该使用host资源类型。

这种类型是 Puppet 的默认类型,但你也可以将它与 Augeas 一起使用(我推荐使用),方法是使用服务提供者模块(特别是 augeasproviders-base 模块)。

答案2

为什么不利用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

相关内容