JUL
25

“The Martian”観たい

Published:2015-07-25 01:31:22 UTC

“The Martian”が面白そう。原作は同名小説(邦題は「火星の人」)で、事故で火星に取り残された宇宙飛行士が、火星でサバイバルしながら何とか地球とコンタクトを取り、救出を待つ、というもの。主演がマット・デイモンで他の星に取り残された宇宙飛行士という設定は「インターステラー」を思い起こしてしまうが、さてはて。

 

ACT-SBY構成を組む場合、リソースの調停にpacemaker/corosyncを使う場合が多いと思いますが、リソースが何らかの原因でフェールオーバーした場合にメールで通知を受けたい場合、どう実装するのが良いのかこの間悩んだ際のメモ。

ネット上で良く紹介されている方法として、MailTo ocfリソースを作り、監視したいリソースと同一ノードで動作するようcolocation設定をするというものがありますが、MailTo ocfリソースはstart、stopイベントに反応して常にメールを送信するため、計画メンテナンス時に非監視設定にし、アラートメールを飛ばさないように設定するということが出来ない(MailToリソースを通常の手順でstopさせた場合もアラートメールが発報されてしまう)問題があります。

 

CRMリソース設定

primitive mailto ocf:heartbeat:MailTo \
   params \
      email=<your mail address> \
   op monitor \
      depth="0" timeout="10s" interval="10s"

 

何か別に良い方法がないかと探していたところ見つけたのが、以下のcrm_monコマンドを使用する方法。

crm_monコマンドには–mail-toオプションがあり、リソースがフェールオーバーしたときにアラートメールを送信してくれます。こちらをUpstartでサービスとして動作させることで、監視を有効化しておきたい時だけサービスを立ち上げ、監視を無効化したいときはサービスを停止することで対応できました。

 

/etc/init/pacemaker-monitor

# pacemaker-monitor
#
# pacemakerを監視し、failoverが発生した場合はアラートを発報します

description     "pacemaker-monitor"

start on filesystem or runlevel [2345]
stop on runlevel [!2345]

respawn
respawn limit 10 5
umask 022

console none

exec crm_mon --mail-host=<mail host>:<mail host port> --mail-to=<your mail address> --mail-prefix="<your mail prefix>"

何かの参考になれば。

JUL
24

YAMAHA RTX1200買いました

Published:2015-07-24 23:20:55 UTC

YAMAHA RTX1200を中古で買いました。L2TP/IPsecでのリモートアクセスVPNに対応した物理ルータが2万円台で手に入るとは良い時代です。設定もGUIで大半が済ませられるのが手軽で良いですね。CUIは、シリアルケーブルとしてメス-メスのクロスケーブルが必要でかつ文字コードがShift-JISなのが少し面倒です。Ciscoケーブルが使えれば良かったのですが。

ともあれ、手軽で良いルータです。人気の商品は、それだけの理由がありますね。

VS14 CTP環境のRoslynでMSBuildWorkspace.Create();を実行すると、Microsoft.Buildのアセンブリが見つからないというエラーが発生し、Workspace APIが使えないという問題ですが、Microsoft Build Tools 2013をインストールすると解決するようです。

roslyn.codeplex.com/workitem/218

yum install pyliblzma

するとよい。
cobblerでepel7 betaのレポジトリのsyncをしようとしてハマった。

2014-05-28 12:33:56,782 DEBUG [kvm.storage.KVMStorageProcessor] (agentRequest-Handler-1:null) Copying template to primary storage, template format is qcow2
2014-05-28 12:33:56,798 DEBUG [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) copyPhysicalDisk: disk size:305463296, virtualsize:305459200 format:qcow2
2014-05-28 12:33:56,798 DEBUG [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) <volume>
<name>87d6232c-e681-11e3-b200-000c294946bd</name>
<capacity>305459200</capacity>
<target>
<format type='qcow2'/>
<permissions><mode>0744</mode></permissions></target>
</volume>

2014-05-28 12:33:56,848 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Executing: qemu-img info /mnt/7bd7a6e6-33b1-3314-a8e2-67d6de51e7a7/427295ce-95c1-4360-9c1d-c2de11a6cdca.qcow2
2014-05-28 12:33:56,859 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Exit value is 1
2014-05-28 12:33:56,860 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) 'image' uses a qcow2 feature which is not supported by this qemu version: QCOW version 3Could not open '/mnt/7bd7a6e6-33b1-3314-a8e2-67d6de51e7a7/427295ce-95c1-4360-9c1d-c2de11a6cdca.qcow2': Operation not supported

