knife-google で Chef Server 12 をインストール #getchef_ja
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
さて、巷はChefConf真っ盛りですが、先日のChefユーザ会Meetupでは、knife-googleを用いてChef Server 12をインストールするデモを行いました。当日はコマンドの実行まではお見せしたものの、結果をお見せするのを失念してしまいました…。そこで大変時間が開いてしまいましたが、今回はその結果に加えて詳細もここで説明いたします。
なおデモの時からChef Serverのバージョンも上がっていますので、コードリポジトリも更新してあります。また、事前のWorkstationセットアップ、Hosted ChefへのCookbookアップロードは前提として省略いたします。こちらについて疑問点などございましたらお気軽に弊社までお問合せください。
ではWorkstationにプラグインを導入します。現在Rubygem.orgに公開されているバージョン1.3.1はIssueを抱えており動作しません。リポジトリの最新バージョン(現在は1.4.2)には対応が入っていますので、ローカルにリポジトリをクローンし、Rakeでインストールしてください。
Usageは以下です。インスタンス操作以外にも有用なサブコマンドがあります。
** GOOGLE COMMANDS **
knife google disk create NAME --gce-disk-size N -Z ZONE (options)
knife google disk delete NAME -Z ZONE (options)
knife google disk list -Z ZONE (options)
knife google project list (options)
knife google region list (options)
knife google server create NAME -m MACHINE_TYPE -I IMAGE -Z ZONE (options)
knife google server delete SERVER [SERVER] -Z ZONE (options)
knife google server list -Z ZONE (options)
knife google setup
knife google zone list (options)
次にGoogle Cloud Platformとの認証設定になります。まずGoogle Developer ConsoleのAPI & AuthからClient IDを作成しておきます。その情報をもって knife google setup コマンドにて対話式で入力していきます。こちらは chef-repo/.chef/knife.rb とは別のファイル(デフォルトは ~/.google-compute.json)に保持されます。--gce-credential-file オプションで既存ファイルの指定も可能です。
またbootstrap(server create)時にはSSH Keyが必要です。事前にGoogle Developer Consoleで登録しておきます。Compute EngineのMetadataからSSH Keysを選択し追加します。この際、自身の公開鍵の内容の前に "Google Cloud Platformのユーザ名:" を付与してください。
例:
myuser:ssh-rsa ... mymail@myhost
それではインスタンス起動と合わせてChef Serverをインストールしてみましょう。
今回はマシンタイプにn1-standard-1、イメージにcentos-6-v20150325、ゾーンにasia-east1-aを指定します。また、インストールしたChef Serverにhttpsでアクセス出来るようタグを指定しておきます。
knife google server create chef-server -m n1-standard-1 \
-I centos-6-v20150325 -Z asia-east1-a -i ~/.ssh/id_rsa -x h-urasoko \
-r recipe[chef-server] -T https-server
Looking for Image 'centos-6-v20150325' in Project 'creationline001'
Looking for Image 'centos-6-v20150325' in Project 'centos-cloud'
Found Image 'centos-6-v20150325' in Project 'centos-cloud'
Waiting for the boot disk insert operation to complete
Name: chef-server
Zone: asia-east1-a
Type: pd-standard
Size: 10 gb
Image: centos-6-v20150325
.
Waiting for the create server operation to complete
.
Waiting for the servers to be in running state
Instance Name: chef-server
Machine Type: n1-standard-1
Image: centos-6-v20150325
Zone: asia-east1-a
Tags: https-server
Public IP Address: ["104.199.151.78"]
Private IP Address: ["10.240.21.181"]
Waiting for server
Waiting for sshd
....done
Connecting to 104.199.151.78
104.199.151.78 Installing Chef Client...
104.199.151.78 --2015-04-03 02:47:59-- https://www.opscode.com/chef/install.sh
...(中略)...
104.199.151.78 Running handlers complete
104.199.151.78 Chef Client finished, 9/9 resources updated in 800.184743585 seconds
Complete!!
mba:chef-repo urasoko$ knife google server delete chef-server -Z asia-east1-a
Name: chef-server
Machine Type: n1-standard-1
Zone: asia-east1-a
Tags: https-server
Public IP Address: 104.199.151.78
Private IP Address: 10.240.21.181
インスタンスの起動は本当に早いです。コマンド実行から1分程度でsshdの設定に入りますが、knifeプラグインのリクエストに対するレスポンスが返ってきてからは実質30秒程度で起動します。デモにはもってこいです。ここからはChef ClientのインストールとChef Serverのインストールですが、各パッケージもpackagecloud.ioから取得しますので、ネットワークの早さも効いてます。インストール自体はChef Serverが多様なミドルウェアで構成されていますので、マシンスペックに依存して時間はかかりますが、今回はトータル15分程度で全て完了します。
パブリックIPアドレスにhttpsでアクセスしてみるとサインアップ画面が表示されます。
これでHosted Chef同等の機能が専有かつ日本から近いアジアリージョンで利用可能です。皆さんもお試しになられてはいかがでしょうか。