Vyatta on Azure

個人的なメモなので詳細省きます。

VyattaとWindows AzureのVPNゲートウェイなりをつなごう!というのはデプロイ王子などたくさんの人が書いてたりしますが、VyattaそのものをWindows Azureで動かす、というのはあんまり無かったので試してみました。

※Windows Azureの仮想マシンで動かすわけですが、2種類の展開方法が仮想マシンにはあるわけですが、今回は一般化された「イメージ」ではなく、ローカルで作った仮想マシンをそのまま動かす方法を書きます。

※使うVyattaは Vyatta VC6.6R1 (amd64)です。


1. Vyattaイメージの作成

手元のHyper-V 3.0なサーバーにVyattaをインストールします。注意点としては以下の通り。

  • 世代1で作ること
  • NICは1枚にすること
  • 仮想ハードディスは固定容量VHD
  • DHCPにする

というところです。

VHDは2GBもあれば十分でしょう。先に作っておきます。

CD(ISO)からブートしてVyatta/vyattaでログインした後、install system でインストールします。

途中、なぜかHDDが2つ見えてしまいRAID1にするか聞かれます。謎い。とりあえずNoで。

image

後は適当に自動設定なりお好みで。

インストールが終わったらCD抜いて(切断して)再起動しましょう。

2. Vyattaの設定

普通に起動すると思うので、最低限以下の設定を行います。※configureで設定モードに入って設定後commit;save;exitね。

  • DHCP化
    DHCPにしないとAzure上に持っていってもどうしようもなくなるので。
    set interfaces ethernet eth0 address dhcp
    
    
  • SSHの有効化
    SSHでつなげられないとどうしようもないですよね。
    set service ssh
    
    

まぁそのほか設定しておきたいことがあれば設定しておきましょう。

 

3. Windows Azure Linux Agentのインストール

無くても動くのは動きますが一応入れておくことにします。どうもDebian系で有志の方が提供しているWindows Azure Linux Agent(waagent)はPython2.7系に依存しているらしく、Vyatta 6.6では超面倒くさそうなので素直にGitHubからwaagentを持ってきます。

/usr/bin/curl -L -O https://codeload.github.com/WindowsAzure/WALinuxAgent/zip/master

master とかでダウンロードされるのでunzipしましょう。

/usr/bin/unzip master

WALinuxAgent-master ディレクトリができました。

あとはWALinuxAgent-masterディレクトリにある waagent を /usr/sbinにコピーしてchmodとかで実行できるようにしておきましょう。

準備ができたのであとはインストール

sudo /usr/sbin/waagent -install

以上です。

4. Windows Azureへアップロードする前準備

さて本来ならここで一般化などの作業(一時ユーザー削除したりいろいろ)するわけですが、それするとWindows Azure上でイメージ展開に失敗するので、ここでは割愛。そのまま持っていくことを前提とします。

※ちなみに失敗する原因はプロビジョニング用の設定(ユーザーID/Passや証明書など)が入ったファイル(ovf-env.xml)をDVDとして接続し、WAAgentが読み込んで処理する、、のですがUDFフォーマットとしてマウントするのですね。でVyattaにはUDFモジュールがインストールされてないのでマウントできず失敗、となるわけです。。。回避方法募集中。

さてさて、1つ目。よくあるはまりポイントを回避しときましょう。

image

はまりました!

さて回避方法。

1. del interfaces;commit;save;する

2. /opt/vyatta/etc/config/config.boot からhw_id行を削除する

今回は2でやっちゃいました。

要はeth0なインターフェースにMACアドレス固定で設定されちゃって、Windows Azureなど別マシンに持っていくとMACアドレスが違う=ネットワークの設定ができない=\(^o^)/オワタになると。

MACアドレスが記述された行(hw_id)を消すか、インターフェースを消しておけば再起動時に再設定されるのでOK、ということです。

※この設定した後再起動しちゃうとまた固定化されたりするので気を付けましょう。

5. Windows AzureへVHDをアップロード

後は普通にAdd-AzureVhdとかでUploadしましょう。

Add-AzureVhd -Destination http://<Storage>.blob.core.windows.net/vhds/xxx.vhd -localfilepath "xxx.vhd"


アップロード後はOS(Linux)が含まれたDiskとしてAzure上で定義してあげましょう。

image

6. Vyatta on Azureを起動

VHDができたら、ギャラリーから仮想マシンを作成します。

image

後は特に一緒です。イメージから展開するのではないので、ユーザーIDや証明書のアップロードなどはありません。

7. 動作確認

sshでつないで適当に見てみましょう。

ちゃんとエージェントも起動しています。

vyatta@vyattacentral.cloudapp.net's password:
Linux vyatta 3.3.8-1-amd64-vyatta #1 SMP Wed Mar 13 10:35:28 PDT 2013 x86_64
Welcome to Vyatta.
This system is open-source software. The exact distribution terms for
each module comprising the full system are described in the individual
files in /usr/share/doc/*/copyright.
Last login: Fri Jan 31 16:10:29 2014 from 192.168.245.16
vyatta@vyatta:~$ ps aux | grep waagent
root      1598  0.4  1.4  58544  9776 ?        Sl   16:36   0:00 /usr/bin/python /usr/sbin/waagent -daemon
vyatta    2236  0.0  0.0   6076   576 pts/0    S+   16:38   0:00 grep waagent

/var/log/waagent.log も一応見ておきましょうか。

 

vyatta@vyatta:~$ cat /var/log/waagent.log
2014/01/31 16:13:49 WARNING:Moved /lib/udev/rules.d/75-persistent-net-generator.rules -> /var/lib/waagent/75-persistent-net-generator.rules
2014/01/31 16:13:49 Configured SSH client probing to keep connections alive.
2014/01/31 16:36:24 Windows Azure Linux Agent Version: WALinuxAgent-1.4.1
2014/01/31 16:36:24 Linux Distribution Detected      : Debian
2014/01/31 16:36:24 Module /lib/modules/3.3.8-1-amd64-vyatta/kernel/drivers/ata/ata_piix.ko driver for ATAPI CD-ROM is already present.
2014/01/31 16:36:24 VMM Init script not found.  Provisioning for Azure
2014/01/31 16:36:24 Waiting for network.
2014/01/31 16:36:34 IPv4 address: 10.0.1.4
2014/01/31 16:36:34 MAC  address: 00:15:5D:39:68:xx
2014/01/31 16:36:34 Probing for Windows Azure environment.
2014/01/31 16:36:34 DoDhcpWork: Setting socket.timeout=10, entering recv
2014/01/31 16:36:34 Discovered Windows Azure endpoint: 168.63.129.xx
2014/01/31 16:36:34 Fabric preferred wire protocol version: 2012-11-30
2014/01/31 16:36:34 Negotiated wire protocol version: 2011-12-31
2014/01/31 16:36:35 Retrieved GoalState from Windows Azure Fabric.
2014/01/31 16:36:35 ExpectedState: Started
2014/01/31 16:36:35 ContainerId: fce7b1a8-0793-4140-8570-6ebb03010bxx
2014/01/31 16:36:35 RoleInstanceId: 14c98930f6314e8a9b3d46f5569b88xx.vyattacentral
2014/01/31 16:36:35 Provisioning image started.
2014/01/31 16:36:35 Module /lib/modules/3.3.8-1-amd64-vyatta/kernel/drivers/ata/ata_piix.ko driver for ATAPI CD-ROM is already present.
2014/01/31 16:36:35 Waiting for DVD - sleeping 1 - 1 try...
2014/01/31 16:36:36 Resource disk (/dev/sdd1) is mounted at /mnt/resource with fstype ext4

まぁなんかいろいろ動いてそうです。でもやっぱりDVD系のマウントに失敗してるんですよねぇ。致命的ではなさそうなんですが。

2014/01/31 16:36:56 ERROR:CalledProcessError.  Error Code: 32
2014/01/31 16:36:56 ERROR:CalledProcessError.  Command string: "mount -v /dev/hdc /mnt/cdrom/secure"
2014/01/31 16:36:56 ERROR:CalledProcessError.  Command result: "mount: you must specify the filesystem type
2014/01/31 16:36:56 ERROR:mount: you didn't specify a filesystem type for /dev/hdc
2014/01/31 16:36:56 ERROR:       I will try all types mentioned in /etc/filesystems or /proc/filesystems"
2014/01/31 16:36:56 mount: you must specify the filesystem type
2014/01/31 16:36:56 mount: you didn't specify a filesystem type for /dev/hdc
2014/01/31 16:36:56        I will try all types mentioned in /etc/filesystems or /proc/filesystems

ふむ。

まぁWindows Azureからみたらちゃんと動いてます。

image

※イメージ展開するとプロビジョニング失敗するのでまぁこれでいいかという感じ。。

以上。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中