ビルドした環境のqemu-imgのバージョンと、systemvmが稼動するKVM hostのqemuのバージョンがずれていると、qcow2イメージが読めずに起動しない場合があります。

APR
18

_images/acslogo.pngApache CloudStackのCommitterになりました。CloudStackのKVMサポート周りへパッチを投げてきたことが評価されたのでしょうか。CloudStackの開発への参加を通じて、OSS開発のワークフローや、大規模ソフトウェアのアーキテクチャ設計など、それぞれのメリット・デメリット含めて、多くのことを学ぶことが出来ました。まだまだ力不足感は否めませんが、これからも時間を見つけてApache CloudStackコミュニティへの貢献を続けることで、その発展の一助になれればと思います。

APR
4

Roslyn build preview公開

Published:2014-04-04 15:57:20 UTC

BUILD 2014のKeynoteの場で、C# CompilerのC#再実装であるRoslynの最新プレビュー版が公開されましたね。合わせて、RoslynのApache License 2.0でのOSS化も発表され、.NET界隈にとって、エポックメイキングな発表でした。これで、Mono(やXamarin)はランタイムやOSS化されていないライブラリの開発に注力すればよいことになり、Windows以外でのC#利用も促進されそうです。

ざっとRoslynのドキュメントに目を通した限りでは、以前のCTPから大きく追加されたAPIなどは見当たらず(Scripting機能とかどうなっているのでしょう)、むしろC#の言語機能の細かい強化に注力していたのでしょうか。新しい言語機能については、SDKに添付のUpcoming Features in C#というドキュメントが詳しく、さっそく.NET Compiler Platform (Roslyn) Preview | ++C++; // 未確認飛行 C ブログ: で解説がされています。

ドキュメントを読んでいて個人的に気になったのが、FAQのCan I rewrite source code within the compiler pipeline? という項目で、残念ながら、コンパイラパイプラインの途中でフックして動作に介入することは出来ないようです。Roslynが最初に発表された時の謳い文句として、モノシリックなこれまでのコンパイラのパイプラインをコンポーネントごとに分割してユーザーに開放する、というのがあったように記憶しているのですが、やはりパフォーマンスの要件的にパイプラインの途中への介入は実現できなかったのでしょうか。属性でのマークアップベースのDSLからコンパイル時にメモリ上のSyntaxを書き換えるようなものを作りたいと考えていたので、少し残念です。MSBuildでpre-buildのターゲットとしてcsc.exeにコードが渡る前にコードを書き換える方法が代替手段として提示されていますが、その場合だとコードを書き換えた結果をファイルに書き出すことになり、コードの再編集が必要になった時に使いづらいDSLになってしまうのが懸念点です。

なんにせよ、C#が着実に前に進んでいることが感じられるKeynoteでした。より詳細が解説された各セッションのスライド、ビデオの公開が待ち遠しいですね。

APR
4

OneGet

Published:2014-04-04 15:09:58 UTC

OneGetという、Microsoft公式のパッケージマネージャが公開されたようです。Windows Serverにとって地味にインパクト大な新ツールになりそうですね。ようやくか、という気もします。プラガブルな構造をとっており、裏の実装はプラグインという形で差し替えられるようです。現在は、Chocolateyを利用するためのプラグインが提供されているようですが、Chocolateyはその提供されているパッケージの信頼性を担保するための仕組みが十分に機能しているとは言えないので、Microsoft公式でパッケージの提供元を認証したレポジトリが欲しいものです。逆にそういった信頼性を担保するための仕組みがないと、Chocolatey同様、利用は厳しいですね。

前回のエントリでは、Marvinを用いて、CloudStackの結合テストを実行する方法について解説しました。その際、テストの実行環境としてUbuntuを使用しましたが、普段自分はWindows上のIntelliJ IDEA Community Editionを使ってCloudStackのコードを開発している為、テストコードの開発、実行環境も出来ればWindowsに揃えたいところです。このエントリでは、Marvinのテストコード開発環境をPyCharmを使ってWindows上に構築した際の手順を解説します。

ツールのインストール

PyCharm

image

IntelliJ(のCommunity Edition)は、Java開発用のIDEですが、IntelliJから派生したPython開発用のIDEとして、PyCharmというものがあります。このPyCharm、IntelliJと同じく、Community Editionとしてフリー版が用意されており、今回はこれを利用してMarvinのテストを記述する方法を解説していきます。

http://www.jetbrains.com/pycharm/ からダウンロードできます。

Java

PyCharmの実行は、Javaが必要であり、また、後半の手順で、Marvinをコンパイルする際にも必要になるので、インストールしましょう。

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html からダウンロードできます。

