使用puppet解析ip和hostname的/ etc / hosts,并转置到/ etc / sysconfig / network-scripts / ifcfg-eth0

时间:2014-08-15 18:24:57

标签: ruby puppet

我正在用cobbler踢机器来安装redhat 6并且还输入了主机名。 我正在使用/ etc / hosts文件管理我的机器(可能在将来切换到dns)并且希望通过/ etc / hosts解析puppet(或任何可行的东西)并找到我的ip地址和主机名(基于在补时阶段由cobbler提供的主机名上)。诀窍是一些机器在/ etc / hosts文件中有多个IP和主机名,如下所示:

#维护网络

192.168.80.192  testsrv01-maint
192.168.80.193  testsrv02-maint
192.168.80.194  testsrv03-maint

#熄灯网络

192.168.120.192  testsrv01-ilo
192.168.120.193  testsrv02-ilo
192.168.120.194  testsrv03-ilo

#主要数据网

192.168.150.192  testsrv01-pri
192.168.150.193  testsrv02-pri
192.168.150.194  testsrv03-pri

#辅助数据网

192.168.200.192  testsrv01-sec
192.168.200.193  testsrv02-sec
192.168.200.194  testsrv03-sec

我需要捕获每个ip和主机名对(在一行中)并转置到/ etc / sysconfig / network-scripts / ifcfg-eth *(eth1,eth2,eth3,...)。 Puppet需要创建尽可能多的ifcfg-eth *文件,因为/ etc / hosts中的主机名匹配。

我只需要puppet将$ IP和$ hostname附加到ifcfg-eth文件中,其余内容很常见。

那么如何使用puppet获得'testsrv01'的4x ifcfg-eth文件?

1 个答案:

答案 0 :(得分:0)

Puppet非常适合这项任务。这需要一个Puppet不支持的脚本。 Puppet允许您声明一个可以在不同平台上可移植的机器状态。

对于Shell或Perl脚本,任务很简单。

使用Puppet,需要以下脚本

  1. 编写自定义事实以检索每个地址/主机名对
  2. 设计定义的类型以将这样的对呈现为ethX文件
  3. 您甚至可能需要生成相应的清单,以便为每个地址选择适当的接口索引。

    考虑到所有事情,你不会利用Puppet的优势并遭受它的一些弱点。