Aviator でモダンに OpenStack を操作する

こんにちは。@jedipunkz です。 自分は Ruby を普段使うのでいつも Fog というライブラリを使って OpenStack, AWS を操作していました。Fog を使うとクラウドの操作が Ruby のネイティブコードで行え るのでシステムコマンド打つよりミス無く済みます。 Fog より後発で Aviator というライブラリが登場してきたので少し使ってみたのです がまだ未完成なところがあるものの便利な点もあって今後に期待だったので紹介します。 認証情報を yaml ファイルに記す 接続に必要な認証情報を yaml ファイルで記述します。名前を ‘aviator.yml’ として 保存。この時に下記のように環境毎に認証情報を別けて書くことができます。こうする ことでコードの中で開発用・サービス用等と使い分けられます。 production: provider: openstack auth_service: name: identity host_uri: <Auth URL> request: create_token validator: list_tenants auth_credentials: username: <User Name> password: <Password> tenant_name: <Tenant Name> development: provider: openstack auth_service: name: identity host_uri: <Auth URL> request: create_token validator: list_tenants auth_credentials: username: <User Name> password: <Password> tenant_name: <Tenant Name> シンタックス確認 +++...

Emacs + Mew で Gmail を読み書きする

こんにちは。@jedipunkz です。 今日も軽めの話題を。 Gmail を Emacs + Mew で読み書きする方法を何故かいつも忘れてしまうので自分のた めにもメモしておきます。Gmail はブラウザで読み書き出来るのに!と思われるかもし れませんが、Emacs で文章が書けるのは重要なことです。:D 対象 OS 比較的新しい… Debian Gnu/Linux Ubuntu を使います。 手順 Emacs, Mew, stunnel4 をインストールします。Emacs は好きな物を入れてください。 % sudo apt-get install emacs24-nox stunnel4 mew mew-bin ca-certificates openssl コマンドで mail.pem を生成します。生成したものを /etc/stunnel 配下に設 置します。 % openssl req -new -out mail.pem -keyout mail.pem -nodes -x509 -days 365 % sudo cp mail.pem /etc/stunnel/ stunnel はインストール直後、起動してくれないので ENABLE=1 に修正します。 % sudo ${EDITOR} /etc/default/stunnel4 ENABLE=1 # 0 -> 1 へ変更 stunenl....

pry のススメ

OpenStack をコードで管理するためのフレームワークは幾つか存在するのだけど Ruby で記述出来る Fog が良い!と隣に座ってるアプリエンジニアが言うので僕も最近少し 触ってます。 Fog を使った OpenStack を管理するコードを書くことも大事なのだけど、Fog のコン トリビュートってことで幾つかの機能を付け足して (Quantum Router 周り) ってこと をやってました。まだ取り込まれてないけど。 その開発の中で pry の存在を教えてもらいその便利さに驚いたので少し説明します。 バリバリ開発系の人は既に知っているだろうけど、インフラ系エンジニアの僕にとって は感激モノでした。 pry は irb 代替な Ruby のインタラクティブシェルです。下記の URL から持ってこれ ます。 https://github.com/pry/pry シンタックスハイライトされたり json のレスポンスが綺麗に成形されたり irb 的に 使うだけでも便利なのだけど ‘?’ や ‘$’ でコードのシンタックスを確認したりコード 内容を確認したり出来るのがアツい! ちょうど今回追加した Fog の機能を使って説明していみます。 Fog のコードを require して OpenStack に接続するための情報を設定し OpenStack Quantum に接続します。これで準備完了。 [38] pry(main)> require '/home/jedipunkz/fog/lib/fog.rb' [49] pry(main)> @connection_hash = { [49] pry(main)* :openstack_username => 'demo', [49] pry(main)* :openstack_api_key => 'demo', [49] pry(main)* :openstack_tenant => 'service', [49] pry(main)* :openstack_auth_url => 'http://172....

Spiceweasel で knife バッチ処理

Spiceweasel https://github.com/mattray/spiceweasel#cookbooks を使ってみた。 Spiceweasel は Chef の cookbook のダウンロード, role/cookbook の chef server へのアップロード, ブートストラップ等をバッチ処理的に行なってくれる(もしくはコ マンドラインを出力してくれる)ツールで、自分的にイケてるなと感じたのでブログに 書いておきます。 クラウドフェデレーション的サービスというかフロントエンドサービスというか、複数 のクラウドを扱えるサービスは増えてきているけど、chef を扱えるエンジニアであれ ば、この Spiceweasel で簡単・一括デプロイ出来るので良いのではないかと。 早速だけど chef-repo にこんな yamp ファイルを用意します。 cookbooks: - apt: - nginx: roles: - base: nodes: - 172.24.17.3: run_list: role[base] options: -i ~/.ssh/testkey01 -x root -N webset01 - 172.24.17.4: run_list: role[base] options: -i ~/.ssh/testkey01 -x root -N webset02 上から説明すると… ‘apt’, ’nginx’ の cookbook を opscode レポジトリからダウンロード ‘apt’, ’nginx’ の cookbook を chef-server へアップロード roles/base....

Emacs でファイルブラウザ emacs-nav を利用

