使用 puppet 更改节点上的 IP 地址

使用 puppet 更改节点上的 IP 地址

我有 3 个 CentOS 节点。每个节点都有 2 个 IP 地址:10.0.1.* (eth0) 和 192.168.1.* (eth1)。所有节点都安装了 puppet,并且有一个主 puppet 服务器用于管理这些服务器中的配置。所有服务器都使用 10.0.1.* IP 与 puppet 服务器交互。

我的需求是更改这些服务器上的 eth1 IP 地址。我是否可以有一个通用配置文件来更改这 3 台服务器上的 IP 地址,还是应该为这 3 台服务器设置 3 个不同的配置文件?

答案1

在编写自己的代码之前,请先查看https://forge.puppetlabs.com.因为通常有一个模块可以完全满足您的所有需求。

如果我理解你的任务正确的话,那么https://forge.puppetlabs.com/example42/network

如果您仍然想手动执行此操作,您应该使用前面提到的简单模板替换,或者augeas我认为更好的想法。

例如,为了配置vmbr0界面,你需要为 Debian 添加类似的内容:

augeas{ "vmbr0_interface" :
        context => "/files/etc/network/interfaces",
        changes => [
                "set auto[child::1 = 'vmbr0']/1 vmbr0",
                "set iface[. = 'vmbr0'] vmbr0",
                "set iface[. = 'vmbr0']/family inet",
                "set iface[. = 'vmbr0']/method static",
                "set iface[. = 'vmbr0']/address 192.168.11.1",
                "set iface[. = 'vmbr0']/netmask 255.255.255.0",
                "set iface[. = 'vmbr0']/bridge_ports none",
                "set iface[. = 'vmbr0']/bridge_stp off",
                "set iface[. = 'vmbr0']/bridge_fd 0"
        ]
}

对于 CentOS:

        augeas { "eth1":
            context => "/files/etc/sysconfig/network-scripts/ifcfg-eth1",
            changes => [
                "set DEVICE eth1",
                "set BOOTPROTO none",
                "set ONBOOT yes",
                "set NETMASK 255.255.255.0",
                "set IPADDR 10.12.0.10",
            ],
        }

也可以关注此链接http://projects.puppetlabs.com/projects/1/wiki/Network_Interface_Templates_Patterns。它对网络配置有一些很好的想法。

相关内容