Chef-ZeroでOpenStack Kiloデプロイ(オールインワン編)

こんにちは。@jedipunkz です。 久々に openstack-chef-repo を覗いてみたら ‘openstack/openstack-chef-repo’ とし て公開されていました。今まで stackforge 側で管理されていましたが ‘openstack’ の方に移動したようです。 https://github.com/openstack/openstack-chef-repo 結構安定してきているのかな?と想い、ちらっと試したのですが案の定、簡単に動作さ せることが出来ました。 今回はこのレポジトリを使ってオールインワン構成の OpenStack Kilo を作る方法をま とめていきます。 前提の構成 このレポジトリは Vagrant で OpenStack を作るための環境一式が最初から用意されて いますが、Vagrant では本番環境を作ることは出来ないため、Ubuntu ホストを前提と した記述に差し替えて説明していきます。前提にする構成は下記のとおりです。 Uuntu Linux 14.04 x 1 台 ネットワークインターフェース x 3 つ eth0 : External ネットワーク用 eth1 : Internal (API, Manage) ネットワーク用 eth2 : Guest ネットワーク用 特徴としては上記なのですが、eth2 に関してはオールインワンなので必ずしも必要と いうわけではありません。複数台構成を考慮した設定になっています。 前提のIP アドレス この記事では下記の IP アドレスを前提にします。お手持ちの環境の IP アドレスが違 い場合はそれに合わせて後に示す json ファイルを変更してください。 10.0.1.10 (eth0) : external ネットワーク 10.0.2.10 (eth1) : api/management ネットワーク 10.0.3.10 (eth2) : Guest ネットワーク 事前の準備 事前に対象ホスト (OpenStack ホスト) に chef, berkshelf をインストールします。 ...

オブジェクトストレージ minio を使ってみる

こんにちは、@jedipunkz です。 久々にブログ更新になりましたが、ウォーミングアップで minio というオブジェクト ストレージを使ってみたメモを記事にしたいと想います。 minio は Minimal Object Storage の名の通り、最小限の小さなオブジェクトストレー ジになります。公式サイトは下記のとおりです。 http://minio.io/ Golang で記述されていて Apache License v2 の元に公開されています。 最近、資金調達の話も挙がっていたので、これから一般的になってくるのかもしれません。 早速ですが、minio を動かしてみます。 Minio を起動する 方法は mithub.com/minio/minio の README に書かれていますが、バイナリを持ってき て実行権限を与えるだけのシンプルな手順になります。 Linux でも Mac でも動作しますが、今回私は Mac 上で動作させました。 % wget https://dl.minio.io:9000/updates/2015/Jun/darwin-amd64/minio % chmod +x minio % ./minio mode memory limit 512MB Starting minio server on: http://127.0.0.1:9000 Starting minio server on: http://192.168.1.123:9000 起動すると Listening Port と共に EndPoint の URL が表示されます。 次に mc という minio client を使って動作確認します。 ...

VyOS で VXLAN を使ってみる

こんにちは。@jedipunkz です。 VyOS に VXLAN が実装されたと聞いて少し触ってみました。この情報を知ったきっかけ は @upaa さんの下記の資料です。 参考資料 : http://www.slideshare.net/upaa/vyos-users-meeting-2-vyosvxlan VyOS は御存知の通り実体は Debian Gnu/Linux 系の OS でその上に OSS なミドル ウェアが搭載されていて CLI でミドルウェアのコンフィギュレーション等が行えるモ ノになっています。Linux で VXLAN といえば OVS を使ったモノがよく知られています が VyOS の VXLAN 機能は Linux Kernel の実装を使っているようです。 要件 トンネルを張るためのセグメントを用意 VyOS 1.1.1 (現在最新ステーブルバージョン) が必要 Ubuntu Server 14.04 LTS (同じく Linux VXLAN 搭載バージョン) 構成 特徴 マネージメント用セグメント 10.0.1.0/24 を用意 GRE と同じくトンネル終端が必要なのでそのためのセグメント 10.0.2.0/24 を用意 各 eth1 は IP reachable である必要があるので予め IP アドレスの設定と疎通を確認 VXLAN を喋れる Ubuntu 14.04 LTS x 1 台と VyOS 1.1.1 x 2 台で相互に疎通確認 +-------------+-------------+------------ Management 10.0.1.0/24 |10.0.0.254 |10.0.0.253 |10.0.0.1 |eth0 |eth0 |eth0 +----------+ +----------+ +----------+ | vyos01 | | vyos02 | | ubuntu | +-+--------+ +----------+ +----------+ | |eth1 | |eth1 | |eth1 | |10.0.2.254 | |10.0.2.253 | |10.0.2.1 | +-----------)-+-----------)-+---------- Tunneling 10.0.2.0/24 | | | +-------------+-------------+------------ VXLAN(eth1にlink) 10.0.1.0/24 10.0.1.254 10.0.1.253 10.0.1.1 設定を投入 vyos01 の設定を行う。VXLAN の設定に必要なものは… ...

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> シンタックス確認 +++ ...

