Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
acliを使って、vmを大量作成しよう
AHVでvmを大量に立ち上げよう
この記事は、Nutanix Advent Calender 12/04の記事です
http://www.adventar.org/calendars/1124
vmを大量に用意しなければならないとき、acliコマンドを使うと便利です。
acliコマンドはKVMのvirshに相当するコマンドですが、従来はxmlを編集しなければ出来なかったことであっても、
コマンド一発でだいたいできます。
今回はその一例として、雛形となるVMを大量に複製して、ipアドレスだけ個別に設定して歩く手法をご紹介します。
まず、元となるvmを用意します。
そして、そのvmをクローンします。
nutanix@NTNX-13AM3K123456-3-CVM:172.16.0.1:~$ acli vm.clone destVM clone_from_vm=srcVM
destVM: pending
destVM: complete
nutanix@NTNX-13AM3K123456-3-CVM:172.16.0.1:~$
クローンはすぐに終わります。
クローンすると、NICのMACアドレスは全部ランダムなものに変更されます。
DHCPなどで動的に払い出しているのでしたら問題は無いのですが、staticな場合は、次のようにしてVMのMACアドレスを変更します。
なお、本来ならMACアドレスにIPレイヤの情報をのせるのは余り良くないのですが、
vmにAHVから情報を渡すのにMACアドレスを使用するのは非常に楽なので、
危険性の無い範囲でこのようなこともすることができる、というご紹介です。
nutanix@NTNX-13AM3K123456-3-CVM:172.16.0.1:~$ acli vm.nic_list destVM
MAC address
52:54:00:03:6a:fb
nutanix@NTNX-13AM3K123456-3-CVM:172.16.0.1:~$ acli vm.nic_delete destVM 52:54:00:03:6a:fb
NicDelete: pending
NicDelete: complete
nutanix@NTNX-13AM3K123456-3-CVM:172.16.0.1:~$
nutanix@NTNX-13AM3K123456-3-CVM:172.16.0.1:~$ acli vm.nic_create destVM network=vlan.70 mac=52:54:00:00:00:aa
NicCreate: pending
NicCreate: complete
起動スクリプト(/etc/rc系のファイル)にこのような設定スクリプトを仕込んでおくと、
dhcpを使わなくても、AHVから渡したNIC情報を使ってifconfigの設定を行うことが出来ます。
#!/usr/bin/perl
my %mac;
open(IFCONFIG, "ifconfig -a |");
while(<IFCONFIG>){
if(/(eth\d+)\s+Link encap:Ethernet HWaddr ([0-9a-f:]+)/i){
$mac{$1}=$2;
}
}
close(IFCONFIG);
foreach my $nic (keys(%mac)){
if($mac{$nic} =~ m/52:54:00:00:00:([0-9a-f]+)/i){
my $dec=hex($1);
system("ifconfig $nic 172.16.1.$dec netmask 255.255.255.0");
system("route add ...");
}
}
なお、NutanixはVMを大量生成してもクラスタ内のノードで勝手に分散してくれますので、
どのホストにどのVMが乗るのかを心配する必要はありません。
VMなんて使い捨てのごとく大量生産して大量廃棄しても全然問題ありません。
便利ですね。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment