狠狠撸

狠狠撸Share a Scribd company logo
Sys::Virt と Sys::Guestfs
 で仮想マシンを操ってみた
          2012/8/18
      id:hogem / @hogem
自己紹介
?   Kenichi Morimoto
?   id:hogem / @hogem
     ?   http//d.hatena.ne.jp/hogem/
?   Infra, Server, Network Engineer
?   某鉄道系グループ企業
     ?   ISP 事業 , サーバホスティング等
Kyoto.pm 20120818-hogem
Perl 使っているところ
?   CMTS, CATV Modem(Docsis)
?   Log Rotate, File Backup
?   ネットワーク機器設定 , 管理
     ?   Net::Telnet(::Cisco), Net::SSH
     ?   Net::Snmp
?   ログ検索、業務系管理用 Web App
     ?   CGI, CGI::Application, Plack
     ?   cgi-lib.pl (!?)
仮想化
仮想化でサーバ構築が楽に?
?   大量のサーバクローン、起動、停止
?   クローン後の単純作業が結構ある
    ?   IP, MAC, hostname
    ?   uuid,
    ?その他 app ごとの設定
?   この辺りを楽に運用したい!
KVM と libvirt
?   KVM
     ?   仮想化ハイパーバイザ : Linux Kernel
?   libvirt
     ?   仮想化 API
          ?   virsh ( コマンドライン )
          ?   virt-manager (GUI: python)
          ?   Sys::Virt (perl)
Sys::Virt
?   libvirt perl binding
?   OS の libvirt に依存するので cpan ではな
    く、 yum/apt での install が楽


$uri = "qemu///system";
$vmm = Sys::Virt->new(uri => $uri);
@domains = $vmm->list_domains();
$dom = $vmm->get_domain_by_name($name);
Sys::Virt::Domain
?   Sys::Virt::list_domain() で返される配
    列の要素 # 個々の仮想マシンオブジェクト
?   $dom->destroy()   # 強制停止
?   $dom->create()    # 起動
?   $dom->shutdown() # 停止
     ?   仮想マシン上で acpid の起動が必要
停止状態の仮想マシンを起動
use Sys::Virt;
my $uri = "qemu+ssh://$host/system";
$vmm = Sys::Virt->new(uri => $uri);

for my $dom ($vmm->list_defined_domains) {
  if ($dom->get_info->{state} ==
    Sys::Virt::Domain::STATE_SHUTOFF) {
    $dom->create();
    print $dom->get_name, " createdn";
  }
}
Sys::Virt デモ
?   https://github.com/hogem/libvirt_webapp
?   KVM 操作簡易 web app
     ?   仮想マシン起動 , 停止 , VNC 接続
?   VNC コンソール接続 ( 非 Sys::Virt)
     ?   VNC Client : TightVNC (java)
     ?   ssh port forwarding to vnc port
仮想マシンクローン後の作業
?   Hostname 変更
?   IP, MAC アドレス変更
     ?   /etc/sysconfig/network
     ?   ifcfg-ethX
     ?   /etc/udev/rules.d/70-persistent-
         net.rules
?   起動時 daemon の変更 (chkconfig)
?   その他 各 app ごとの設定など
Sys::Guestfs
?   libguestfs の perl binding
?   guestfish コマンド
?   cpan にないので yum で
     ?   yum install perl-Sys-Guestfs
?   libguestfs
     ?   仮想マシンの Disk イメージを操作
     ?   ファイル参照 (cat),export(copy-out)
     ? ファイル書込 (vi),import(copy-in)
     ? コマンド実行
Sys::Guestfs sample
use Sys::Guestfs;
my $h = Sys::Guestfs->new();
$h->add_drive_opts(
  'disk.img', format => 'qcow2'
);
$h->launch();
$h->mount_options('', '/dev/vda1', '/');
$output = $h->command(
  [qw(chkconfig nginx off)]
);
$h->sync();
$h->close();
Sys::Guestfs デモ
まとめ
?   Sys::Virt(libvirt api) で仮想マシンの起
    動、停止等ができる
?   Sys::Guestfs で仮想マシンの disk イメー
    ジを mount して、ファイル読み書き、コマン
    ド実行ができる
?   大量の仮想マシン操作のお供にどうぞ
质问?
ご静聴ありがとう
 ございました
libvirt memo
●   (Sys::Virt に限らず ) NFS で共有している
    領域に disk image を置く場合、複数のハイ
    パーバイザで同時起動しないように注意す
    る。 File system が壊れてしまう
●   remote の hypervisor を操作する場
    合、 ssh passphrase なしの公開鍵を作成
    しておくとログインが楽になる
guestfish memo
●   起動中の image に書き込みを加えると file
    system が壊れる。変更の必要がなければ -
    ro を推奨。

