aws vm import / export ハンズオン
DESCRIPTION
JAWS Festa Tohoku 2014 で行ったAWS VM import / export ハンズオンの資料です。TRANSCRIPT
AWSVM Import/ExportハンズオンJAWS Festa Tohoku 2014, 6 September 2014
Haruka Iwao
もくじ
はじめに VM Import / Export とは 詳しい使い方 実際にやってみよう
はじめに
Disclaimer( おやくそく )
この発表は個人的なもので、所属する組織の見解ではありません
内容は無保証です
わたしはだれ?
岩尾 はるか (@Yuryu) レッドハットで働いています
ストレージが専門です 大阪→つくば→横浜→東京 上野からスーパーひたちで仙台
に来たことがあります 好きなサービス : S3
VM Import / Export とは
EC2 のインスタンスを出し入れ EC2 は Xen で動いている
HVM では完全仮想化環境 手元の仮想マシンとディスクイ
メージのやりとりが可能
何がうれしいの?
秘伝のサーバーをそのままEC2 に移行できる
とりあえず EC2 に移して、サーバーが動くか確認できる
対応 OS
イメージを改変するので、対応 OS に限りがある
Windows Server 2003/2003 R2/ 2008/2008 R2/2012/2012 R2
Red Hat Enterprise Linux(RHEL) /CentOS 5.1 ~ 6.5(6.0 を除く )
Ubuntu 12.04 ~ 13.10 Debian 6.0.0 ~ 6.0.8, 7.0 ~ 7.2 RHEL 7 や Ubuntu 14.04 は未対応
OS のライセンス
Windows は AWS が用意するライセンスに移行 時間課金になる
RHEL は手元のサブスクリプションを AWS 上に移行 年間契約のまま
サポートするイメージ形式
VMware VMDK Hyper-V VHD Citrix Xen VHD その他の形式もコンバートす
れば利用可能
サポートされるインスタンス
Windows は何でも OK Linux は一部
インポートしてから変更は OK
その他注意書き
サポート対象はしばしば更新されるので AWS のドキュメントで確認 http://
docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html
VM Export について
インポートしたインスタンスのみエクスポート可能
S3 にエクスポートされる
詳しい使い方
Amazon EC2 CLI を使う
ec2- で始まる Java のツール AWS CLI(Python 製 ) は非対
応 Amazon Linux にはじめから
入っている
環境変数をセット
AWS_ACCESS_KEY AWS_SECRET_KEY EC2_URL
リージョンです 東京は https://ec2.ap-northeast-
1.amazonaws.com
VirtualBox を使う場合
VBoxManage internalcommands converthd –srcformat VDI -dstformat VMDK <source> <dest>
VirtualBox で直接使う VMDKファイルは使用不可
QEMU を使う場合
qemu-img convert –f qcow2 –O vmdk <source> <dest>
インポートの手順
インポートの流れ ( 内部処理 )
S3 にアップロード インスタンスを登録 つなぎ合わせて EBS ボリュー
ムを作成
ec2-import-instance
ec2-import-instance -o $AWS_ACCESS_KEY -w $AWS_SECRET_KEY -f VMDK -t t2.micro -a x86_64 -p Linux --subnet < 対象サブネット > -z <AZ: サブネットに合わせる > –b < 作業用 S3 Bucket> centos6.vmdk( インポートするファイル名 )
S3 に登録された様子
進行状況をチェック
ec2-describe-conversion-tasks
S3 の作業用ファイルを削除
ec2-delete-disk-image -o $AWS_ACCESS_KEY -w $AWS_SECRET_KEY -t < 対象タスク ID>
エクスポートの手順
ec2-create-instance-export-task
ec2-create-instance-export-task < インスタンス ID> -e VMware -b < 出力 bucket>
ec2-describe-export-tasks
状況を表示 終わると active→completed
に変化します
S3 を確認
ファイルができている あとは煮るなり焼くなり
実際にやってみよう
S3 のバケット作成
リージョンを合わせること
作業用 EC2 立ち上げ
t2.micro で Amazon Linux のインスタンスを起動 会場の回線が限られているので
EC2 上で作業します VPC が無い人は VPC も
参考 :EC2 API Tools のインストール
OS X$ brew install ec2-api-tools$ echo ‘export JAVA_HOME="$(/usr/libexec/java_home)”’ \>> ~/.bash_profile$ echo ‘export EC2_HOME=/usr/local/Cellar/ec2-api-tools/1.7.1.0/libexec’ >> ~/.bashrc
Cellar のパスはバージョンごとに変わるので要確認
参考 :EC2 API Tools のインストール
Linux$ wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip$ # Ubuntu の場合$ echo 'export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/jre"’ \ >> .profile$ # Fedora / CentOS の場合$ echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk"’ \>> .bash_profile
ec2-api-tools.zip を展開 (unzip)$ unzip ec2-api-tools.zip$ echo “export EC2_HOME=$(pwd)/ec2-api-tools-1.7.1.1” \>> .profile$ echo ‘export PATH=$PATH:$EC2_HOME/bin’ >> .profile
EC2_HOME のパスはバージョンによって変わるので要確認
インポートする VM の準備
今回はすでに作成したものを使います
$ wget bit.ly/sendai-vm-import-2014 この URL は期間限定です
環境変数を用意します
aws.sh というファイルに内容を用意
$ source aws.sh を実行
export AWS_ACCESS_KEY=xxxexport AWS_SECRET_KEY=xxxexport EC2_URL=https://ec2.ap-northeast-1.amazonaws.com
インポート ec2-import-instance
-o $AWS_ACCESS_KEY -w $AWS_SECRET_KEY -f VMDK -t t2.micro -a x86_64 -p Linux --subnet < 対象サブネット > -z <AZ: サブネットに合わせる > –b < 作業用 S3 Bucket> centos6.vmdk( インポートするファイル名 )
サブネット ID の調べ方
しばらく待ちます
ec2-describe-conversion-tasks で進行状況をチェック
コンソールから確認
起動してみよう
id:root, password:centos で入れます
エクスポートしてみよう
ec2-create-instance-export-task < インスタンス ID> -e VMware -b < 出力 bucket>
おまけ : Docker 化
Volume の Docker 化
標準では、インポートしたものではないインスタンスは持ち出せないので、 Docker で持ち出してみよう
ボリュームをマウント
マウントして固める
# mount /dev/xvdf1 /mnt # cd /mnt # tar --numeric-owner -czpf
/tmp/amazon-linux.tar.gz . 必要に応じてファイルを移動
Docker にインポート
# cat /tmp/amazon-linux.tar.gz | docker - amazon
何か実行
# docker run -it amazon cat /etc/system-release
Thank you!