CommentsCentOSは5,6しか使ったことなかったのですが、何も考えずにサーバにCentOS7をインストールしたら何もかもが変わっていてびっくりしました。ネットワーク周りの設定でハマったのと、日本語で情報がなかったのでメモ。Managerが面倒くさいだけな気はするのですが。)例えば、あるinterfaceを起動したときに、同時にそれに関連するネットワーク設定ができると便利ですよね。Debian等でれば、/etc/network/interfacesにこんな感じで書けば、interface起動時に好きなコマンドを実行できたりします。Managerがすべてを握っているため、果たしてどこに書いてやれば良いのか。具体的にやりたかったのは起動時にこの環境が立ち上がることです。(enp4s0の起動と同時に作りたい)netnsを作成vethのペアを作成vethの片方をnetnsに紐付けvethの有効化OpenvSwitchの設定関しては、一度設定すればOpenvSwitch側のデータベースに入るのでrebootしても同じ設定で起きてきます。毎回起動時に同じ名前でinterfaceを作ってあげればifindex等は変わっても良さそうです。準備、とは言ってもOpenvSwitchの設定だけ先に入れておくだけです。OpenvSwitchの設定はこんな感じで。tag=32では、本題、interfaceの起動時に環境設定スクリプトを走らせる方法です。Managerの呪縛を解いてあげます。(これも色々試してみたのですが、上手く行ったのはこの方法だけでした。)/etc/sysconfig/network-script/ifcfg-enp4s0にこんな感じで記述。Managerの呪いから解き放たれました。--この時点で、ifup(/sbin/ifup)によりInterfaceの起動が制御されるようになりました。ifupはシェルスクリプトで書かれており、中身を覗くとコードの最後のほうで/etc/sysconfig/network-scripts/ifup-ethを読んでいることがわかります。$2さらに/etc/sysconfig/network-scripts/ifup-ethを読んでみると、今度は最終行で/etc/sysconfig/network-scripts/ifup-postが呼ばれています。${DEVICE}fiデフォルトでは/sbin/ifup-localは存在していないので、実行されませんが作ってあげると実行してくれます。こんな感じで書いてあげます。"interface[$1](DO_NOTHING)"fi権限付与。/sbin/ifup-localこれで、rebootしてみると、interfaceの起動時(ifupが呼ばれたとき)にこのスクリプトが実行されてくれます。]手順と動作の仕組みさえ分かってしまえば簡単でしたね。ここまで来るのに結構苦労してるので、以下はそのへんの余談。Managerからinterfaceを解き放つのは、上記の方法以外はうまく行きませんでした。Managerの設定ファイルにinterfaceを無視するように書いてみる。Interfaceの設定ファイル(ifcfg-hoge)自体が消失します。ifupもこのifcfgの設定ファイルを見ているため、ファイルがないとifupで「そんなデバイス知らねぇ」と怒られてしまいます。[方法2]続いて、nmcliからmanagedを外す。コマンドは至ってシンプルでこれだけ。一瞬外れたように見えますが、rebootすると結局managedに戻ります。Managerで管理させていると起動処理にifupが呼ばれていない。Managerで管理しているenp5s0は先程のifup-localを通ってないことがわかります。Managerの管理から外してあげると、ifupのスクリプトによってinterfaceが起動される。Managerの管理から外すために、ここに書いたような手順でやると、rebootでもとに戻ったり、ifupが参照する設定ファイルが消えたりで他のところで影響がでる。interfaceは最初からunmanagedです。loは特になにも設定しなくてもifupによって起動され、さきほどの/sbin/ifup-localも呼ばれます。interfaceの起動時に他のinterfaceの設定をやってしまう方法もありそうです。Managerによって起動されそうな雰囲気。今回はinterfaceそのものの設定を変更するスクリプトは書いてないので問題ないですが、interface設定をしたとしても上書きされて意味なしです。Managerが設定する頃にはunmanagedなので、無視してくれるかもしれませんが、あまりいい方法ではないと思ったので試してないです)以上余談でした。ハマったあげく、今はこの方法でうまく行ってます。Managerのクセが強すぎて、たったこれだけのことでかなり苦戦しました。何か他にいい方法を知ってる方がいれば教えてください。