仮想環境を使ったVyOSの入れ替えテクニック

この記事は、 [VyOS Advent Calendar 2014](http://qiita.com/advent-calendar/2014/vyos "VyOS Advent Calendar 2014") の16日目の記事です。

#VyOSについて

VyOSは Vyatta Core R6.6からForkして作成されたオープンソースの仮想ルータです。



#仮想化環境におけるVyOSの入れ替え

今回はbrctl コマンドを使用することによる論理的なインターフェイスの付け替えで2台のVyOSを物理マシンのEthernetケーブルを置き換えるかのように入れ替えを行います。

## 前準備

- bridgeを作る

>$ sudo brctl addbr br0;sudo brctl addif br0 eth0
>$ sudo brctl addbr br1;sudo brctl addif br1 eth1

- 確認

>$ brctl show
>bridge name     bridge id               STP enabled     interfaces
>br0             8000.90e2ba016158       no              eth0
>                                                        vnet0
>                                                        vnet2
>br1             8000.001517168309       no              eth1
>                                                        vnet1


- bridge2,3の作成（入れ替え用)

>$ sudo brctl addbr br2
>$ sudo brctl addbr br3

- 確認

>$ brctl show
>bridge name     bridge id               STP enabled     interfaces
>br0             8000.90e2ba016158       no              eth0
>                                                        vnet0
>                                                        vnet2
>br1             8000.001517168309       no              eth1
>                                                        vnet1
>                                                        vnet3
>br2             8000.fe5400e7dfa6       no              vnet4
>br3             8000.fe5400bef0ae       no              vnet5


## VyOSインストール
higebuさんの[VyOS Advent Calender 2日目](http://www.higebu.com/blog/2014/12/02/how-to-install-and-upgrade-vyos/#.VJANGCusXzg "install")の記事参照

- 移動元インスタンスを作成

>qemu-img create -f qcow2 /var/lib/libvirt/images/vyos1.qcow2 4G
>virt-install \
>  --name=vyos2 \
>  --disk path=/var/lib/libvirt/images/vyos2.qcow2 \
>  --vcpus=2 \
>  --ram=4096 \
>  --cdrom=./vyos-1.1.1-amd64.iso \
>  --network bridge=br0 \
>  --network bridge=br1 \
>  --os-type=linux \
>  --os-variant=debiansqueeze


- 移動先インスタンスを作成

>qemu-img create -f qcow2 /var/lib/libvirt/images/vyos1.qcow2 4G
>virt-install \
>  --name=vyos2 \
>  --disk path=/var/lib/libvirt/images/vyos2.qcow2 \
>  --vcpus=2 \
>  --ram=4096 \
>  --cdrom=./vyos-1.1.1-amd64.iso \
>  --network bridge=br2 \
>  --network bridge=br3 \
>  --os-type=linux \
>  --os-variant=debiansqueeze

- 起動を確認

>$ virsh list
>Id    Name                           State
>----------------------------------------------------
> 4     vyatta5600                     running
> 7     vyos1                          running
> 8     vyos2                          running

kikuchiy@ool-test:~$

インストール後、同じConfigもしくは新旧で変えた設定をいれておきます。

同じInterfaceに同じIPアドレスを入れておくことが注意点

##オペレーション

- 入れ替えの実施

 >$ sudo brctl delif br0 p4p1;sudo brctl addif br2 p4p1
 >$ sudo brctl delif br1 p1p2;sudo brctl addif br3 p1p2

- 確認 

>$ brctl show
>bridge name     bridge id               STP enabled     interfaces
> br0             8000.fe5400980ce5       no              vnet0
>                                                         vnet2
> br1             8000.fe540038f4d7       no              vnet1
>                                                         vnet3
> br2             8000.90e2ba016158       no              eth0
>                                                         vnet4
> br3             8000.001517168309       no              eth1
>                                                        vnet5

これで、br0,br1で動いているvyos1からbr1,br2で動いているvyos2へ
物理インターフェイスの入れ替えが完了します。


#まとめ
今回はbrctl コマンドを使用することによる論理的なインターフェイスの付け替えで2台のVyOSの
入れ替えを行いました。アップデートをするときに、切り替え切り戻しを簡単にすることや、
別のOSに切り替えるというような応用をすることができます。