●   # guestfish -ro -a disk.img
●   > run
●   > list-filesystems
●   > mount /dev/vda1 /

More Related Content

What's hot (19)

Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminal
Takuya ASADA
?
痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门
痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门
痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门
Masashi Shinbara
?
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
Kohei Hoshi
?
ピクシブの自作インフラ事情
ピクシブの自作インフラ事情ピクシブの自作インフラ事情
ピクシブの自作インフラ事情
Ryuta Kamizono
?
An idea of bios emulation on b hy ve
An idea of bios emulation on b hy veAn idea of bios emulation on b hy ve
An idea of bios emulation on b hy ve
Takuya ASADA
?
こんてなぐらし!?FreeBSD VPSでライブマイグレーション?
こんてなぐらし!?FreeBSD VPSでライブマイグレーション?こんてなぐらし!?FreeBSD VPSでライブマイグレーション?
こんてなぐらし!?FreeBSD VPSでライブマイグレーション?
furandon_pig
?
FreeBSD VPSでLive Migration
FreeBSD VPSでLive MigrationFreeBSD VPSでLive Migration
FreeBSD VPSでLive Migration
spg_games
?
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
atk1234
?
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
?
OSvのご紹介 in ?Java 8 HotSpot meeting
OSvのご紹介 in ?Java 8 HotSpot meetingOSvのご紹介 in ?Java 8 HotSpot meeting
OSvのご紹介 in ?Java 8 HotSpot meeting
Takuya ASADA
?
コマンドラインから辫濒颈蝉迟ファイルを扱う
コマンドラインから辫濒颈蝉迟ファイルを扱うコマンドラインから辫濒颈蝉迟ファイルを扱う
コマンドラインから辫濒颈蝉迟ファイルを扱う
Yusuke Kawakami
?
颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较
Sugawara Genki
?
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方
Kamimura Taichi
?
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
tokuhy
?
颁辞苍迟补颈苍别谤で変わる顿别惫翱辫蝉
颁辞苍迟补颈苍别谤で変わる顿别惫翱辫蝉颁辞苍迟补颈苍别谤で変わる顿别惫翱辫蝉
颁辞苍迟补颈苍别谤で変わる顿别惫翱辫蝉
shokiri
?
OSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/FallOSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/Fall
Takuya ASADA
?
础奥厂と骋颁笔を使用したインフラ环境
础奥厂と骋颁笔を使用したインフラ环境础奥厂と骋颁笔を使用したインフラ环境
础奥厂と骋颁笔を使用したインフラ环境
Katsutoshi Nagaoka
?
奥别产サーバ构筑で心がけるべき二つのこと
奥别产サーバ构筑で心がけるべき二つのこと奥别产サーバ构筑で心がけるべき二つのこと
奥别产サーバ构筑で心がけるべき二つのこと
TrinityT _
?
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminal
Takuya ASADA
?
痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门
痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门
痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门
Masashi Shinbara
?
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
Kohei Hoshi
?
ピクシブの自作インフラ事情
ピクシブの自作インフラ事情ピクシブの自作インフラ事情
ピクシブの自作インフラ事情
Ryuta Kamizono
?
An idea of bios emulation on b hy ve
An idea of bios emulation on b hy veAn idea of bios emulation on b hy ve
An idea of bios emulation on b hy ve
Takuya ASADA
?
こんてなぐらし!?FreeBSD VPSでライブマイグレーション?
こんてなぐらし!?FreeBSD VPSでライブマイグレーション?こんてなぐらし!?FreeBSD VPSでライブマイグレーション?
こんてなぐらし!?FreeBSD VPSでライブマイグレーション?
furandon_pig
?
FreeBSD VPSでLive Migration
FreeBSD VPSでLive MigrationFreeBSD VPSでLive Migration
FreeBSD VPSでLive Migration
spg_games
?
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
atk1234
?
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
?
OSvのご紹介 in ?Java 8 HotSpot meeting
OSvのご紹介 in ?Java 8 HotSpot meetingOSvのご紹介 in ?Java 8 HotSpot meeting
OSvのご紹介 in ?Java 8 HotSpot meeting
Takuya ASADA
?
コマンドラインから辫濒颈蝉迟ファイルを扱う
コマンドラインから辫濒颈蝉迟ファイルを扱うコマンドラインから辫濒颈蝉迟ファイルを扱う
コマンドラインから辫濒颈蝉迟ファイルを扱う
Yusuke Kawakami
?
颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较
Sugawara Genki
?
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方
Kamimura Taichi
?
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
tokuhy
?
颁辞苍迟补颈苍别谤で変わる顿别惫翱辫蝉
颁辞苍迟补颈苍别谤で変わる顿别惫翱辫蝉颁辞苍迟补颈苍别谤で変わる顿别惫翱辫蝉
颁辞苍迟补颈苍别谤で変わる顿别惫翱辫蝉
shokiri
?
OSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/FallOSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/Fall
Takuya ASADA
?
础奥厂と骋颁笔を使用したインフラ环境
础奥厂と骋颁笔を使用したインフラ环境础奥厂と骋颁笔を使用したインフラ环境
础奥厂と骋颁笔を使用したインフラ环境
Katsutoshi Nagaoka
?
奥别产サーバ构筑で心がけるべき二つのこと
奥别产サーバ构筑で心がけるべき二つのこと奥别产サーバ构筑で心がけるべき二つのこと
奥别产サーバ构筑で心がけるべき二つのこと
TrinityT _
?

