OpenStack Grizzly 構築スクリプト

OpenStack Grizzly がリリースされて2週間ほど経過しました。皆さん動かしてみまし たか?今回、毎度の構築 Bash スクリプトを開発したので公開します。 下記のサイトで公開しています。 https://github.com/jedipunkz/openstack_grizzly_install このスクリプト、複数台構成とオールインワン構成の両方が構成出来るようなっていま すが、今回は簡単なオールインワン構成の組み方をを簡単に説明したいと思います。 前提の環境 Ubuntu 12.04 LTS が稼働している Cinder のためのディスクを OS 領域と別に用意 (/dev/sdb1 など) オールインワン構成の場合は 2 NICs 準備 Ubuntu 13.04 の daily build も完成度上がっている時期ですが OVS 側の対応が OpenStack 構成に問題を生じさせるため 12.04 LTS + Ubuntu Cloud Archive の組み合 わせで構築するのが主流になっているようです。また、Cinder 用のディスクは OS 領 域を保持しているディスクとは別 (もしくはパーティションを切ってディスクデバイス を別けても可) が必要です。オールインワン構成の場合は NIC を2つ用意する必要があ ります。通常 OpenStack を複数台構成する場合は コントローラノード x 1 台 ネットワークノード x 1 台 コンピュートノード x n 台 で組み、VM はコンピュートノードからネットワークノードを介してインターネットに 接続します。よってそのため更に NIC が必要になるのですが、オールインワン構成の 場合は ...

Chef 11 サーバのローカルネットワーク上構築

chef-solo を使うの?Chef サーバを使うの?という議論は結構前からあるし、答えは 「それぞれの環境次第」だと思うのだが、僕は個人的に Chef サーバを使ってます。ホ ステッド Chef を使いたいけどお金ないし。会社で導入する時はホステッド Chef を契 約してもらうことを企んでます。(・∀・) 何故なら cookbooks を開発することがエン ジニアの仕事の本質であって Chef サーバを運用管理することは本質ではないから。そ れこそクラウド使えという話だと思う。 でも!Chef に慣れるには無料で使いたいし、継続的に Cookbooks をターゲットノード で実行したい。ということで Chef サーバを構築して使っています。 Chef 10 の時代は Chef サーバの構築方法は下記の通り3つありました。 手作業! Bootstrap 構築 Opscode レポジトリの Debian, Ubuntu, CentOS パッケージ構築 それが Chef 11 では Ubuntu, RHEL のパッケージ (パッケージインストールですべて環境が揃う) http://www.opscode.com/chef/install/ この方法1つだけ。でも簡単になりました。 ‘Chef Server’ タブを選択するとダウンロード出来る。じっくりは deb ファイルの中 身を見たことがないけど、チラ見した時に chef を deb の中で実行しているように見 えた。徹底してるw Chef 10 時代のパッケージと違って行う操作は下記の2つのコマンドだけ。 % sudo dpkg -i chef-server_11.0.6-1.ubuntu.12.04_amd64.deb # ダウンロードしたもの % sudo chef-server-ctl reconfigure 簡単。でも… この状態だと https://<サーバの FQDN> でサーバが Listen している。 IP アドレスでアクセスしてもリダイレクトされる。つまり、ローカルネットワーク上 に構築することが出来ない。安易に hosts で解決も出来ない。何故ならターゲットノー ドは通常まっさらな状態なので bootstrap するたびに hosts を書くなんてアホらしい しやってはいけない。 ...

クラウドマネジメント勉強会レポ

