仮想マシンの自動化スクリプトを作成します。

1、XMLテンプレート

<! -
WARNING:これは、自動生成されたファイルです。ITへの変更がある可能性が高い
上書きされ、失われました。:このxml構成の変更は、使用して行われるべき
  virshを編集ノード1
かのlibvirt APIを使用して他のアプリケーションを。
- >

<ドメインタイプ= 'KVM'>
  <名前>ノード1 </名前>
  <UUID> fb0d1a74-26c5-4734-87b9-3d8f87ea5eb4 </のuuid>
  <メモリユニット= 'KiBの'> 1048576 </メモリ>
  <currentMemory単位= 'KiBの'> 1048576 </ currentMemory>
  <VCPU配置= '静的'> 1 </ VCPU>
  <OS>
    <タイプアーチ= 'x86_64の'マシン= 'PC-i440fx-rhel7.0.0'> HVM </タイプ>
    <ブートDEV = 'HD' />
  <




  <CPUモードが= 'カスタム'の一致= '正確'>
    <モデルフォールバック= '許可'>ハスウェル-noTSX </モデル>
  </ CPU>
  <クロックオフセット= 'UTC'>
    <タイマー名= 'RTC' tickpolicy =」キャッチアップ'/>
    <タイマー名='ピット」tickpolicy = '遅延' />
    <タイマー名= 'HPET'が存在= 'NO' />
  </クロック>
  <on_poweroff>破壊</ on_poweroff>
  <on_reboot>再起動</しませんon_reboot>
  <on_crash>再起動</ on_crash>
  <午後>
    <サスペンドに-MEM有効= 'NO' />
    <ディスクへのサスペンドが有効= 'NO' />
  </午後>
  <デバイス>
    <エミュレータ>は/ usr / libexecに/ QEMU-KVM </エミュレータ>
    <ディスクタイプ= 'ファイル'デバイス= 'ディスク'>
      <ドライバ名= 'QEMU' TYPE = 'QCOW2' />
      <ソースファイル= 'の/ var / libに/のlibvirt /画像/ centos7.0.qcow2' />
      <目標DEV = 'HDA'バス= 'IDE' />
      <アドレスタイプ= 'ドライブ'コントローラ= '0'バス= '0'ターゲット= '0'単位= '0' />
    </ディスク>
    <コントローラタイプ= 'USB'インデックス= '0'モデル= 'ICH9-ehci1'>
      <アドレスタイプ= 'PCI'ドメイン= '0000 'バス=' 0' ×00スロット= '0x06の'機能= '0x7の' />
    </コントローラ>
    <コントローラタイプ= 'USB'インデックス= '0'モデル= 'ICH9-uhci1'>
      <マスターstartPortと= '0' / >
      <アドレスタイプ= 'PCI'ドメイン= '0000'バス= 'が0x00の'スロット= '0x06の'機能=」0x0'の多機能= 'オン' />
    </コントローラ>
    <コントローラタイプ= 'USB'インデックス= '0'モデル= 'ICH9-uhci2'>
      <マスターstartPortと= '2' />
      <アドレスタイプ= 'PCI'ドメイン= '0000'バス= '0×00'スロット= '0x06の'機能= '0x1の' />
    </コントローラ>
    <コントローラタイプ= 'USB'インデックス= '0'モデル= 'ich9- uhci3 '>
      <マスターstartPortと=' 4 '/>
      <アドレスタイプ=' PCI 'ドメインは= '0000'バス= '0×00'スロット= '0x06の'機能= 'を0x2'/>
    </コントローラ>
    <コントローラタイプ=' PCI 'インデックス= '0'モデル= 'PCIルート'/>
    <コントローラタイプ= 'IDE'インデックス= '0'>
      <アドレスタイプ= 'PCI'ドメイン= '0000'バス= '0×00'スロット=' 0×01 '機能=' 0x1'の/>
    </コントローラ>
    <コントローラタイプ= 'のvirtio-シリアル'指数= '0'>
      <アドレスタイプ= 'PCI'ドメイン= '0000'バス= '0×00'スロット= '0×05'関数= 'は0x0' />
    </コントローラ>
    <インターフェイスタイプ= 'ネットワーク'>
      <MACアドレス= '52:54:00:FF:01:01 '/>
      <ソースネットワーク=' private1 '/>
      <機種='のvirtio '/>
      <アドレスタイプ=' PCI」ドメイン= '0000'バス= '0×00'スロット= '0×03'関数= 'は0x0' />
    </インターフェイス>
    <インターフェイスタイプ= 'ネットワーク'>
      <MACアドレス= '52:54:00:7E:01:02' />
      <ソースネットワーク= 'private2' />
      <機種= 'のvirtio' />
      <アドレスタイプ= 'PCI'ドメイン= '0000'バス= '0×00'スロット= '0x08に'機能= 'が0x0' />
    </インターフェイス>
    <インターフェイスTYPE = 'ネットワーク'>
      <MACアドレス= '52:54:00:B3:01:03 '/>
      <ソースネットワーク=' public1 '/>
      <機種='のvirtio '/>
      <アドレスタイプ=' PCI」ドメイン= '0000'バス= '0×00'スロット= '0x09の'機能= 'は0x0' / >
    </インターフェイス>
    <インターフェイスタイプ= 'ネットワーク'>
      <MACアドレス= '52:54:00:62:01:04 '/>
      <ソースネットワーク=' public2 '/>
      <機種='のvirtio '/>
      <アドレスタイプ= 'PCI'ドメイン= '0000'バス= '0×00'スロット= 'は0x0A'関数= 'は0x0' />
    </インターフェイス>
    <シリアル型= 'PTY'>
      <ターゲットポート= '0' />
    <シリアル/>
    <コンソールタイプ= 'PTY'>
      <ターゲット・タイプ= 'シリアル'ポート= '0' />
    </コンソール>
    <チャネル・タイプ= 'spicevmc'>
      <ターゲット・タイプ= 'のvirtio' NAME = 'com.redhat .spice.0' />
      <アドレスタイプ= 'のvirtio-シリアル'コントローラ= '0'バス= '0'ポート= '1' />
    </チャネル>
    の<input type = 'マウス'バス= 'PS2' />
    <INPUT TYPE = 'キーボード'バス= 'PS2' />
    <グラフィックTYPE = 'スパイス' autoport = 'YES'>
      <画像圧縮= 'OFF' />
    </グラフィック>
    <音響モデルは= 'ICH6'>
      <アドレスTYPE = 'PCI'ドメイン= '0000'バス=の'0x00の'スロット= '0×04'関数= 'は0x0' />
    </サウンド>
    <動画>
      <機種= 'QXL'ラム= '65536' VRAM = '65536 'vgamemは=' 16384'ヘッド= '1' />
      <アドレスタイプ= 'PCI'ドメインは= '0000'バス= '0×00'のスロットは= '0×02'関数= 'は0x0' />
    </ビデオ>
    <redirdevバス= 'USB'タイプ= 'spicevmc'>
    </ redirdev>
    <redirdevバス= 'USB' TYPE = 'spicevmc'>
    </ redirdev>
    <memballoonモデル= 'のvirtio'>
      <アドレスタイプ= 'PCI' =ドメイン'0000'バス= '0×00'スロット= '0x07の'機能= 'が0x0' />
    </ memballoon>
  </デバイス>