Chef-Zero でお手軽に OpenStack Icehouse を作る

こんにちは。@jedipunkz です。 OpenStack Juno がリリースされましたが、今日は Icehouse ネタです。 icehouse 以降、自分の中で OpenStack を自動で作る仕組みが無くなりつつあり、気軽 に OpenStack を作って色々試したい!ッていう時に手段が無く困っていました。例え ば仕事でちょっと OpenStack 弄りたい!って時に DevStack, RDO しかなく。DevStack は御存知の通り動かない可能性が結構あるし RDO は Ubuntu/Debian Gnu Linux ベース じゃないし。 ってことで、以前にも紹介した stackforge 管理の openstack-chef-repo と Chef-Zero を使って OpenStack Icehouse (Neutron) のオールインワン構成を作る方法 を書きます。ちなみに最近 Chef-Solo が Chef-Zero に置き換わりつつあるらしいです。 Chef-Zero はオンメモリで Chef サーバを起動する仕組みです。Chef-Solo と違って Chef サーバを扱う時と何も変更無く操作が出来るのでとても楽です。また、Chef サーバを 別途構、構築・管理しなくて良いので、気軽に OpenStack が作れます。 ちなみに stackforge/openstack-chef-repo の README.md に Chef-Zero での構築方法 が書いてありますが、沢山の問題があります。 nova-network 構成 API の Endpoint が全て localhost に向いてしまうため外部から操作不可能 各コンポーネントの bind_address が localhost を向いてしまう berkshelf がそのままでは入らない よって、今回はこれらの問題を解決しつつ “オールインワンな Neutron 構成の Icehouse OpenStack を作る方法” を書いていきます。 ...

MidoStack を動かしてみる

こんにちは。@jedipunkz です。 昨晩 Midokura さんが Midonet を OSS 化したとニュースになりました。公式サイトは 下記の URL になっています。Midonet は OpenStack Neutron のプラグインとして動作 するソフトウェアです。 http://www.midonet.org 下記のGithub 上でソースを公開しています。 https://github.com/midonet 本体の midonet と共に midostack というレポジトリがあってどうやら公式サイトの QuickStart を見ても devstack を交えての簡単な midonet の動作が確認できそう。 https://github.com/midonet/midostack 早速使ってみる 早速 midostack を使って midonet を体験してみましょう。QuickStart には Vagrant + VirtualBox を用いた使い方が改定ありますが手元の PC 端末だとリソース が足らなくて CirrOS VM 一個すら立ち上がりませんでした。よって普通にリソースの 沢山あるサーバで稼働してみます。Vagrantfile 見ても config.vm.synced_folder "./", "/midostack" としているだけなので、Vagrant ではなくても大丈夫でしょう。 Ubuntu Server 14.04 をインストールしたマシンを用意して midostack を取得します。 % git clone https://github.com/midonet/midostack.git midonet_stack.sh を実行します。 % cd midostack % ./midonet_stack.sh 暫く待つと Neutron Middonet Plugin が有効になった OpenStack が立ち上がります。 Horizon にアクセスしましょう。ユーザ名 : admin, パスワード : gogomid0 (デフォ ルト) です。 ...

