読者です 読者をやめる 読者になる 読者になる

Ansibleの Developing Modules を和訳してみた

ちょっと訳があって、Ansibleのモジュール開発方法を解説している Developing Modules を和訳してみた。だいたいあってると思うんだけど、意図を計りかねるところもあったので、想像しながら意訳してみた。それほど外れてないと思う。 Developing Modules An…

ANSIBLE_KEEP_REMOTE_FILESをTrueにしてみよう!

Ansible Meetup in Tokyo 2014.09 (2014/09/22 19:00〜) Ansible Meetup in Tokyo 2014.09 - connpassのLT用にANSIBLE_KEEP_REMOTE_FILESをTrueにする話を書いた。 http://www.slideshare.net/h-saito/ansible-meetup-in-tokyo-201409

pudbを利用したPythonスクリプトのデバッグ

pudbについて Pythonのデバッガといえば、謹製のpdbが第一候補にあげられます。 〜 pdbの機能 本家サイト(http://docs.python.jp/2/library/pdb.html) から引用 〜 「 (条件付き)ブレークポイントの設定やソース行レベルでのシングルステップ実行、スタック…

ubuntu12.04にpipでlxmlをインストールする

わすれないようにメモ。 普通にpipでインストールを試みると... xmlversion.hが無いと叱られる... ちなみにdevelというvirtualenv環境で実施しています。 (devel)$ pip install lxml <中略> error: libxml/xmlversion.h: No such file or directory compilat…

続:クリスマスはOpenStackをPythonワンライナーで決める!

続:クリスマスはOpenStackをPythonワンライナーで決める! みなさんメリークリスマス。 OpenStackのAPIを叩いて仕事をさせる方法 OpenStackの各コンポーネントは、REST-APIを持っています。 このAPIを適切に利用することにより、novaコマンドなどを利用しな…

Ansible Quickstart書いた

12月4日 クラウドマネジメントツール勉強会 第2回(東京都)でAnsibleについて話します。 ということで、Ansible quickstartを書いてみました。 他のひとのネタとかぶらないといいなぁ

AnsibleのJUNOS設定モジュール書いてみた(VLAN編)

Ansibleのお勉強のためにJUNOS向けにNETCONFでVLANを作成・削除するモジュールを書いてみた。 動いてるけど、VC環境だとcommit syncするときにタイムアウトするかも。 Ex3300とEx2200で動作確認した。意外にちゃんとうごいて冪等性も担保できてる。 引数 sta…

novaとcinderホストにおけるmy_ip設定

novaとcinderの設定ファイルでは、my_ipというパラメータで自身のIPアドレスを指定できます。 必須パラメータというわけでもないので特に指定していなかったのですが、そのせいでちょっと残念な挙動になったのでメモ。 ■設定ファイルの値を取り込む(flags.py…

二日酔いのアナタに目の覚めるようなpythonワンライナーをお届け

CloudStackな皆さん、はじめまして。 昨日の忘年会はいかがでしたか?賑やかなタイムラインを横目に、風邪ひいてる僕はずっとコレを書いてましたよ。 それではAdventCalendarの番外編ということで、今日はCloudStack素人な僕がAPIを叩くPythonスクリプトをお…

クリスマスはOpenStackをPythonワンライナーでキメる!

みなさんメリークリスマス。 おぷ☆すた関係者のみなさんの中にはクリスマス中止のお知らせが届いている方が多いかとは思いますが、2012年のJOSUG AdventCalendarネタの最後を飾るべくPythonのワンライナーでOpenStack-APIを叩く方法を書いてみます。 ■keysto…

parallel-ssh - PSSH を使ってみる

pipやgemが利用できずにFablicやcapistranoがインストールできない環境でも利用できる並列ssh/scpコマンドがparallel-ssh。 ログイン後にsudoしてコマンドを実行するような複雑な処理はできない(みたい)だけれど初期設定程度なら必要十分な機能があります。 …

Ubuntu12.04のCobblerWebInterfaceをDjango1.4に対応させる

devstackでOpenStackの開発環境をインストールしたタイミングでうっかりDjangoが1.4になってしまった...その影響でCobblerWebInterfaceが動かなくなってしまったので、ちょいちょい修正してDjango1.4に対応させたときのメモ。 CSRF対策関連が変更されている…

東京電力電力供給状況APIを使わせてもらう

有志の方が提供してくれている、東京電力電力供給状況APIを使ってみる。 ワンライナーでこんな感じ。提供ありがとうございます。 戻り値はjson形式です。 $ python -c "import json,urllib2;r=json.loads(urllib2.urlopen('http://tepco-usage-api.appspot.c…

libvirt-0.8.8をコンパイルしたときのメモ

libvirtをosxでコンパイルするには、いろいろと準備が必要。 依存関係的には、こんな感じ。 libvirt ----- GnuTLS --+-- libgpg-error | +-- libgcrypt必要なライブラリ類のバージョンは以下の通り。 ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-…

Pythonのsyslogモジュールを使ってsyslogd経由でログ出力してみる。

手順としては、 syslogモジュールをimport syslog.openlog()でプログラム名,Option,Facilityを設定し、syslogdに接続開始 syslog.syslog()でログレベルを設定してメッセージを出力 syslog.closelog()でsyslogdとの接続終了 python-2.6.4のコードを見ると、 s…

ひょんなことから、emailアドレスのフォーマットが正しいかどうかをチェックするスクリプトを書くはめになった。

正規表現を考えてみたけど、こんな感じかしら。 import reclass Validation: def email(self, argv): msg = '^\w[\w\.\-\_]*[^\.]@\w[\w\-]*(\.[\w\-]{1,})+[^\.]$' regex = re.compile(msg) if regex.match(argv): return True return False

とあるプログラムのテストコードをpickleを使って表現しようと思ったんだけれども、どうも手書きでデータ構造を生成するのは大変そう。しかたがないのでYAMLにしてみた。

YAMLパーサはモジュールを別途インストールしないといけないの...電池付属のPythonの付属の電池だけでなんとかしたかった... PythonのYAMLパーサとしてはPyYAMLとPySyckが主流(なのか?)みたい。 どちらを使うか PyYAML is the next generation YAML parser a…

あらかじめファイルに保存しておいたpickle化済みデータを読み込んでみる。

$ python >>> import pickle >>> fp = open('dict.txt','r') >>> x = pickle.load(fp) >>> print x {'mem': '4GB', 'os': 'Snow Leopard', 'name': 'MacBook Pro', 'cpu': 'Core2 Duo'} >>> fp.close() >>> 実際にどんな内容が書かれているかというと... $ c…

Pythonライブラリリファレンスによると、pickleモジュールを使うとPythonのオブジェクト階層をバイトストリームに変換(pickle化)したり、バイトストリームをオブジェクト階層に変換(unpickle化)したりできるらしい。

バイトストリームにしてしまえば、それをファイルに保存したり、逆にファイルからそのバイトストリームデータを読み込んでオブジェクトに変換することも可能ってことね。 テスト用のデータ構造とかを生成できると楽かなぁと思って使ってみようと思ったけれど…

Pythonのyieldを使ってフィボナッチ数列を表現してみるメモ

Pythonでは関数定義の中にyield文があると、その関数はジェレネレータ関数となる(らしい)。フィボナッチ数列を10項表示してみるとこんな感じ。 $ python >>> def fib(): ... x, y = 0, 1 ... while True: ... yield x ... x, y = y, x + y ... >>> z = fib()…