</ドメイン>

図2に示すように、画像ファイルの後端

3、スクリプトを作成します

[ルート@ localhostのOMC]#のCAT /home/jy/kvm/cmd/clonevm.sh
#/ binに/ bashのの
#パラメータは、受信
#仮想マシン名
DOMname = $ 1

、その後、IF [-z $ DOMname]
  「エコー名前を入力してくださいのVMを! "
  終了します。9
Fiの

UUID = $(のuuidgen)
ストレージプールセットポジション
IMGDIR ="の/ var / libに/ libvirtの/画像"

#リア鏡に配置されたディレクトリ
IMG_BK_DIR ="の/ var / libに/ libvirtの/画像/ bkimg」

#vmXMLテンプレートパス
VM_XMLPATH = "/ホーム/ JY / KVM / CMD / xmltmpl / centos7.xml"

#vm設定パス
VM_XML_SYSPATH = "の/ etc / libvirtの/ QEMU" 仮想マシン数ストレージファイルディレクトリVM_CODEFILE =「/ホーム/ JY / KVM /cmd/xmltmpl/vmcode.txt「STARTNUM = `$ VM_CODEFILE`のCATの#は、01-09,10-19,20-29を作成する現在のコーディングマシンを取得します30-39 TO_CREATE_VMNO = $ [STARTNUM + 1] tmpNum = 0







場合は、[$ TO_CREATE_VMNOは10 -lt];その後、
  tmpNum = "0 $ TO_CREATE_VMNO"

  tmpNum = "$ TO_CREATE_VMNO"
Fi回線
MAC_START_PREFIX = "52:54:00:FF:$ tmpNum"

#linux TMPL名
LINUX_BACK_IMG = "centos7.0を。 QCOW2"

".... VMを作成して開始しエコー"
Macは$ MAC_START_PREFIX "でスタートエコー"現在のVM

#检查是否存在
[-fもし"$ IMGDIR / $ DomName.qcow2"];その後、
  エコー「はおそらく、VM名を確認してくださいすでに存在しています!"
  1番出口
Fiの

CP $ VM_XMLPATH /mnt/tmplvm.xml
のsed -i "sの#<名前>。* </名前>#<名前> $ DomName </名前>#" /mnt/tmplvm.xml
のsed -i「sの#<UUID>。* </ UUID>#<UUID> $ UUID </ UUID>#」


-i sedの"S / <ソースファイル=」。* \。QCOW2' \ /> / <ソースファイル= '$ imgName' \ /> /" /mnt/tmplvm.xml
sedの-i "S / <MACアドレス= 「\(\ {2 \} \):(。* \)\(。* \)\(。* \)\:\(\ {2 \} \。):\(。* \) '\ /> / <MACアドレス=' $ MAC_START_PREFIX:\ 6「\ /> /「/mnt/tmplvm.xml

OS7確保するためのテンプレートとして#、フロントミラーを作成
QEMU-IMGは、-f QCOW2 -b $作成 IMG_BK_DIR / $を$ IMGDIR LINUX_BACK_IMG / $ DomName.qcow2 25G&>を/ dev / null
SLEEP 3

CP /mnt/tmplvm.xml $ VM_XML_SYSPATH / $ DomName.xml
virshをDEFINE $ VM_XML_SYSPATH / $ DomName.xml

エコー$ TO_CREATE_VMNO> VM_CODEFILE $
エコー「を作成したVM !成功"
のvirt-マネージャの


#は、テンプレートのXMLをコピーし、名前を変更し、UUID、ネットワークカードのMAC(マシン・コードのXX:XX:XX:XX: 01( 最初のマシン、二機02):XX)

 

おすすめ

転載: www.cnblogs.com/justart/p/11520335.html