使用puppet对ip route和sysctl进行更改

我有两个改变ip routesysctl ,禁用TCP慢启动。 这是我怎么做的

 ip route show 

记下从默认开始的行。

从默认线路中取出IP并运行

 sudo ip route change default via $ip_address dev eth0 initcwnd 12 sudo sysctl -w net.ipv4.tcp_slow_start_after_idle=0 

我怎样才能创build一个木偶剧本呢? 一个可以部署到许多相同types的机器 – CentOS 6

编辑:添加赏金来获得一个工作的例子

 sudo ip route change default via $ip_address dev eth0 initcwnd 12 

如果你有静态IP地址,请把它放在/ sbin / ifup-local中

 #!/bin/sh GATEWAY=`ip route| awk '/^def/{print $3}'` DEFGWDEV=`ip route| awk '/^def/{print $5}'` if [ "$1" = $DEFGWDEV ]; then ip route change default via $GATEWAY dev $DEFGWDEV initcwnd 12 fi 

如果你使用DHCP(这是你的问题所build议的)获得你的networking地址,那么你可以使用/etc/dhcp/dhclient-exit-hooksdhclientconfiguration你的接口后运行shell命令。 你将可以访问由dhclient提供的许多variables,包括$router 。 你可以用它来运行:

 ip route change default via $router dev $interface initcwnd 12 

你可以用普通的Puppet file资源来安装这个脚本:

 file { '/etc/dhcp/dhclient-exit-hooks': owner => root, group => root, mode => 0755, source => 'puppet:///.../dhclient-exit-hooks', } 

而文件内容可能看起来像这样:

 #!/bin/sh if [ "$interface" = eth0 ]; then ip route change default via ${new_routers%% *} dev $interface initcwnd 12 fi 

如果你使用DHCP,你可以做类似的事情。 正常的ifup脚本在configuration接口后运行/sbin/ifup-local ,您可以使用它运行ip命令。 在这种情况下,你可以简单地通过在/etc/sysconfig/network-scripts/ifcfg-eth0中的接口configuration中find默认网关的地址(并且你的Puppet file资源将安装/sbin/ifup-local )。

在这篇文章中介绍了sysctl一面: 使用Puppet设置sysctl.conf参数 。

木偶networking的例子也利用了Augeas 。

编辑:你在CentOS上,所以记住,你需要使这些路线持久…是更安全的方法来做一个文件的变化,validation,然后重新启动networking接口? 由于您使用的是via语法,因此假定使用/etc/sysconfig/network-scripts/route-ethXip route命令似乎是你的目标,因为你想改变初始拥塞窗口(initcwnd)。 我会认真的把它分成另一个选项,因为设置默认网关本身应该由OSnetworking脚本/ kickstart /构build进程来处理。


现在完全不同的解决scheme:

我喜欢Puppet的一些东西。 networkingconfiguration和sysctl值不在其中。 使用EL6系统,您可以使用tuned-adm框架以简单而一致的方式即时更改这些系统更改。 在进入生产之前,我pipe理的服务器有时需要更多的sysctlsysfs更改。 我曾经手动pipe理,然后用Puppet …但是使用EL6,我创build了一个包含所有必要的调整和脚本的调整configuration文件,使用Puppetpipe理configuration文件和分发,并使用Puppet控制tuned守护进程。

鉴于此,只需将您的ip脚本和sysctl值在自定义configuration文件中,并从那里去。 更干净。