ラベル OpenStack の投稿を表示しています。 すべての投稿を表示
ラベル OpenStack の投稿を表示しています。 すべての投稿を表示


2016年9月26日月曜日

[改訂新版]プロのためのLinuxシステム構築・運用技術 (Software Design plus)


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




@enakai00 さんが5年前に執筆された書籍の改訂版です。
現在主流のRHEL7系向けに書き直されています。

なんとなく仕事や趣味でLinuxを使っている人が、「プロ」と呼ばれるレベルに到達するために押さえておくべきポイントを実際の操作例や著者の体験を通した業務の経験をもとに解説されています。

章構成は こちら から確認できます。

クラウドやコンテナの活用に伴い、インフラエンジニアだけでなくアプリエンジニアもLinuxに触れる機会が増えています。
普段なんとなく使っているLinuxを深掘りして学習することは、クラウドやコンテナを一歩進んで活用するためにも役立ちます。

ちなみに、この本の内容は @enakai00 さんと私が担当している こちらこちら の講義に大部分が組み込まれています(改定前の内容です

講義は OpenStack を題材にしたクラウド基盤の基礎コースですが、クラウドの裏側を理解するにはLinuxの知識が必要不可欠であるためです。
仕事でOpenStack等のクラウドの裏側に触れる機会のある方にもこの本の内容は有益(むしろ必須)です。

電子版もあります。


2016年6月26日日曜日

OpenStack/Heatによるオーケストレーション入門


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


OpenStackユーザ会の第28回勉強会のネタです。


前回の完全版のネタになります。このネタは私が大学で担当している講義資料から抜粋しています(ほとんどそのまま

演習つきなので、興味があれば以下を見ながら試してみてください。
https://etherpad.openstack.org/p/r.16d9199da6f662084a2362e58d6d18e5


今回の勉強会の中で、実環境でHeatを使う際のいくつかの注意事項を述べたのでまとめておきます。

Heat「だけ」で全部やらない

これにつきます。
HeatはOpenStack上のリソースを配置、操作するだけならば他のツールに比べても優れています。記法はシンプルで操作方法もかなり単純です。しかし、OpenStackの外にあるものや、OpenStack上に作成されたインスタンス中を操作しようとすると途端に難易度が上がってきます(頑張ればできなくはない)

一昔前であれば、学習コスト等を謳い文句にして、1つのツールを徹底的に使いこなして細かな末端までカバーするのが良い、という宣伝がされていましたが、現在はこういうアプローチはあまりされません。
そのツールが得意なことだけをそのツールにやらせて、足りない部分はそこが得意な別のツールでカバーする、「ツールチェイン」のアプローチが一般的になってきています。

例えばOpenStack上のリソースを作成するのにはHeatを使い、作成されたインスタンスの設定はAnsibleで行う、といったようなやり方です。
Ansibleは汎用的な環境化で手順を自動化することが可能ですので、OpenStack上のリソースを作成して、そのリソースの起動を保証するといった事も出来なくはないのですが、やや複雑なプレイブックを書く必要が出てきます。
そこで、得意なリソースの作成と保証の部分をHeatにまかせて、Heatが作成したスタックの外部出力値を、Ansibleのダイナミックインベトリへ渡すといったやり方をすることで、結果として全体をシンプルにすることが可能になるのです。

ここではHeat + Ansibleの例をあげていますが、他の場合でも同様です。
皆様も自分の環境に合わせて、最適なツールチェーンを模索してみましょう。


2015年12月24日木曜日

Hot の書き方(前編)


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


OpenStack Advent Calendar 2015 ネタ。

ホントはHotでマルチノードOpenStack環境を作るところまで解説したかったのですが、HOTが巨大になりすぎて解説までかけませんでした。
続きはそのうちもう少し練り込んだHOTと合わせて追記して公開します。

ということで、今回はHeatテンプレート(通称HOT)の基本部分の解説をました。

それではみなさん、良いお年を。


2015年11月14日土曜日

Open vSwitch ブリッジインターフェースのMACアドレスを固定する


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


久々に更新です。ネタはあるのですが忙しくてなかなかアウトプットできてませんでした。

タイトルの通り、Open vSwitch で作成するブリッジのMACアドレスを固定化します。通常はOVSが適当に割り当てます。
インターフェース作成後に、以下の感じでデバイスと与えたいMACアドレスを指定します。

$ ovs-vsctl set bridge br-ex other-config:hwaddr=92:c3:28:4c:09:45

これはOpenStack上のインスタンスでいろいろ実験したい時に便利です。

通常OpenStackのNeutronの論理ポートは接続先の仮想マシンに割り当てたIPアドレスとMACアドレス以外の通信を許可しません。そのためブリッジデバイスやらをインスタンス上で作ってもそのままでは通信することができません。

そこで、このコマンドでMACを固定化した上で、Neutronの allowed-address-pairs という機能を使い以下のように、論理ポートに対して特定のIP/MACの組み合わせを許可する設定を入れ込むことで、かなり自由な通信を行うことが可能になります。


特定IP指定や、
$ neutron port-update $PORTID00 \
  --allowed-address-pairs type=dict list=true mac_address=fa:16:3e:0c:6d:89,ip_address=172.16.100.99


CIDR指定が可能です。
neutron port-update $PORTID00 \
  --allowed-address-pairs type=dict list=true mac_address=fa:16:3e:0c:6d:89,ip_address=172.16.100.0/24


2014年12月25日木曜日

OpenStack/CloudStack/Eucalyptusが教えてくれること


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


今年最後のカレンダーネタです。
http://www.adventar.org/calendars/602
http://www.adventar.org/calendars/547


OpenStackやCloudStack、Eucalyptusといった、いわゆるクラウド基盤ソフトウェアを技術的に学習することで得られるものは多々あります。

ビジネス的には、自社のサービス基盤の効率化への活用だったり、SIビジネスを展開する材料にしたりできます。これらを習得する過程で、基礎的なLinux/Unixに関する技術も習得できるようになるため、エンジニアとって有用な教材であるといえます。さらに、構築したクラウド基盤上でどのようにシステムを構築し、運用するのか、という視点を持つことで、従来とは異なった、「クラウドネイティブ」なシステムデザインしていくきっかけにもなるとも思います。

このように様々なことが学習できる優秀な教材でもあるクラウド基盤ソフトウェアでありますが、中でも抑えておくべきポイントとして「抽象化」の考え方があります。


抽象化(ちゅうしょうか、英: Abstraction、独: Abstraktion)とは、思考における手法のひとつで、対象から注目すべき要素を重点的に抜き出して他は無視する方法である。反対に、ある要素を特に抜き出して、これを無視したり、切り捨てる意味もあり、この用法については捨象するという。従って、抽象と捨象は盾の両面といえる。
Wikipedia より

この観点でこちらに記事を書きました。
http://www.atmarkit.co.jp/ait/articles/1412/12/news016.html

その他の関連記事はこちら(宣伝)
http://www.atmarkit.co.jp/ait/subtop/features/kwd/openstack.html

OpenStackやEucalyptus、そしてCloudStackは多岐にわたるITインフラ(サーバー、ネットワーク、ストレージ)を抽象化し、より大量の計算リソースを素早く、簡単に扱えるようにしてくれます。

この流れは計算機の正当な進化に沿ったものであると言えます。計算機の世界は抽象化の層を積み重ね今日に至っており、OpenStackはその抽象化の層をまた1つ追加しようとしています。そして計算機のビジネスは抽象化の一番外側にいる層が現実世界との接点となり、ビジネスが発生するポイントになります。だからこそ、多くのITベンダーがOpenStackに注目し、こぞって開発に参画し、次世代のビジネスを主導権を取ろうと勝負しています。

クラウド基盤ソフトウェアを学習するとき、あるいはビジネスでの活用を検討するときには、この抽象化の意味を良く考える必要があります。一体、何のためにこの層が必要だったのか?この意味を考え、理解すれば自ずと、クラウド基盤ソフトウェアの正しい活用方法というものがわかるはずです。



来年から大学でクラウド基盤ソフトウェアに関する講義を持つ予定ですが、学生の皆様には表層的な「使い方」ではなく、こういった計算機の本質的な考え方を伝えていければと考えています。

それではまた来年もよろしくお願いします。


2014年12月11日木曜日

Emacsでプレゼン資料を作る(landslide)


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


OpenStack Advent Calendar 2014 のネタです。
http://www.adventar.org/calendars/569
http://www.adventar.org/calendars/602

なんでEmacsなんだよ、と思われる方もいると思います。まずは話を聞いてください。

OpenStack には Upstream Training というコントリビューターを育成するプログラムがあります。これまで、グローバルで3回開催されています。

1回目 OpenStack Summit Atlanta
2回目 Upstream Training Japan
3回目 OpenStack Summit Paris

今後の予定は、たぶんこんな感じになると思います。

4回目 OpenStack Days Tokyo 2015(予定)
5回目 OpenStack Summit Vancouver(予定)
6回目 OpenStack Summit Tokyo(予定)

実は、世界でこのトレーニングを受けることができるのは、Summitに参加した人か、日本に住んでいる人だけになります。日本のトレーニングはローカライズもされています。貴重ですね。


と、これは本題ではなく、このトレーニングで使われている教材が、githubに公開されています。
https://github.com/openstack/training-guides/tree/master/doc/upstream-training

スライドの実態はこのあたりです。テキストファイルです。
https://github.com/openstack/training-guides/blob/master/doc/upstream-training/01-release-cycle.rst

このテキストファイルを landslide というツールに食べさせると、HTML5のプレゼンファイルができます。
https://github.com/adamzap/landslide


という事で、Okinawa OpenDays 2014 で開催される、OpenStackハンズオンの資料をlandslideで作ってみました。
http://irixjp.github.io/20141212_okinawa/handson.html/


landslide を使ってみた感想をまとめます。

・Emacsで資料を書ける(Markdown or rst形式)
・テキストベースのスライドなら使いやすい
・画像を交えると結構苦しい
・印刷がかなり難しい、PDF変換も綺麗にはいかない(今は)
・CSSに詳しくないと、カスタマイズが難しい。
・レイアウトが環境によってずれる(Win/Mac/Linux/ブラウザ)


と、一長一短かなと思いました。
一方で、これにブログ記事をスライド形式で書くのも面白いと思いました。


ちなみに、S式でプレゼンを書くツールもあります。
https://github.com/fukamachi/L5

Emacs org-mode をプレゼン風に使うelもあります。
http://pastelwill.jp/wiki/doku.php?id=emacs:org-tree-slide


PPT/KEYにはもう飽きたよ、という方は次のOpenStack勉強で使ってみてください(保証もヘルプもしませんが)

それでは良いお年を。


2014年9月23日火曜日

openstack clients on windows(cygwin)


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


Windowsからいろいろ使えると便利です。

ここ http://aikotobaha.blogspot.jp/search/label/gnupack から最新版のgnupackを落としてください。

後は、
easy_install virtualenv virtualenvwrapper


環境変数を設定(例
if [ -f /usr/bin/virtualenvwrapper.sh ]; then
   export WORKON_HOME=~/.virtualenvs
   source `which virtualenvwrapper.sh`
fi

export PIP_DOWNLOAD_CACHE=~/.pip_cache


インストール
pip install python-novaclient python-neutronclient python-swiftclient python-cinderclient
* python-glanceclient はコンパイルエラーになります。crypto周り??


cygwin的に必要となるパッケージは以下。
gcc-core
 libxml2
 libxml2-devel
 libxslt
 libxslt-devel
 openssl-devel
 libffi
 libffi-devel
 yaml


2014年9月3日水曜日

ConoHaのオブジェクトストレージサービスについて。


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


ConoHa のサービスにオブジェクトストレージサービスが実装されました。OpenStack Swift ベースとの事です。
https://www.conoha.jp/blog/tech/2642.html

大体の使い方はここに書いてあります。
https://www.conoha.jp/guide/guide.php?g=48


サンプルに書いていない、アップロードしたファイルをクライアントに対して直接参照させる方法について書いてみます。これは画像配信等で有効です。

$ pip install python-keystoneclient python-swiftclient
エラーが出る場合はOS側のライブラリ等が足りません。エラーメッセージを見れば大体何が足りないかはわかると思います。

コンパネから取得できる情報を以下の変数に設定
$ vim openrc_conoha
export OS_AUTH_URL=API Auth URL
export OS_TENANT_ID=テナントID
export OS_USERNAME=ユーザー名
export OS_PASSWORD=自分のパスワード

$ source openrc_conoha
$ swift stat
       Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Containers: 0
       Objects: 0
         Bytes: 0
Meta Quota-Bytes: 110058536960000
   X-Timestamp: 1409734987.60990
  Content-Type: text/plain; charset=utf-8
 Accept-Ranges: bytes


コンテナを作成します。
$ swift post container01
$ swift list
container01

$ swift stat container01
       Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     Container: container01
       Objects: 0
         Bytes: 0
      Read ACL:
     Write ACL:
       Sync To:
      Sync Key:
 Accept-Ranges: bytes
   X-Timestamp: 1409736843.00552
    X-Trans-Id: tx2eb6ef4622c34c1a90c62-005406e0a8
  Content-Type: text/plain; charset=utf-8

ファイルのアップロードを行います。
$ cat hoge.txt
hogehoge

$ swift upload container01 hoge.txt 
hoge.txt

$ swift stat container01
       Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     Container: container01
       Objects: 1
         Bytes: 9
      Read ACL:
     Write ACL:
       Sync To:
      Sync Key:
 Accept-Ranges: bytes
   X-Timestamp: 1409736843.00709
    X-Trans-Id: tx70d3fe1c2c534d2d8f513-005406e148
  Content-Type: text/plain; charset=utf-8

コンテナの属性を変更して、誰でも読み取り可能にします。
$ swift post --read-acl ".r:*,.rlistings" container01

$ swift stat container01
       Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     Container: container01
       Objects: 1
         Bytes: 9
      Read ACL: .r:*,.rlistings
     Write ACL:
       Sync To:
      Sync Key:
 Accept-Ranges: bytes
    X-Trans-Id: txd0161d15696c407cadd5b-005406e2d3
   X-Timestamp: 1409736843.00552
  Content-Type: text/plain; charset=utf-8

オブジェクトストレージのエンドポイントを取得します。この値はスタティックなので、一度取得してしまえば変更されることはありません。
$ keystone endpoint-get --service object-store
+------------------------+---------------------------------------------------------------------------+
|        Property        |                                   Value                                   |
+------------------------+---------------------------------------------------------------------------+
| object-store.publicURL | https://objectstore-r1nd1001.cnode.jp/v1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------------+---------------------------------------------------------------------------+
xxxxxxxxxxxx 部分にはテナントIDが入ります。


このアドレスに、コンテナ名/ファイル名 をつけてアクセスすると、直接ファイルの中身が参照できます。
$ curl https://objectstore-r1nd1001.cnode.jp/v1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/container01/hoge.txt
hogehoge

上記の例では Swift のCLIを利用していますが、もちろんReST APIを利用してもよいですし、Pythonであれば swiftclient を import して、プログラムの中からストレージを扱うことが可能になります。

プログラムからアップロード等する場合の例はこちらを参考にしてください。
http://aikotobaha.blogspot.jp/2014/08/how-to-use-python-swiftclient.html


2014年8月18日月曜日

How to use python-swiftclient


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


リファレンスはこのあたり。
http://docs.openstack.org/developer/python-swiftclient/

大体はリファレンスに記載されている。一部サンプルが無くてわかりづらいところをメモ。



2014年5月15日木曜日

「オープンソース・クラウド基盤 OpenStack入門」を執筆しました


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


中井さんと共同執筆させていただきました。Amazonにて予約が可能となっています。前書きと目次についてはこちらで紹介されています。

まだ発売前ですが、ベストセラーの1位となっていました。この時点ではまだ表紙ができていなかったので、下の画像ははめ込みです。

前書きでも書きましたが、OpenStackは進歩が早く、まとまった情報を(特に日本語で)入手することが難しいのが現状です。この書籍でそんな状況が少しでも改善されればと考え中井さんと共に執筆いたしました。OpenStackやクラウドに興味のある方はぜひ読んでみてください。


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年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年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年2月26日火曜日

OpenStack Folsom with Hyper-V


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



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



2012年12月24日月曜日

OpenStack Advent Calendar 2012 JP 12/24 イヴの夜はOpenStackをCommon Lispでキメる!


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


カレンダーネタ 第・・・いくつだっけ??



2012年12月23日日曜日

Advent Calendar 2012 二本


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


カレンダーネタを2つ書きました。

一つは、OpenStackで、folsomから利用可能になった、glanceのレプリケーションのお話です。


もうひとつはEucalyptusです。こちらはOpenStack上のインスタンスの仮想マシンで動かそうとしたのですが、苦戦した上に失敗してしまいました(´・ω・`)



2012年12月17日月曜日

OpenStack Advent Calendar 2012 JP 12/17 Cloud on Cloud


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


OpenStack Advent Calendar ネタの第3段です。

・・・が、いろいろやらかしてしまい。中途半端なデキになってしまいました・・・。
いずれ時間を見つけて修正したいです(´;ω;`)


OSC.Cloud 2012 で発表してきました。


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


本日はOSC.Cloudへ日本OpenStackユーザ会としてセミナーx2、ブース出展をさせていただきました。
発表者の皆様、スタッフの皆様、参加者の皆様、お疲れ様でした。

OpenStack関連のセミナーが思った以上に多かったのが印象的です。

本日のセッションで使った資料です。




今回はUST配信配信されてました。映像はこちら、

1枠目


Video streaming by Ustream

2枠目(配信トラブルで最後のみらしいです)


Video streaming by Ustream