インストールが出来たら、忘れずにPATHを通しておきましょう。

MinGW

後半の手順で、MarvinをMavenでコンパイルする際に、bashが必要になります。MinGWなどをインストールしましょう。

http://www.mingw.org/ からダウンロードできます。

Python for Windows

PyCharmは、あくまでもIDEであり、Pythonの実行環境は提供しません。Python for windowsを別途インストールしましょう。

http://www.python.org/downloads/ からダウンロードできます。

インストールが出来たら、忘れずにPATHを通しておきましょう。

setuptools、pip

Pythonのパッケージ管理システムのsetuptools、pipをインストールしましょう。setuptoolsをセットアップするためのPythonスクリプトが配布されていますので、ダウンロードの上実行し、setuptoolsがパッケージを配置するC:\Python27\ScriptsにPATHを通した上でeasy_installコマンドからpipをインストールしましょう。

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py

# ここでC:\Python27\ScriptsをPATHに設定

easy_install pip

Marvinが依存する外部ライブラリ

続いてはMarvinが依存する外部ライブラリです。mysql-connector-pythonと、pycryptoが必要ですので、それぞれインストールしましょう。

http://dev.mysql.com/downloads/connector/python/

http://www.voidspace.org.uk/python/modules.shtml#pycrypto

Marvin

そして本命のMarvinのインストールです。こちらは、Mavenでビルドしてパッケージを作成し、それを先ほどインストールしたpipでインストールするという流れになります。

まずは、CloudStackの開発に使用しているIntelliJで、MavinをMavenでビルドし、パッケージを作成しましょう。(IntelliJによるCloudStackの開発環境の構築は、CloudStack開発ことはじめ (1)開発環境のセットアップ –IntelliJ IDEA Community Editionのススメ -をご覧ください。)

image

作成されたパッケージは、tools/marvin/distディレクトリ以下に配置されます。

以下のように、pipコマンドでインストールを行いましょう。インストールを行うと、依存するパッケージ(nosetests)なども同時にインストールされます。

pip install tools/marvin/dist/Marvin-0.1.0.zip

以上で、一連のインストールは完了です。

PyCharmのセットアップ

プロジェクトの作成

続いて、PyCharmのセットアップを進めていきましょう。まずは、CloudStackのPyCharmプロジェクトの作成です。IntelliJでCloudStackの開発をする際に使用しているプロジェクトをそのまま使いたいところですが、使用しようとするとプロジェクトファイルが競合してしまいます。仕方がないので、別のディレクトリにレポジトリをクローンしてそのレポジトリをインポートする形で別のプロジェクトとして開発を進めましょう。

git clone https://github.com/apache/cloudstack.git cloudstack_py

プロジェクトのテストランナーの変更

CloudStackの結合テストは、nosetestsで書かれていますので、PyCharmで結合テストを実行するには、プロジェクトのテストランナー設定を変更する必要があります。
ProjectのSettingsダイアログを開き、Python Integrated Tools->Default test runnerと項目を辿り、”Notestests”に設定しましょう。

image

テストコード実行時のパラメータの変更

続いて、nosetestsのオプションのデフォルトパラメータの変更を行い、nosetestsにmarvinプラグイン、marvinのconfigが読み込まれるようにしましょう。

--with-marvin --marvin-config=<MarvinのConfigへのパス> --load

 

テストの実行

テストの実行は、テストコードのコンテキストメニューから開始できます。
image

 

PyCharmに統合されたテストランナーの表示

テスト結果は、PyCharmに統合されたテストランナーが進捗含めわかりやすく表示してくれます。
image

PyCharmでのデバッグ実行

続いては、デバッグ実行です。ブレークポイントを打ち、デバッグ実行することで、コードの実行を任意の箇所で止めながらデバッグすることが可能です。

image
勿論、操作感は、IntelliJやRubyMineと同じです。その場で書いたコードを現在のコンテキストで評価する、Expression Evaluationウィンドウも健在です。いいですね。

以上、PyCharmでMarvinによるCloudStackのテストコードをデバッグする方法の紹介でした。今回のエントリが、テストコード開発を始めるきっかけになれば幸いです。

 

 

なお、自分は触ったことはないですが、Windows上で動作するPython IDEのもう一つの選択肢として、Python Tools for Visual StudioというIDEもあります。Visual Studioというとお高そうなイメージがありますが、こちらは無償です。PyCharmと比較すると、nosetestsのテストランナーが統合されてない点は劣りますが、一方でPyCharm Community Editionでは提供されていない、リモートデバッグ機能があるなど、優れた点もあります。こちらも、検討してみると面白いかもしれません。
image