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 方式で用意します。 ...

Spiceweasel で knife バッチ処理

Spiceweasel https://github.com/mattray/spiceweasel#cookbooks を使ってみた。 Spiceweasel は Chef の cookbook のダウンロード, role/cookbook の chef server へのアップロード, ブートストラップ等をバッチ処理的に行なってくれる(もしくはコ マンドラインを出力してくれる)ツールで、自分的にイケてるなと感じたのでブログに 書いておきます。 クラウドフェデレーション的サービスというかフロントエンドサービスというか、複数 のクラウドを扱えるサービスは増えてきているけど、chef を扱えるエンジニアであれ ば、この Spiceweasel で簡単・一括デプロイ出来るので良いのではないかと。 早速だけど chef-repo にこんな yamp ファイルを用意します。 cookbooks: - apt: - nginx: roles: - base: nodes: - 172.24.17.3: run_list: role[base] options: -i ~/.ssh/testkey01 -x root -N webset01 - 172.24.17.4: run_list: role[base] options: -i ~/.ssh/testkey01 -x root -N webset02 上から説明すると… ‘apt’, ’nginx’ の cookbook を opscode レポジトリからダウンロード ‘apt’, ’nginx’ の cookbook を chef-server へアップロード roles/base.rb を chef-server へアップロード 2つのノードに対して bootstrap 仕掛ける ってことをやるためのファイルです。予め chef-repo と roles は用意してあげる必要 があります。この辺りは knife の操作のための準備と全く同じ。また Spiceweasel は、 この yaml フィアル内の各パラメータや指定した role の内容の依存関係をチェックし てくれます。 ...

Arch Linux セットアップまとめ

(2013/08/31 修正しました) 自宅のノート PC にいつも Debian Gnu/Linux unstable を入れて作業してたのだけど、 Arch Linux が試したくなって入れてみた。すごくイイ。ミニマル思考で常に最新。端 末に入れる OS としては最適かも!と思えてきた。Ubuntu はデスクトップ環境で扱う にはチト大きすぎるし。FreeBSD のコンパイル待ち時間が最近耐えられないし…。 前リリースの Arch Linux には /arch/setup という簡易インストーラがあったのだけ ど、それすら最近無くなった。環境作る方法を自分のためにもメモしておきます。 OS イメージ iso 取得とインストール用 USB スティック作成 Linux, Windows, Mac で作り方が変わるようだけど、自分は Mac OSX を使ってインス トール USB スティックを作成した。 diskutil で USB スティック装着前後の disk デバイス番号を覚える % diskutil list (ここでは /dev/rdisk4 として進める。) アンマウントする。 % sudo diskutil unmountDisk /dev/rdisk4 ダウンロードした iso を USB スティックに書き込む。 % sudo dd if=/path/to/downloaded/iso of=/dev/rdisk4 bs=8192 % sudo diskutil eject /dev/rdisk4 USB スティック装着しインストール開始 起動するとメニューが表示されるので x86_64 を選んで起動。プロンプトが表示される。 ...

OpenStack Folsom on Thinkpad

以前紹介した OpenStack Folsom 構築 bash スクリプトなのだけど quantum の代わり に nova-network も使えるようにしておいた。 構築 bash スクリプトは、 https://github.com/jedipunkz/openstack_folsom_deploy/blob/master/README_jp.md に詳しい使い方を書いておきました。またパラメータを修正して実行するのだけどパラ メータについては、 https://github.com/jedipunkz/openstack_folsom_deploy/blob/master/README_parameters_jp.md に書いておきました。 手持ちの Thinkpad に OpenStack folsom 入れた写真。この写真の OpenStack Folsom を構築した時の手順を書いておくよ。 OS をインストール OS をインストールします。12.10 を使いました。(12.04 LTS でも可)。/dev/sda6 等、 Cinder 用に一つパーティションを作ってマウントしないでおきます。また固定 IP ア ドレスを NIC に付与しておきます。 スクリプト取得 スクリプトを取得する。 % sudo apt-get update; sudo apt-get install git-core % git clone https://github.com/jedipunkz/openstack_folsom_deploy.git % cd openstack_folsom_deploy パラメータ修正 deploy_with_nova-network.conf 内のパラメータを修正します。オールインワン構成な ので、ほぼほぼ修正せずに実行しますが HOST_IP='<Thinkpad の IP アドレス>' だけ修正。 ...

FreeBSD on OpenStack

FreeBSD を OpenStack で管理したいなぁと思って自宅に OpenStack 環境作ってました。 お正月なのに… 使ったのは folsom ベースの OpenStack (nova-network) と FreeBSD 9.1 です。8 系 の FreeBSD でも大体同じ作業で実現出来るぽいです。あと nova-network でって書い たのは自宅に quantum だと少し厳しいからです。FlatDHCPManager が調度良かった。 今回のポイントは FreeBSD の HDD, NIC のドライバに virtio を使うように修正する ところです。OpenStack (KVM) は virtio 前提なので、そうせざるを得なかったです。 今回使ったソフトウェア OpenStack Folsom (nova-network) Ubuntu Server 12.10 FreeBSD 9.1 amd64 作業方法 準備としてこれらが必要になります。事前に行なってください。 FreeBSD-9.1-RELEASE-amd64-disc1.iso ダウンロード 作業ホスト (Ubuntu Server 12.10) に qemu-kvm をインストール freebsd9.img として qcow2 イメージを作成します。 % kvm-img create -f qcow2 freebsd9.img 8G 作成したイメージファイルに FreeBSD 9.1 をインストールします。 ...

OpenStack API を理解しインフラエンジニアの仕事の変化を感じる

今日は “OpenStack Advent Calendar 2012 JP” というイベントのために記事を書きた いと思います。Advent Calendar とはキリスト生誕を祝うため 12/25 まで毎日誰かがブログ 等で特定の話題について述べるもの、らしいです。CloudStack さん, Eucalyptus さん も今年はやっているそうですね。 イベントサイト : http://atnd.org/events/34389 では早速!(ただ..CloudStack の Advent Calendar とネタがかぶり気味です..。) 御存知の通り OpenStack は API を提供していてユーザがコードを書くことで OpenStack のコマンド・Horizon で出来ることは全て可能です。API を叩くのに幾つか フレームワークが存在します。 fog libcloud deltacloud などです。 ここでは内部で fog を使っている knife-openstack を利用して API に触れてみよう かと思います。API を叩くことを想像してもらって、インフラエンジニアの仕事内容の 変化まで述べられたらいいなぁと思っています。 OpenStack 環境の用意 予め OpenStack 環境は揃っているものとしますです。お持ちでなければ http://jedipunkz.github.com/blog/2012/11/10/openstack-folsom-install/ この記事を参考に環境を作ってみて下さい。あ、devstack でも大丈夫です。 chef, knife-openstack の用意 chef, knife-openstack を入れるのは OpenStack 環境でも、別のノードでも構いません。 chef が確か 1.9.2 ベースが推奨だったので今回は 1.9.2-p320 使います。 ruby は rbenv で入れるのがオススメです。knife-openstack, chef のインストールは… ...