Hacker News で取り上げられていた emacs-nav を使ってみた。 http://code.google.com/p/emacs-nav/ インストール方法は簡単で % wget http://emacs-nav.googlecode.com/files/emacs-nav-20110220a.tar.gz % tar zxvf emacs-nav-20110220a.tar.gz % mv emacs-nav-20110220a ~/.emacs.d/emacs-nav して ;; emacs-nav (add-to-list 'load-path "~/.emacs.d/emacs-nav/") (require 'nav) するだけ。 見た目はこんな感じ。 起動は M-x nav と入力。ウィンドウの左にファイルブラウザが開いてファイルを選択 出来る。これだけだと、使うメリットを感じないが、面白いのがマウスで選択出来ると ころ。TextMate のブラウザのような感じだ。 今だと anything.el が便利すぎて、こちらを利用する価値を見出せるか分からないけ ど、暫く使ってみようと思う。

Mosh を使う

今週/先週?、Hacker News で取り上げられた Mosh を自宅 と会社で使い始めた。SSH 代替なソフトウェアで、SSP (State Synchronization Protocol)over UDP で動作している。MIT が開発したそうだ。 動作は、クライアントがシーケンス番号と共にデータグラムをサーバに送信し、同期し 続ける。クライアントがローミングし IP アドレスが代わる等した時、以前より大きい シーケンス番号と共に正当なパケットが送信されたとサーバが認識した場合のみ、サー バは新しいソース IP アドレスを新たなクライアントだと認識する。もちろん、この場 合のローミングは NAT 越しの IP 再アサイン時やクライアントのネットワークインター フェース切り替えやノート PC を新たな無線アクセスポイント配下へ移動した場合も同 様に動作する。めちゃ便利やん。Mosh は SSP を2経路持ち、1つはクライアントからサー バへユーザの打ったキーの同期を取る。もう一方はサーバからクライアントへで、スク リーンの状態をクライアントへ同期を取るためだ。 つまり、ノート PC やその他モバイル機器の IP アドレスが変わったとしても接続性は 担保され、また ノート PC のスリープ解除後にも接続性は確保され続ける。また、UDP で動作しているので、フルスクリーンの vim や emacs 等での再描画の遅延等も起こり にくそうだ。あと Ctrl-C 。TCP だと、キータイプがサーバプログラムに伝わらない状 況はプログラムプロセスが混雑しているとよくあるのだが、SSP over UDP での Ctrl-C はそういうことが無いそうだ。 また、認証機構は SSH に任せているので sshd は引き続き稼働させておく必要がある。 mosh は接続する先のユーザが一般ユーザ権限で動作させるプログラムでしかない。つ まり mosh daemon は必要ないようだ。...

switching screen->tmux

長年 Gnu screen 愛用者だったのだけど完全に tmux に移行しました。 愛用している iterm2 との相性も良く、好都合な点が幾つかあり移行する価値がありました。 ただ、サーバサイドでの利用は諦めました。問題だったコピペ問題をクリアしている tmux のバージョンが Debian sid から取得出来たのだけど、まだまだ完成度高くなく..。 よって、Mac に tmux をインストールして作業するようになりました。インストール方法はこれ。 予め https://github.com/mxcl/homebrew/wiki/installation に したがって homebrew をインストールする必要あり。 % brew update % brew install tmux インストールしたら .tmux.conf の作成に入る。prefix キーは C-t にしたかった。screen 時代から これを使っていて指がそう動くから。 # prefix key set-option -g prefix C-t またステータスライン周りの設定。色なども自分で選択すると良い。 # view set -g status-interval 5 set -g status-left-length 16 set -g status-right-length 50 # status set -g status-fg white set -g status-bg black set -g status-left-length 30 set -g status-left '#[fg=white,bg=black]#H#[fg=white]:#[fg=white][#S#[fg=white]][#[default]' set -g status-right '#[fg=white,bg=red,bold] [%Y-%m-%d(%a) %H:%M]#[default]' # window-status-current setw -g window-status-current-fg white setw -g window-status-current-bg red setw -g window-status-current-attr bold#,underscore # pane-active-border set -g pane-active-border-fg black set -g pane-active-border-bg blue UTF-8 有効化やキーバインド設定等は…...

github.com で octopress 構築

pages.github.com は github.com の WEB ホスティングサービスです。これを利用して octopress のブログを 構築する方法をメモしていきます。 まず、github.com に “${好きな名前}.github.com” という名前のレポジトリを github.com 上で作成します。 レポジトリの作成は普通のレポジトリ作成と同じ方法で行えます。しばらくすると “${好きな名前}.github.com のページがビルド出来ました” という内容でメールが送られてきます。 pages.github.com によると、レポジトリページで “GitHub Page” にチェックを入れろと書いてありますが、情報が古いようです。 2012/03/20 現在、この操作の必要はありませんでした。 次に octopress の環境構築。 octopress は、jekyll ベースのブログツールです。markdown 形式で記事を書くのですが、emacs や vim 等 好きなエディタを使って記事を書けるので便利です。最近 “Blogging with Emacs” なんてブログをよく目にしたと 思うのですが、まさにソレですよね。エンジニアにとっては嬉しいブログ環境です。 まずは、rvm の環境構築を。octopress は ruby 1.9.2 以上が必要なので用意するのですが rvm を使うと 手軽に用意出来るので、今回はその方法を記します。 参考 URL は http://octopress.org/docs/setup/rvm/ です。 まずは準備から。私の環境は Ubuntu Server 10.04 LTS なのですが、下記のパッケージが必用になります。 % sudo apt-get install gcc make zlib1g-dev libssl-dev 下記のコマンドを実行すると、rvm がインストールされます。...