web-dev-qa-db-ja.com

puppetを使用して、iprouteとsysctlを変更します

ip routesysctlに2つの変更があり、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

これからパペットスクリプトを作成するにはどうすればよいですか?同じタイプの多くのマシンにデプロイできるもの– CentOS 6

編集:賞金を追加して、

Sudo ip route change default via $ip_address dev eth0 initcwnd 12 
7
Quintin Par

Larsksの答えから離れて、静的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
6
Tarun Reddy

DHCPを使用してインターネットアドレスを取得している場合(質問で提案されています)、dhclientでインターフェイスを構成した後、/etc/dhcp/dhclient-exit-hooksを使用してシェルコマンドを実行できます。 $routerを含む、dhclientによって提供される多くの変数にアクセスできます。これを使用して実行できます。

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を使用している場合(not)、同様のことができます。通常のifupスクリプトはインターフェイスの構成後に/sbin/ifup-localを実行し、これを使用してipコマンドを実行できます。この場合、/etc/sysconfig/network-scripts/ifcfg-eth0のインターフェース構成を調達するだけで、デフォルトゲートウェイのアドレスを取得できます(Puppet fileリソースは/sbin/ifup-localをインストールします)。

6
larsks

sysctl側はこの投稿でカバーされました: Puppetでsysctl.confパラメーターを設定します

Puppetの ネットワーキングの例 も活用します Augeas

編集:あなたはCentOSを使用しているので、これらのルートを永続化する必要があることを忘れないでください...ファイルに変更を加え、確認してからネットワークインターフェイスを再起動する方が安全な方法ですか?これは/etc/sysconfig/network-scripts/route-ethXvia構文を使用しているため、使用します。 ip routeコマンドは、初期輻輳ウィンドウ(initcwnd)を変更したいので、あなたの目標のようです。デフォルトゲートウェイの設定自体はOSネットワークスクリプト/キックスタート/ビルドプロセスによって処理される必要があるため、これを別のオプションに真剣に分けます。


今、まったく異なる解決策のために:

私はいくつかの点でPuppetが好きです。 ネットワーク構成とsysctl値は含まれていません。 EL6システムでは、 tuned-admフレームワーク を使用して、これらのシステム変更をその場で簡単に行うことができます。一貫した方法。私が管理しているサーバーは、本番環境に移行する前に30以上のsysctlおよびsysfsの変更が必要になる場合があります。以前は手動で管理していましたが、Puppetを使用しました...しかしEL6を使用して、 tunedprofile を作成します。必要な微調整とスクリプト、Puppetを使用したプロファイルとその配布の管理、およびPuppetを使用したtunedデーモンの制御。

それを前提として、カスタムプロファイルでipスクリプトとsysctl値を移動し、そこから移動します。はるかにきれい。

6
ewwhite