神栖ビーチレース参戦記
昨今はオフロードバイクの大会が少なくなりつつありますが、何と新たな大会が開催されました!
http://homepage3.nifty.com/wins/beach1.html
しかも、砂浜をひたすら走ることができるという、とても貴重なレースと言えます。
以下、参加レポートをまとめます。
コンディション
- 若干肌寒いくらい
- funクラス1ヒートが終わるまでは曇り、それ以降はパラパラと雨が降ってきた
- 雨が降っても、海砂なのでドロドロにはならない
走った感想
- 砂浜をはしるのは、結構難しい
- 前輪と後輪が同時にブレる感じは、とってもスリリング (>_<)
- スピードを付けて真っすぐ走れないと、蛇行しまくる
- コーナーでマシンを大きく傾けると抵抗が大きくなり、転倒してしまう
今後の課題
- マシンがぶれてもビビらずにアクセルを開ける
- スピードを付けていれば転倒しなくなるはず。前に転ぶ感覚で走れるように目指す
- 砂浜を楽しく走れるように
- 今回は、楽しいというよりはモガキ苦しんだ感じなので..
それにしても、レーサークラスの人たちは速すぎです。
現役のJNCCトップライダーの人も参加しており、ブッチギリで優勝されました。私の2倍は速いです。何とか1.5倍くらいまで追い付きたいものです。
Rails Recipes: Rails 3 Edition
Rais Recipes: Rails 3 Edition のβ版が発売されたので、買ってみました。
Rails Recipes: Rails 3 Edition by Chad Fowler | The Pragmatic Bookshelf
Rails Recipes: Rails 3 Edition
- 作者: Chad Fowler,John Osborn
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2012/04/07
- メディア: ペーパーバック
- クリック: 15回
- この商品を含むブログ (1件) を見る
今は円高なので、電子書籍版が\1,800円くらいで購入できました。
Pragmaticシリーズは epub,mobi(Kindle),pdf 3つの形式が提供されているので、色々な端末で見られてお得感が高いです。
Heroku を試してみる
Ruby On Rails の PaaS として有名な Heroku の使い方についてまとめてみます。
参考情報:
開発環境としては、Debian 6.0 を用います。
尚、Herokuの ruby version は 1.9.2の模様なので、Debianパッケージの ruby は使わずに rvm にてインストールした ruby-1.9.2 を使用します。
rubyのインストール(rvmを使用)
$ bash < <(curl -sk https://rvm.beginrescueend.com/install/rvm)
$ vi ~/.bash_profile
(下記を追加し、rvm環境を有効にする)
-s "$HOME/.rvm/scripts/rvm" && . "$HOME/.rvm/scripts/rvm"
(テスト例)
$ rails generate scaffold User name:string id:integer
$ rake db:migrate
$ git -a -m "update db"
$ git push heroku master
$ heroku rake db:migrate
(readlineやopenssl等、heroku で使用しそうなrubyライブラリは予め組み込んでおきます)
$ rvm pkg install readline
$ rvm pkg install openssl
$ rvm pkg install zlib
$ rvm install 1.9.2 --with-openssl-dir=$HOME/.rvm/usr \
--with-readline-dir=$HOME/.rvm/usr \
--with-zlib-dir=$HOME/.rvm/usr
$ rvm use 1.9.2 --default
Heroku をインストール
次に、herokuサービスにアクセスするためのパッケージ(gem)をインストールします。
$ gem install heroku
テストアプリの作成
開発環境の構築が完了したので、次は railsアプリを作成します。
$ rails generate hello
$ rails server
(開発環境でアプリが起動することを確認)
heroku に deploy
herokuにアプリをデプロイするには、以下の手順を踏みます。
- railsアプリを開発環境で作成
- heroku側のアプリケーションサーバを起動(初回のみ)
- gitリポジトリにソースコードを登録(または更新)
- git pushコマンドを用いて heroku にソースコードを転送
heroku側のアプリケーションサーバを起動
$ heroku create
heroku側のアプリケーションサーバを起動します。サーバが起動すると、URLが発行されます。
初回は Emailアドレス及びパスワードを要求されますので、サインアップ時に登録した情報を入力します。
Enter your Heroku credentials.
Email: joe@example.com
Password:
Uploading ssh public key /Users/joe/.ssh/id_rsa.pub
Created http://high-sunrise-58.heroku.com/ | git@heroku.com:high-sunrise-58.git
Git remote heroku added
gitリポジトリにソースコードを登録
(railsソースコードの top ディレクトリにて)
$ git init
$ git add .
$ git commit -m "Initial code"
git pushコマンドを用いて heroku にソースコードを転送
$ git push heroku master
ブラウザを開いてアプリの動作を確認
$ heroku open
heroku db:migrate 注意点
heroku で db:migrate をしようとすると、rakeコマンドがエラーで停止してしまいます。Rakefile の "require 'rake'" の手前で以下の require文 を追加すると良いようです。
require 'rake/dsl_definition'
(テスト例)
$ rails generate User name:string id:integer
$ rake db:migrate
$ git add .
$ git commit -m "update db"
$ git push heroku master
$ heroku rake db:migrate
ルータを便利に遠隔制御しよう Capistrano
サーバ系のホストの管理は台数が増えると大変面倒になることは、運用のお仕事をされている人であればよくご存じだと思います。
世の中には、ホスト管理の課題を解決するためのツールとして Chef, Puppet, CFEngine や Capistrano などがあります。
翻ってルータに関しては、まだ決定打と呼べるほどの解決方法は無いのが現状だと思います。(SNMPはコンフィグ管理に不向きだし、NetConf は現状では機種依存度が高すぎだし..)
それでも、Unix OS系のルータアプライアンスであればホストと同じ仕掛けで簡単に管理することが出来てしまいます。
前置きが長くなってしまいましたが、今回のお題目は
- Capistrano を使って vyatta と SEIL/x86 を遠隔制御
を試してみます。
Capistrano
Capistrano は、複数のホストに対してコマンド実行などを実施する際に使うと便利なツールです。
Capistrano は管理対象の機器にソフトウェアをインストールする必要がありません。
コンフィグの管理については Puppet, Chef, CFEngine 等を使う方が良いですがバッチ処理的なことをさせるのであれば Capistrano が便利です。
Capistrano インストール
インストールはとても簡単です。以下のコマンドを管理サーバで実行するだけでインストールは完了します。
$ gem install -y capistrano
$ cap -h
vyatta + Capistrano
Capistrano では、rubyベースの 定義ファイル を記述することで「複数の環境に同じ処理を同時に実行させる」ことを実現します。
まずは、vyatta を例にコマンドを実行してみます。
set :user, "vyatta"
set :password, "(password)"role :server, "(サーバのIPアドレス又はFQDN)"
desc "Test task"
task :show_route, :roles => :server do
run "~vyatta/run-cmd.sh show ip route"
end
上記の定義ファイルを "Capfile" という名前で保存し、以下のコマンドを実行します。
尚、vyattaのコマンドを投入する場合は前回紹介した ~vyatta/run-cmd.sh が必要になります。
(実行例)
$ cap show_route
* executing `show_route'
* executing "~vyatta/run-cmd.sh show ip route"
servers: ["192.168.0.1"]
[192.168.0.1] executing command
** [out :: 192.168.0.1] Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
** [out :: 192.168.0.1] I - ISIS, B - BGP, > - selected route, * - FIB route
** [out :: 192.168.0.1]
** [out :: 192.168.0.1] S>* 0.0.0.0/0 [210/0] via 192.168.192.5, eth0
** [out :: 192.168.0.1] C>* 127.0.0.0/8 is directly connected, lo
** [out :: 192.168.0.1] C>* 192.168.0.0/24 is directly connected, eth0
command finished in 141ms
SEIL/x86 + Capistrano
SEIL/x86 の場合は、定義ファイルに下記を追加する必要があります。
default_run_options[:shell] = false
default_run_options[:pty] = true
set :user, "user"
set :password, "(password)"role :server, "(SEIL/x86のIPアドレス又はFQDN)"
default_run_options[:shell] = false
default_run_options[:pty] = truedesc "WOL(Wake On Lan)"
task :wol, :roles => :server do
run "wol 00:11:22:33:44:55 interface lan0"
end
(実行例)
$ cap wol
* executing `wol'
* executing "wol 00:11:22:33:44:55 interface lan0"
servers: ["1.2.3.4"]
[192.168.0.1] executing command
command finished in 142ms
vyatta をリモート制御する
vyatta を ssh 等で制御しようとしてハマった人は結構多いのではないかと思い、tips をまとめておきます。
尚、お金のある人は vyatta subscription版 を購入すれば remote access api が利用できるので、こちらも便利だと思います。
遠隔からの vyatta operation
vyatta の CLI は bash の complete機能 を用いて実現しています。そのため、sshコマンドに引数を渡してもvyattaコマンドの遠隔実行はできません。(通常のbashコマンドであれば動作します)
そこで、以下のようなスクリプトを経由させて間接的にコマンドを実行する必要があります。
- ~vyatta/run-command.sh
!#/bin/vbashvyatta_sbin=/opt/vyatta/sbin
args=$*
. /etc/bash_completion
eval _vyatta_op_run $args
リモートホストから vyatta を制御するには、例えば以下のように実行します。
$ ssh vyatta@(vyattaホスト) '~/run-command.sh show version'
遠隔からの vyatta configuration
遠隔ホストから vyatta のコンフィグを書きかえる場合は、以下のようなスクリプトで実行できます。
- ~vyatta/config.sh
#!/bin/bashvyatta_sbin=/opt/vyatta/sbin
wr=$vyatta_sbin/vyatta-cfg-cmd-wrapper
opt_cmd=$1
shift
cmdline=$*cfg_stdin ()
{
while read line
do
eval $wr "$line"
done
}cfg_cmdline ()
{
eval $wr $cmdline
}. /etc/bash_completion
$wr begin
if [ "${opt_cmd}" = "-c" ]
then
cfg_cmdline
else
cfg_stdin
fi$wr commit
$wr end
$ ssh vyatta@(vyattaホスト) '~/config.sh -c set system host-name foobar'
上記スクリプトは 引数 '-c' を付けると、続けてコンフィグ設定コマンドを記述できます。
何も引数を付けない場合は標準入力からコマンドを受け付けるので、複数のコンフィグをまとめて変更する際に利用します。
config.sh や run-command.sh は ホスト内でも勿論利用できますので、vyatta CLI を用いてバッチ処理をさせたい場合にも利用できます。なので、うまく活用すれば Junos の event script のような応用もできそうです。
WOLを使って節電対策をしましょう(SEIL/x86編)
今年の夏に向けて、関東圏では大幅な電力不足が予想されております。
工場やデータセンタなどの部門では従前から電力削減が進んでいるのは周知のことですが、IT企業のオフィスのデスクトップなどは24時間通電しているパソコンは結構あったりすると思います。
そこで、今回はWOL(Wake-On-LAN)機能を用いてお手軽にPCの遠隔起動ができる方法をまとめてみます。
WOL機能をルータ越しで使いたい
WOL機能はとても便利なのですが、基本的には同一ネットワーク内でないと動作しません。場合によると使えることもあるので、ネットワーク管理者さんがいれば聞いてみましょう。
- ルータにディレクテッドブロードキャスト宛の通信を転送する機能を有効にしてもらえるかどうか(デフォルトは offの場合が多いです)
- リモートアクセス(SSL-VPNやPPTP, L2TP/IPSEC等)でWOLパケットが通るかどうか
どうにもうまくいかない場合もあると思いますが、もし手元のネットワークに SEIL/x86 を動作している場合は SEIL の WOL機能を用いると簡単にマジックパケットを送信することができます。
- PCのWOL設定を有効にする
- SEIL/x86 をPCの動作するネットワーク上で起動する
- 特に複雑な設定は必要ありません。LANインタフェースにIPアドレスを振り、デフォルト経路を設定すればOKです。
- リモートPCから社内LANに接続する
- マジックパケットを送信する
- SEILにtelnet等でログインし、以下のコマンドを実行します。
wol 00:11:22:33:44:55
(00:11:22:33:44:55 は、PCのMACアドレスに置き換えます)
SEIL/x86 IPsec機能を試す(第一回: 概要)
SEILシリーズは企業向けのインターネット接続に良く利用されているそうです。ということは、SEIL/x86 もIPsec機能については充実しているに違いない、というわけで色々とテストをしてみます。
まずは、SEILシリーズで利用できるVPNについてまとめます。
SEIL/x86で利用できるVPN
機能 | 接続形態 | 種別 |
---|---|---|
IPsec | トンネルモード | IKE+ESP |
IPsec | トランスポートモード | IKE+ESP |
IPsec | IPIPトンネル + トランスポートモード | IKE+ESP over IPIP |
IPsec | IPsecインタフェース | 仮想インタフェースを用いたIPsec通信 |
PPTP | リモートアクセスVPN | PPTPプロトコル |
L2TP/IPsec | リモートアクセスVPN | L2TPv2 over IPsec |
L2TPv3 | L2TPv3ブリッジ接続 | L2TPv3を用いた仮想Ethernet通信 |
L2TPv3/IPsec | L2TPv3ブリッジ接続 | L2TPv3 over IPsec |
但し、PPTPはサーバ機能のみの提供のため、クライアントにはなれない模様です。
SSL-VPNは利用できないようですが、その他の機能は充実している感じです。