我有 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。它对网络配置有一些很好的想法。