Similar to Kyoto.pm 20120818-hogem (20)

Cinnamon - simple deploy tool
Cinnamon - simple deploy toolCinnamon - simple deploy tool
Cinnamon - simple deploy tool
Yuki Shibazaki
?
ヤギにサーバーを管理してもらう话
ヤギにサーバーを管理してもらう话ヤギにサーバーを管理してもらう话
ヤギにサーバーを管理してもらう话
Masaki Kobayashi
?
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
?
恋に落ちるテ?フ?ロイツール
恋に落ちるテ?フ?ロイツール恋に落ちるテ?フ?ロイツール
恋に落ちるテ?フ?ロイツール
totty jp
?
コンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのかコンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのか
えむ ばーど
?
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
?
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
?
Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
Fujishiro Takuya
?
Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth
LINE Corporation
?
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
gu4
?
Dockerイメーシ?構築 実践テクニック
Dockerイメーシ?構築 実践テクニックDockerイメーシ?構築 実践テクニック
Dockerイメーシ?構築 実践テクニック
Emma Haruka Iwao
?
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
Masakazu Asama
?
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
?
クラウド环境向け窜补产产颈虫カスタマイズ绍介(第5回窜补产产颈虫勉强会)
クラウド环境向け窜补产产颈虫カスタマイズ绍介(第5回窜补产产颈虫勉强会)クラウド环境向け窜补产产颈虫カスタマイズ绍介(第5回窜补产产颈虫勉强会)
クラウド环境向け窜补产产颈虫カスタマイズ绍介(第5回窜补产产颈虫勉强会)
Daisuke Ikeda
?
贵补产谤颈肠でサーバー管理を顿搁驰にしよう
贵补产谤颈肠でサーバー管理を顿搁驰にしよう贵补产谤颈肠でサーバー管理を顿搁驰にしよう
贵补产谤颈肠でサーバー管理を顿搁驰にしよう
max747
?
作られては消えていく泡のように儚いクラスタの运用话
作られては消えていく泡のように儚いクラスタの运用话作られては消えていく泡のように儚いクラスタの运用话
作られては消えていく泡のように儚いクラスタの运用话
Tsuyoshi Torii
?
仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する
junichi anno
?
Cinnamon - simple deploy tool
Cinnamon - simple deploy toolCinnamon - simple deploy tool
Cinnamon - simple deploy tool
Yuki Shibazaki
?
ヤギにサーバーを管理してもらう话
ヤギにサーバーを管理してもらう话ヤギにサーバーを管理してもらう话
ヤギにサーバーを管理してもらう话
Masaki Kobayashi
?
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
?
恋に落ちるテ?フ?ロイツール
恋に落ちるテ?フ?ロイツール恋に落ちるテ?フ?ロイツール
恋に落ちるテ?フ?ロイツール
totty jp
?
コンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのかコンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのか
えむ ばーど
?
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
?
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
?
Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth
LINE Corporation
?
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
gu4
?
Dockerイメーシ?構築 実践テクニック
Dockerイメーシ?構築 実践テクニックDockerイメーシ?構築 実践テクニック
Dockerイメーシ?構築 実践テクニック
Emma Haruka Iwao
?
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
?
クラウド环境向け窜补产产颈虫カスタマイズ绍介(第5回窜补产产颈虫勉强会)
クラウド环境向け窜补产产颈虫カスタマイズ绍介(第5回窜补产产颈虫勉强会)クラウド环境向け窜补产产颈虫カスタマイズ绍介(第5回窜补产产颈虫勉强会)
クラウド环境向け窜补产产颈虫カスタマイズ绍介(第5回窜补产产颈虫勉强会)
Daisuke Ikeda
?
贵补产谤颈肠でサーバー管理を顿搁驰にしよう
贵补产谤颈肠でサーバー管理を顿搁驰にしよう贵补产谤颈肠でサーバー管理を顿搁驰にしよう
贵补产谤颈肠でサーバー管理を顿搁驰にしよう
max747
?
作られては消えていく泡のように儚いクラスタの运用话
作られては消えていく泡のように儚いクラスタの运用话作られては消えていく泡のように儚いクラスタの运用话
作られては消えていく泡のように儚いクラスタの运用话
Tsuyoshi Torii
?
仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する
junichi anno
?

Kyoto.pm 20120818-hogem

  • 1. Sys::Virt と Sys::Guestfs で仮想マシンを操ってみた 2012/8/18 id:hogem / @hogem
  • 2. 自己紹介 ? Kenichi Morimoto ? id:hogem / @hogem ? http//d.hatena.ne.jp/hogem/ ? Infra, Server, Network Engineer ? 某鉄道系グループ企業 ? ISP 事業 , サーバホスティング等
  • 4. Perl 使っているところ ? CMTS, CATV Modem(Docsis) ? Log Rotate, File Backup ? ネットワーク機器設定 , 管理 ? Net::Telnet(::Cisco), Net::SSH ? Net::Snmp ? ログ検索、業務系管理用 Web App ? CGI, CGI::Application, Plack ? cgi-lib.pl (!?)
  • 6. 仮想化でサーバ構築が楽に? ? 大量のサーバクローン、起動、停止 ? クローン後の単純作業が結構ある ? IP, MAC, hostname ? uuid, ?その他 app ごとの設定 ? この辺りを楽に運用したい!
  • 7. KVM と libvirt ? KVM ? 仮想化ハイパーバイザ : Linux Kernel ? libvirt ? 仮想化 API ? virsh ( コマンドライン ) ? virt-manager (GUI: python) ? Sys::Virt (perl)
  • 8. Sys::Virt ? libvirt perl binding ? OS の libvirt に依存するので cpan ではな く、 yum/apt での install が楽 $uri = "qemu///system"; $vmm = Sys::Virt->new(uri => $uri); @domains = $vmm->list_domains(); $dom = $vmm->get_domain_by_name($name);
  • 9. Sys::Virt::Domain ? Sys::Virt::list_domain() で返される配 列の要素 # 個々の仮想マシンオブジェクト ? $dom->destroy() # 強制停止 ? $dom->create() # 起動 ? $dom->shutdown() # 停止 ? 仮想マシン上で acpid の起動が必要
  • 10. 停止状態の仮想マシンを起動 use Sys::Virt; my $uri = "qemu+ssh://$host/system"; $vmm = Sys::Virt->new(uri => $uri); for my $dom ($vmm->list_defined_domains) { if ($dom->get_info->{state} == Sys::Virt::Domain::STATE_SHUTOFF) { $dom->create(); print $dom->get_name, " createdn"; } }
  • 11. Sys::Virt デモ ? https://github.com/hogem/libvirt_webapp ? KVM 操作簡易 web app ? 仮想マシン起動 , 停止 , VNC 接続 ? VNC コンソール接続 ( 非 Sys::Virt) ? VNC Client : TightVNC (java) ? ssh port forwarding to vnc port
  • 12. 仮想マシンクローン後の作業 ? Hostname 変更 ? IP, MAC アドレス変更 ? /etc/sysconfig/network ? ifcfg-ethX ? /etc/udev/rules.d/70-persistent- net.rules ? 起動時 daemon の変更 (chkconfig) ? その他 各 app ごとの設定など
  • 13. Sys::Guestfs ? libguestfs の perl binding ? guestfish コマンド ? cpan にないので yum で ? yum install perl-Sys-Guestfs ? libguestfs ? 仮想マシンの Disk イメージを操作 ? ファイル参照 (cat),export(copy-out) ? ファイル書込 (vi),import(copy-in) ? コマンド実行
  • 14. Sys::Guestfs sample use Sys::Guestfs; my $h = Sys::Guestfs->new(); $h->add_drive_opts( 'disk.img', format => 'qcow2' ); $h->launch(); $h->mount_options('', '/dev/vda1', '/'); $output = $h->command( [qw(chkconfig nginx off)] ); $h->sync(); $h->close();
  • 16. まとめ ? Sys::Virt(libvirt api) で仮想マシンの起 動、停止等ができる ? Sys::Guestfs で仮想マシンの disk イメー ジを mount して、ファイル読み書き、コマン ド実行ができる ? 大量の仮想マシン操作のお供にどうぞ
  • 19. libvirt memo ● (Sys::Virt に限らず ) NFS で共有している 領域に disk image を置く場合、複数のハイ パーバイザで同時起動しないように注意す る。 File system が壊れてしまう ● remote の hypervisor を操作する場 合、 ssh passphrase なしの公開鍵を作成 しておくとログインが楽になる
  • 20. guestfish memo ● 起動中の image に書き込みを加えると file system が壊れる。変更の必要がなければ - ro を推奨。 ● # guestfish -ro -a disk.img ● > run ● > list-filesystems ● > mount /dev/vda1 /