ようへいの日々精進XP

よかろうもん

knife xenserver で Xenserver を三枚におろす一部始終

要件

  • knife って chef に同梱されているツールだけどプラグインを追加することで各種クラウド環境をコントール出来る
  • xenserver プラグインもあるらしいので試してみる
  • とりあえず knife xenserver を使って xenserver のテンプレートから仮想サーバーをこさえてみる(未検証)

うんちく

knife xenserver で出来ること

  • XenServer 上で稼働している VM 一覧の取得
  • 登録されている VM テンプレート一覧の取得
  • VHD 形式からの VM テンプレート作成
  • VM 作成
  • VM の起動や停止
  • chef server と絡めた provision

ソースコードを眺めてみると

  • fog ライブラリを使っている
    • knife から各種クラウドサービスを扱うのに必要なライブラリ
    • Fog::Compute.new がどうやら肝のようですな
          begin
            @connection = Fog::Compute.new({
              :provider => 'XenServer',
              :xenserver_url => host,
              :xenserver_username => username,
              :xenserver_password => password,
            })

手順

既に chef はインストールされており knife コマンドは銃刀法違反でも無い限り使える状態になっているという前提で...

インストール

  • gem で一発
sudo gem install knife-xenserver
  • ないしは chef-solo で gem_package を使ってインストール
gem_package "knife-xenserver" do
        action :install
end

準備

~/.chef/knife.rb に以下を記載する(コマンドラインからも指定可能)

knife[:xenserver_password] = "your_password"
knife[:xenserver_username] = "root"
knife[:xenserver_host] = "192.168.xx.xx"

使ってみる

  • VM リストの取得
knife xenserver vm list --xenserver-host ${xenserver_host}

以下のような結果が表示される
f:id:inokara:20130414112410p:plain

  • テンプレートリストの取得
knife xenserver template list --include-builtin --xenserver-host ${xenserver_host}

以下のようにテンプレートの一覧が表示される
f:id:inokara:20130414112422p:plain

まとめ

  • knife xenserver を使えば従来 XenCenter でやっていたことがコマンドラインから出来そう
    • そもそも xe コマンドを使えばより細かいことが出来るはずだけど...
  • 強みである chef との連携は引数に -s をつけて chef-server との連携が出来るようになっているがまだ試せていない
knife xenserver vm create ...some options -s ${chef-server}
  • ということで XenServer を三枚おろしにするには程遠かったので引き続き勉強していくつもり