2013年12月24日火曜日

続:イブの夜はIaaSをCommon Lispでキめる!


このエントリーをはてなブックマークに追加


2つのアドベントカレンダーの合同ネタです。

OpenStack Advent Calendar 2013 JP
Wakame Users Group Advent Calendar 2013

Common Lispの基礎に関しては2012年の OpenStack Advent Calendar 2012 JP 12/24 イヴの夜はOpenStackをCommon Lispでキメる!をご覧ください。

Common Lispを使って、OpenStackとWakame-VDCの操作を行いながら、Lispの世界を見ていきましょう。



2013年12月15日日曜日

世の中の Common Lisp OpenStack Clients を眺めてみる


このエントリーをはてなブックマークに追加


タイトルの通りです。気になったので調べて見ます。

github で 「openstack common lisp」で検索してみたところ・・・

2013/12/15


4つのリポジトリが見つかりました。


russell/cl-openstack

 とてもシンプルな実装でnovaに対して最低限の操作が実装されています。マクロを活用して実装されておりLISPっぽいつくりです。行数も少ないので、入門として読むのに適していると思います。


novaを操作するための関数をマクロによって定義しています。
(defmacro nova-call (name args documentation lambda-list &body body)
  (let ((documentation (if (stringp documentation) documentation "")))
    (destructuring-bind (&key url content (method :get)) lambda-list
      `(defun ,name ,args
         ,documentation
         (assert *token*)
         (assert *service-catalog*)
         (let* ((service-url (car (service-catalog-query "compute")))
                (url (merge-uris ,url service-url)))
           (let ((data (restart-case
                           (rpc-call url ,method ,content)
                         (retry ()
                           :report "Retry Openstack Call."
                           (rpc-call url ,method ,content)))))
                 ,@body))))))


stackforge/cl-openstack-client

 こちらも機能としてはシンプルですが、CLOSを活用した実装がなされています。

(defclass resource ()
  ((id :initarg :id
       :reader resource-id)
   (connection :initarg :connection
               :reader resource-connection)
   (attributes :initform (make-hash-table))))

(defmethod resource-error-class ((resource resource))
  'openstack-error)

(defmethod print-object ((resource resource) stream)
  (if (slot-boundp resource 'id)
      (print-unreadable-object (resource stream :type t :identity t)
        (format stream "~A" (resource-id resource)))
      (print-unreadable-object (resource stream :type t :identity t))))

(defmethod decode-resource (resource parent type)
  ;; TODO (RS) currently extra keys are just ignored in all resources,
  ;; it would be best if they were saved somewhere.
  (apply #'make-instance
         type
         :connection (resource-connection parent)
         :parent parent
         (concatenate 'list
                      (alist-plist resource)
                      '(:allow-other-keys t))))

(defmethod decode-resource-list (resources parent type)
  (loop :for resource :in resources
        :collect (decode-resource resource parent type)))

(defgeneric resource-authentication-headers (resource)
  (:documentation "Return a list of the authentication headers that
  should be added to the request."))


AeroNotix/cl-stack

 こちらは先の二つと違い、Novaではなくオブジェクトストアに対する基本的なファイルアップロードを実装しているようです。

(defmethod upload-file ((client openstack-client) (filename string)
                        &key (container "/testainer") (content-type "application/text") headers)
  "Upload file will upload `filename' into the ObjectStore."
  (let* ((url (format nil "~a~a~a/~a"
                      *computeurl*
                      (slot-value client 'tenantid)
                      container
                      (pathname-name filename)))
         (md5-hash (md5-digest-file filename)))
    (base-request url :PUT
                  :content-type content-type
                  :content (pathname filename)
                  :headers (base-headers client headers)
                  :after-request #'(lambda (request)
                                     (let* ((recvdheaders (nth 2 request))
                                            (etag (cdr (assoc :ETAG recvdheaders))))
                                       (string= etag md5-hash))))))

irixjp/cl-openstackclients

 どっかでみたリポジトリですね。全然できていませんXD




この4つを眺めてみましたが、実装としてはどれも実験的、といった印象です。

Lispっぽい使い方をOpenStack上で実装しているものや、アイデアのある方はぜひ教えてください。


2013年12月9日月曜日

OpenStack Tips with Emacs


このエントリーをはてなブックマークに追加


OpenStack Advent Calendar 2013 JPネタ

OpenStackに関する作業をしているとReST APIを直接コールする事がよくあります。

ReSTを操作するにはたくさんのツールがありますが、一番イケてるのはEmacsから操作する方法です(妄想
ちなみにイケてない人は curl -X POST とかしたりします(大嘘


ということで、Emacs用のReSTクライアントを紹介します。
https://github.com/pashky/restclient.el


利用方法は簡単で、git clone して得られる el ファイルを load-path の通ったパスへ配置します。

その後は、
(require 'restclient)
と、ロードして、
M-x restclinet-mode
で restclinet-mode へ移行出来ます。


■使用方法
シンプルです。リクエストした内容をバッファに書いて、C-c C-c とするだけです。
使用感はこんな感じです。

■便利な設定
popwin.el と連携して出力結果ウインドを制御してやると使い勝手が向上します。

popwinの詳細はこちら。
http://aikotobaha.blogspot.jp/2013/04/popwinel.html

popwinの設定に以下を追加しておきます。
(push '("*HTTP Response*") popwin:special-display-config)


■mailcap-parse-mailcaps がねえよ的なエラー
使ってるEmacsのバージョンや、導入しているelファイルによっては、mailcap-parse-mailcaps に関するエラーが出ることがあります。
【参考】http://d.hatena.ne.jp/rubikitch/20080124/1201180306

エラー例
Symbol's function definition is void: mailcap-parse-mailcaps

ほとんどの場合はFLIMを使ってる場合に出ます。
flim の mailcap.el はもう使われていないので最新版に変更した上で削除するか、(require 'restclient) する直前に (load "c:/gnupack/app/emacs/emacs/lisp/gnus/mailcap.el") としてEmacsが標準で持っている mailcap.el をロードさせてやると回避できます。


2013年12月8日日曜日

書評:独習Linux専科(中井悦司 著)


このエントリーをはてなブックマークに追加


献本いただきました。ありがとうございます(下書きにしたまま公開を忘れてました、すみません。

「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 (Software Design plus)



著者の中井さんは「10年シリーズ」「プロのためのLinuxシステム」の著者でもあり、こちらも大変有益な本です。

本書は前2シリーズに比べるとライトな内容に仕上がっています。これからLinuxを始めたい若手のエンジニアや、今までネットワーク中心やってきたエンジニア、もしくはアプリ開発を中心やってきたけど、これからLinuxを覚えたい、といった方々に向けて書かれている本です。原理原則を中心としてなぜ?なぜ?と解説している前2シリーズに比べると、実際の動作に着眼して操作と設定に基づく解説がなされているため、システムがイメージしやすく入門書としては最適かと思います。

本書を4章までを実際に操作しながら読み進めると、Linuxを使った基礎的なシステム構築できるようになれると思います。ここからさらなるスキルアップを目指したい方は「10年シリーズ」「プロのためのLinuxシステム」へとステップアップしていく事で、体系的にLinuxのについて学習していくことができる、といった具合です。

また本書で学習し、RedHat社が提供する認定プログラムの基礎コースであるRHSCや、LPICに挑戦するのも良い選択だと思います。

5章ではLinux/計算機の基礎的な動作原理にも触れており、文系の方でSEをやられている方にはこの章は良い参考資料です。

ぜひとも本書を入り口にして、Linuxシステムの世界へ入門してみてください。



【補足】
本書のおいて sl コマンドを「ジョークコマンド」として紹介していますが、実はどんでもない誤解(え!?)です。
稼働中の仮想環境をライブマイグレーション or ストレージマイグレーション するようなデモを実施する際にコンソールに sl コマンドをループで走らせておくと、「ほらオンラインで切り替わりますよね?」とドヤ顔するのに最適です。実に実用的なコマンドですね。

参考:「信頼と実績の sl コマンドでインパクトのあるデモシナリオを構築する @LightningX(嘘 」


2013年7月10日水曜日

chef/ohai 特定インターフェースのアドレスを取得する


このエントリーをはてなブックマークに追加


サーバAのeth1のアドレスを取ってきて、設定ファイルに突っ込みたい。
サーバBのeth2のアドレスを取ってきて、テストに使いたい。

って時に、特定NICのアドレスが欲しくなる。
OhaiのJSONがこんな感じで返ってくるので、Rubyを知らないとどうやって取るのか悩んでしまったのでメモ。



2013年7月7日日曜日

serverspec/ohai の RPM を作成


このエントリーをはてなブックマークに追加


バージョン管理する上で RPM で一元化しておくのはとても便利です。
CentOS6.4 で作業します。



2013年7月4日木曜日

Fedora19 リリース


このエントリーをはてなブックマークに追加


いろいろあったF18も終わり、いよいよF19がリリースされました。

気になるリリース項目としては・・・

・MariaDB
・OpenShift Origin が利用可能
・OpenStack Grizzly が利用可能
・open-vm-tools(VMware Toolsのオープン版)が利用可能
・livirt/kvm のブロックストレージマイグレーション対応
・Yum 対応の LVM スナップショット

などなど。リリースノートはこちら

参考までにインストール画面を紹介。


2013年6月29日土曜日

Availability Zone と Host Aggregate


このエントリーをはてなブックマークに追加


OpenStackユーザ会 第13回勉強会で話したネタです。


この中で説明している nova-schduler の補足はこちら。
http://aikotobaha.blogspot.jp/2013/06/nova-scheduler-in-openstack-grizzly.html


2013年6月28日金曜日

nova-scheduler in OpenStack Grizzly


このエントリーをはてなブックマークに追加


Novaにおいて資源配分を司る、APIと並んで最も重要なコンポーネントになります。
Havanaではスケジューラー周りにかなり手が入るようなので、あくまでGrizzlyまでの情報です。

全ての機能を試したわけではないので、間違いがある可能性もあります。



2013年6月18日火曜日

リモートホストの virt-manager をssh X11Forwarding経由で利用する(CentOS6)


このエントリーをはてなブックマークに追加


Basicインストールしたリモートの検証環境等で、KVMをX11Forwardingしたvirt-managerで操作したい時に。
(直通できるなら、 ローカルで起動した virt-manager の接続設定からsshで指定して終わり)

virtinstでいちいちオプションを思い出しながらやるのも面倒なので。。。



2013年4月12日金曜日

Use full functions of OpenStack Grizzly with devstack


このエントリーをはてなブックマークに追加


Devstackを使ってOpenStack Grizzlyのフル機能を使ってみます。

Grizzlyリリースの情報は以下から入手できます。

サマリ:http://www.slideshare.net/yosshy/openstack-grizzly-release-18354936
原文:https://wiki.openstack.org/wiki/ReleaseNotes/Grizzly
日本語訳:http://openstack.jp/news/20130405.html



2013年4月2日火曜日

popwin.el が本当に便利。今まで使わなかった事を後悔するレベル。


このエントリーをはてなブックマークに追加


Emacsを使っていると、コマンド補完候補表示ウインドの *Completions* 等が別ウインドで表示されることがあります。これはこれで便利なのですが、問題はその開く場所と閉じるときの挙動です。

上下に2分割(C-x 2)していると下のウインドを切り替えてバッファを表示して、閉じる時にウインドごと閉じてしまい、また C-x 2 するはめになったりすることがよくあります。

このアクションを起こした際に起こるウインドとバッファの切り替えを制御してくれるのが、popwin.el です。地味な機能ですが、使ってみると手放せなくなります。本当に便利です。



2013年3月23日土曜日

実行中 Common Lisp アプリのホットディプロイ


このエントリーをはてなブックマークに追加


Practical Common Lisp の一節にこんな文章があります。

2. Lather, Rinse, Repeat: A Tour of the REPL



Dropbox: Unable to monitor filesystem


このエントリーをはてなブックマークに追加


Linux の Dropbox で表示される警告。

Unable to monitor filesystem Please run: echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches and restart Dropbox to correct the problem.

これはDropboxにファイルを突っ込みすぎてる状態。



2013年2月28日木曜日

WindowsでProxy認証を中継する「HttpProxyAuth」


このエントリーをはてなブックマークに追加


「HttpProxyAuth」http://homepage2.nifty.com/nonnon/Download/HttpProxyAuth/index.html

Windows上でCygwin(gnupack)や、Emacsを使う時に便利。
認証付きProxyを通過できないツール類のおともに。

usage
HttpProxyAuth.exe "user:pass@ProxyName:Port" [MyPort] [DspY_N]

    user :認証プロキシのユーザID (必須)
    pass :認証プロキシのパスワード (必須)
    ProxyName:認証プロキシサーバ名 (必須)
    Port :認証プロキシポート番号 (必須)
    MyPort :本中継ツールのポート番号 (省略値=8080)
    DspY_N :中継した通信データの表示有無(省略値=0)※表示する場合は1を指定


2013年2月27日水曜日

Software Design 2013年3月号に記事を書きました。


このエントリーをはてなブックマークに追加





第1特集
オープン環境でスキルアップ!
もっとクラウドを活用してみませんか?
OpenStack,CloudStack,Cloud Foundry,Scalr,Eucalyptus

Part1:OpenStack
OpenStackでクラウドサービスを始めるには
← これを書きました。

Part2:CloudStack
CloudStackを試してみませんか?

Part3:Cloud Foundry
Cloud Foundryの簡単デプロイがお勧め!

Part4:Scalr
マルチクラウド管理ツール「Scalr」入門

Part5:Eucalyptus
それでもEucalyptusをお勧めしたい理由


2013年2月26日火曜日

OpenStack Folsom with Hyper-V


このエントリーをはてなブックマークに追加



ハイパーバイザーにMS Hyper-Vを使うお話。



2013年1月28日月曜日

Kindle化してほしい本 Lisp編


このエントリーをはてなブックマークに追加


気がつくたびに「Kindle化リクエスト」ボタンを押してます。

実践Common Lisp

[kindle化をリクエスト]


実用 Common Lisp (IT Architects’Archive CLASSIC MODER)

[kindle化をリクエスト]


On Lisp

[kindle化をリクエスト]


LET OVER LAMBDA Edition 1.0

[kindle化をリクエスト]


素数夜曲: 女王陛下のLISP

[kindle化をリクエスト]


計算機プログラムの構造と解釈

[kindle化をリクエスト]


ANSI Common Lisp (スタンダードテキスト)

[kindle化をリクエスト]


設定メモ Fedora18 on x121e


このエントリーをはてなブックマークに追加


FedupしたF18環境がいまいちだったので、クリーンインストールしなおした。

再設定時にF17から変わってることもあったのでメモ。



2013年1月23日水曜日

Update Fedora 17 → 18 wtih Fedup


このエントリーをはてなブックマークに追加


Fedora18へのアップグレードを行ってみる。1時間弱くらい必要。
元々の環境はF16 → F17 とアップデートした環境。

事前準備
$ sudo yum install fedup
$ sudo yum update -y
$ sudo yum clean all
$ sudo reboot

アップグレードの準備。このコマンドで必要なパッケージ類がローカルにDLされる。
$ sudo fedup-cli --network 18 --debuglog fedupdebug.log

setting up system for upgrade
Finished. Reboot to start upgrade.
NOTE: Some repos could not be contacted: Dropbox
If you start the upgrade now, packages from these repos will not be installed.

再起動後、grub menu の「System update」を選択するとアップグレード開始

特にエラーなく無事アップデートは終了。


$ sudo yum check
いくつかのパッケージが依存関係の解決に失敗しているが、これはリカバリ可能。


しかし他にfc17で残ったパッケージにかなりコアなものが含まれてるのでこのまま使うかは微妙。。。


2013年1月22日火曜日

x121e bios update from 1.16 to 1.17 on Fedora without Optical Drive


このエントリーをはてなブックマークに追加


biosのニューバージョンが出てましたのでFedora17上で、かつ光学ドライブを使わずにアップデートしてみます。

基本的には前と同じ。
x121e bios update on Fedora16 without optical drives



Fedora15以降の70-persistent-net.rules


このエントリーをはてなブックマークに追加


Fedora15以降、70-persistent-net.rules は生成されなくなっている。

元々、このファイルを作っていた /lib/udev/write_net_rules がなくなったのが原因。

でも自分でこのファイルを作ってやれば、今まで通り起動時に適当なIF名を定義できるようになる。

# vim /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:f0:a8:17", ATTR{type}=="1", KERNEL=="eth*", NAME="internal0"


Fedora15, 16, 17,18 で ethX 命名形式のNICを使う


このエントリーをはてなブックマークに追加


Fedora15以降からNICの命名規則に biosdevname という形式が使われるようになっています。

・オンボードNICはemX (Xはポート番号)

・PCIカード上のpXpY (Xはスロット番号、Yはポート番号)

という感じで命名されます。
昔ながらのethX形式にしたい場合は、カーネルの起動オプションに biosdevname=0 を追記します。


grub2の場合は起動オプションの与え方が少し変わっています。

# vim /etc/default/grub
-------------------------
GRUB_CMDLINE_LINUX="xxxxx biosdevname=0"
-------------------------


編集したらgrub.cfgを生成します。
# grub2-mkconfig -o /boot/grub2/grub.cfg

# reboot

これで従来通りのデバイス名になります。


2013年1月20日日曜日

DoSされてみた


このエントリーをはてなブックマークに追加


VPSで立ててるEtherpadのレスポンスがやけに悪いなあ・・・と思ったらDoS受けてました。



2013年1月11日金曜日

htpasswd 8文字以上のパスワード


このエントリーをはてなブックマークに追加


すぐ忘れるのでメモ。-m をつけないと8文字までしか使われない。

# htpasswd -m /etc/httpd/htpasswd username


2013年1月4日金曜日

KVM:イメージ保存先へ NFS を利用可能にする。


このエントリーをはてなブックマークに追加


KVMでイメージ置き場にNFSを利用する場合、SELinuxで以下の設定が必要になる。

# getsebool virt_use_nfs
virt_use_nfs --> off ・・・オフがデフォルト

オンに設定する。
# setsebool -P virt_use_nfs on

確認
# getsebool virt_use_nfs
virt_use_nfs --> on


2013年1月1日火曜日

Fedora17 + NVIDIA


このエントリーをはてなブックマークに追加


新年最初のエントリー

自宅PCを今までWinで使ってきた・・・が、ほとんどiTunesのためのようなものだった。最近はiOSのバージョンアップに伴い、ほとんどの事がiOS側でできるようになってきたので、メインマシンもLinuxへ移行していく。

で、メインマシンはNVIDIAのGPUを搭載したグラフィックボードを使っているが、Fedoraが標準で持っている、xorg-x11-drv-nouveau はいまいちパフォーマンスがよろしくない。X上でウインドサイズを変えたりするとモッサリ感があったので、ちゃんとしたドライバへ変更して、パフォーマンスの向上を狙ってみる。