クラウドマネジメント勉強会に参加してきた。今が旬なのか定員140名が埋まっていま した。クラウドフェデレーションサービス各種の話が聞ける貴重な勉強会の場でした。 場所 : スクエアエニックスさん 日程 : 2013年4月5日 19:00 - 少し長くなるので、早速。 クラウド運用管理研究会 クラウド利用推進機構が運営するクラウド運用管理研究会は下記の3つに分別されるそ うです。今回は一項目の ‘クラウドマネジメントツール研究会’ にあたるそう。別の研 究会も既に勉強会を実施しているそうです。 クラウドマネジメントツール研究会 デザインパターン研究会 運用管理・監視研究会 AWS OpsWorks アマゾンデータサービスジャパン AWS 片山さん, 船崎さん OpsWorks は最近話題になった AWS 利用者に無料で提供されるクラウドフェデレーショ ンサービス。Web UI で操作し簡単デプロイを実現するサービスです。 OpsWorks が自動化するモノ サーバ設定 ミドルウェア構築 特徴 Chef フレームワークを利用 (chef-solo を内部的に利用) 任意の cookbooks を利用可能 LB, AP, DB などをレイヤ化, 任意のレイヤも作成可能 OpsWorks の流れ Stack 作成 レイヤ作成 (LB, AP, DB, 任意) レシピの作成 レイヤにインスタンス作成 下記をレイヤ化で区別する Package インストール OS 設定 アプリデプロイ 所感 AWS OpsWorks の登場で他のクラウドフェデレーションサービスがどうなるの?とさえ 思った。AWS はインターネット・ホスティング業界のあらゆるサービスを押さえようと している感がある。もう隙間がない!w OpsWorks に関してまだ問題は残っているそう だ。VPC, micro 現在未対応など。が解決に向けて作業しているそう。 ...

NetBSD on OpenStack

もう数日で OpenStack の次期バージョン版 Grizzly がリリースされるタイミングだが 現行バージョン Folsom の OpenStack の上に NetBSD を載せてみた。完全にお遊び だけど…。 結局、ほとんど何も特別な対応取ることなく NetBSD が動いた。もちろんハイパーバイ ザは KVM です。だけど少し条件がある。 qemu の不具合があり Ubuntu 12.04 LTS + Ubuntu Cloud Archives の組み合わせでは NetBSD が動作しなかった。下記のようなカーネルパニックが発生。 panic: pci_make_tag: bad request この不具合に相当するんじゃないかと思ってる。 https://bugs.launchpad.net/qemu/+bug/897771 よって下記の組み合わせで動作を確認した。 Ubuntu 12.10 + OpenStack (Native Packages) qemu, kvm : 1.2.0+noroms-0ubuntu2.12.10.3 NetBSD 6.1 RC2 amd64 前提条件 OpenStack Folsom が動作していること。 NetBSD OS イメージ作成 nova-compute が動作しているホストの qemu-kvm を利用する。OpenStack 上に何でも 良いので OS を動作させこの kvm プロセスのパラメータを参考に kvm コマンドを実行 し NetBSD をインストールさせた。一番確実な方法。 ...

Berkshelf で Chef Cookbook の管理

こんにちは。@jedipunkz です。 今日は Chef Cookbook の管理をしてくれる Berkshelf について。 Berkshelf は Librarian-Chef と同じく Cookbook の管理をしてくれるツールです。依 存関係のクリアもしてくれます。Opscode の中の人 @someara さんにこんなこと言われ て、 @jedipunkz berkshelf > librarian-chef — somearaさん (@someara) 2013年2月5日 Librarian-chef じゃなくて Berkshelf 使えってことだろうなぁと思ったので僕は Bekshelf を使うようにしてます。先日ブログ記事にした openstack-chef-repo も以前 は Librarian-chef を使っていたのですが最近 Berkshelf に置き換わりました。 openstack-chef-repo は Opscode の中の人の @mattray さん達が管理しています。 では早速。 インストール インストールは簡単。gem install するだけです。 % gem install berkshelf 使い方 chef-repo 配下で Berksfile を下記のように書きます。 site :opscode cookbook 'chef-client' cookbook 'nginx', '= 0.101.2' berks コマンドを実行して Cookbooks をダウンロードします。 ...

chef-client の継続的デリバリ