Chef-Container Beta を使ってみる

こんにちは。@jedipunkz です。 昨晩 Chef が Chef-Container を発表しました。 http://www.getchef.com/blog/2014/07/15/release-chef-container-0-2-0-beta/ http://docs.opscode.com/containers.html まだ Beta リリースでバージョンは 0.2.0 です。(gem だと 0.1.1) Docker を代表とするコンテナ周りの技術が最近、盛んにリリースされていますし、今 後クラウドプラットフォーム上でコンテナを使ってアプリを動かすケースも増えてくる のではないでしょうか。Dockerfile を使っても Chef-Solo を使ってソフトウェアをデ プロイ出来るのだけどそれだけだとしんどいので、コンテナに特化した Chef が出てき たってことだと思います。特徴として SSH でログインしてブートストラップするので はなくて Runit + Chef-init を用いてコンテナにデプロイすることが挙げられます。 では実際に使ってみたのでその時の手順をまとめてみます。 事前に用意する環境 下記のソフトウェアを予めインストールしておきましょう。 docker chef berkshelf ここで注意なのですが後に knife コマンドを使って Docker イメージをビルドします。 つまり root 権限が必要です。rbenv 等を使って ruby, chef をインストールすると、 辛いかもしれませんので OS のパッケージを使ってインストールすると良いと思います。 この辺りは今後改善策が出てくるかも…。 尚、インストール方法はここでは割愛します。 Chef-Container のインストール 下記の2つの Gems をインストールします。 knife-container chef-container % sudo gem install knife-container % sudo gem install chef-container 使用方法 まず knife コマンドを使って操作に必要なディレクトリとファイルを生成します。 ...

JTF2014 で Ceph について話してきた!

こんにちは。@jedipunkz です。 今日、JTF2014 (July Tech Festa 2014) というイベントで Ceph のことを話してきま した。Ceph ユーザ会の会員として話してきたのですが Ceph ユーザ会は実は最近発足 したばかりのユーザ会で、まだまだ活動が活発ではありません。もし興味がある方いらっ しゃいましたら是非参加よろしくお願いしますー。下記の Google Groups になります。 https://groups.google.com/forum/#!forum/ceph-jp ユーザ会としての勉強会として初になるのですが、今回このイベントで自分は Ceph-Deploy について話してきました。とりあえず皆さんに使ってもらいたかったので この話をしてきました。が、予定時間がメチャ短かったので超絶早口で頑張った分、皆 さんに理解してもらえなかった気がしてちょっと反省…。なので、このブログを利用 して少し細くさせてもらいます。 今日の発表資料はこちらです! 今日のテーマは 「Ceph-Deploy を使って Ceph を構築してみる」だったのですが、下 記のテーマを持って資料を作っています。 単にミニマム構成ではなく運用を考慮した実用性のある構成 OSD, MON, MDS の各プロセスとノード・ディスクの数の関係を知ってもらう 特に「実用性のある..」は意識したつもりでした。そのために前提とした構成に下記の 特徴を持たせています。(資料 6 ページ目に構成図があります。確認してみてください。) オブジェクト格納用ディスクは複数/ノードを前提 OSD レプリケーションのためのクラスタネットワークを用いる構成 OSD の扱うジャーナル格納用ディスクは高速な SSD を用いる MDS は利用する HW リソースの特徴が異なるので別ノードへ配置 ストレージ全体を拡張したければ 図中 ceph01-03 の様なノードを増設する ceph01-03 にディスクとそれに対する OSD を増設する ですが、前者がベストでしょう。ノード増設の場合 ceph-deploy を用いて ceph-deploy mon create <新規ホスト名> で MON を稼働 ceph-dploy disk zap, osd create で OSD を稼働 で簡単に可能です。MDS の増設も負荷状況を見ながらするといいでしょう。自分はまだ Ceph を運用していないので、各プロセスがどのようなリソースの消費の仕方をするの か知りません。MDS がどのような数で運用していくべきなのか。早く運用から得たノウ ハウが共有されないかなぁと期待しています。 ...