こんにちは。@jedipunkz です。 久々に Chef の話題。 有名な方々が最近 Chef について記事書いたりで Chef が再び盛り上がってきましたね。 僕のブログにも chef-solo で検索してアクセスしてくる方が増えているようです。 ちょうど今、仕事で試験的なサービスを立ち上げてそこで Chef を使っているのですが Server, Workstation, Target Node(s) の構成で使っていて、僕らは最初から chef-solo と capistrano でってことは考えていませんでした。もちろん chef-solo + capistrano の環境も調査しましたが、今の Server 構成が便利なのでもう戻れない。 今日は Chef サーバ構成の良さについての記事ではないですが、それについては次回、 時間見つけて書こうかと思ってます。 今日は ‘chef-client をどうアップデートするか’ について。せっかく Chef でサーバ構成を継続的にデプロイ出来ても Chef 自身をアップデート出来ないと悲しい ですよね。chef-client が稼働しているインスタンスなんて起動して利用してすぐに破 棄だって時代ですが、なかなかそうもいなかい気がしています。 「ほら、だから chef-solo 使えばいいんだよ!」って思ってるあなた!違うんですよー。 そのデメリットを上回るメリットが Chef サーバ構成にあるんです。次回書きますw Chef10 から Chef11 と試験してみるにはちょうど良い時期でした。今回の構成は… 旧環境 +------------------+ | chef server | | version 10.18 | +------------------+ ^ | +--------------------+ | | | | +------------------+ +------------------+ | chef workstation | | target node | | version 10.24 | | version 10.24 | +------------------+ +------------------+ chef server は apt.opscode.com レポジトリを利用した Chef 10.18 なもの chef workstaion は version 10.24 (2013年3月15日現在 10.x 系最新) target node は chef workstaion から knife bootstrap を行い構成 knife bootstrap の際に下記のオプションを指定します。 ...

pry のススメ

OpenStack をコードで管理するためのフレームワークは幾つか存在するのだけど Ruby で記述出来る Fog が良い!と隣に座ってるアプリエンジニアが言うので僕も最近少し 触ってます。 Fog を使った OpenStack を管理するコードを書くことも大事なのだけど、Fog のコン トリビュートってことで幾つかの機能を付け足して (Quantum Router 周り) ってこと をやってました。まだ取り込まれてないけど。 その開発の中で pry の存在を教えてもらいその便利さに驚いたので少し説明します。 バリバリ開発系の人は既に知っているだろうけど、インフラ系エンジニアの僕にとって は感激モノでした。 pry は irb 代替な Ruby のインタラクティブシェルです。下記の URL から持ってこれ ます。 https://github.com/pry/pry シンタックスハイライトされたり json のレスポンスが綺麗に成形されたり irb 的に 使うだけでも便利なのだけど ‘?’ や ‘$’ でコードのシンタックスを確認したりコード 内容を確認したり出来るのがアツい! ちょうど今回追加した Fog の機能を使って説明していみます。 Fog のコードを require して OpenStack に接続するための情報を設定し OpenStack Quantum に接続します。これで準備完了。 [38] pry(main)> require '/home/jedipunkz/fog/lib/fog.rb' [49] pry(main)> @connection_hash = { [49] pry(main)* :openstack_username => 'demo', [49] pry(main)* :openstack_api_key => 'demo', [49] pry(main)* :openstack_tenant => 'service', [49] pry(main)* :openstack_auth_url => 'http://172.16.1.11:5000/v2.0/tokens', [49] pry(main)* :provider => 'OpenStack', [49] pry(main)* } [50] pry(main)> @quantum = Fog::Network.new(@connection_hash) 試しに Router 一覧を取得します。list_routers メソッドです。 ...

第11回OpenStack勉強会で話してきた

2013年2月9日に行われた OpenStack 勉強会第11回で話してきました。 openstack-chef-repo と言う、Opscode Chef で OpenStack を構築する内容を話して きました。その時に説明出来なかった詳細についてブログに書いておきます。 Openstack chef-repo from Tomokazu Hirai 説明で使ったスライドです。 まえがき Essex ベースで構築することしか今は出来ません。Folsom に関しては ‘直ちに開発が スタートする’ と記されていました。今回は Opscode と RackSpace のエンジニアが共 同で開発を進めているので期待しています。今まで個人で OpenStack の各コンポーネ ントの cookbook を開発されていた方がいらっしゃるのだけど汎用性を持たせるという 意味で非常に難しく、またどの方の開発に追従していけばよいか判断困っていました。 よって今回こそ期待。 前提の構成 +-------------+ | chef-server | +-------------+ 10.0.0.10 | +---------------+ 10.0.0.0/24 | | +-------------+ +-------------+ | workstation | | node | +-------------+ +-------------+ 10.0.0.11 10.0.0.12 chef-server : chef API を持つ chef-server 。cookbook, role..などのデータを持つ workstation : openstack-chef-repo を使うノード。knife が使える必要がある。 node : OpenStack を構築するターゲットノード 目次 chef-server の構築 (BootStrap 使う) openstack-chef-repo を使用する準備 openstack-chef-repo 実行 chef-server の構築 Opscode の wiki に記されている通りなのですが、簡単に書いておきます。今回は bootstrap 方式で用意します。 ...