Hi,

we use one script, which base its commands on ‘ovmcli’, you can see this blog:

https://arumel.com/en/connecting-to-the-oracle-vm-cli-without-password/

The most important part, when you are creating virtual machines for templates, is the order in the network interfaces; eth0 must be the public network and eth1 must be the private network.

This is our script:

[oracle@ovmmanager1 scripts_ovmcli] $ cat crea_vms_pro.sh
#!/bin/bash

shopt -s expand_aliases
alias ovmcli=’/home/oracle/./ovmcli.sh’

ovmcli “clone Vm name=ovmsrv01-vm.cfg destType=Vm destName=nodo01 serverPool=PROSRVPOOL”
ovmcli “clone Vm name=ovmsrv02-vm.cfg destType=Vm destName=nodo02 serverPool=PROSRVPOOL”
ovmcli “edit Vm name=nodo01 memory=40960 memoryLimit=40960 cpuCount=12 cpuCountLimit=12 osType=’Oracle Linux 7′ keymapName=es description=’nodo 1 del rac de PRO’”
ovmcli “edit Vm name=nodo02 memory=40960 memoryLimit=40960 cpuCount=12 cpuCountLimit=12 osType=’Oracle Linux 7′ keymapName=es description=’nodo 2 del rac de PRO’”
ovmcli “create Vnic name=eth0 network=PRO-PUB on Vm name=nodo01”
ovmcli “create Vnic name=eth1 network=PRO-PRIV on Vm name=nodo01”
ovmcli “create Vnic name=eth0 network=PRO-PUB on Vm name=nodo02”
ovmcli “create Vnic name=eth1 network=PRO-PRIV on Vm name=nodo02”

slot=1
nombre=b

# Añadimos los discos de su entorno para VOTOCR
for asm in ovmcli list PhysicalDisk | grep PRO | egrep “VOTOCR” | awk ‘{print $3}’| cut -d “:” -f2 | sort
do
slot=$((slot+1))
nombre=echo $nombre | tr ‘[a-y]z’ ‘[b-z]a’
ovmcli “create VmDiskMapping slot=$slot physicalDisk=$asm name=xvd$nombre on Vm name=nodo01”
ovmcli “create VmDiskMapping slot=$slot physicalDisk=$asm name=xvd$nombre on Vm name=nodo02”
done

# Añadimos los discos de su entorno para MGMTDB
for asm in ovmcli list PhysicalDisk | grep PRO | egrep “MGMTDB” | awk ‘{print $3}’| cut -d “:” -f2 | sort
do
slot=$((slot+1))
nombre=echo $nombre | tr ‘[a-y]z’ ‘[b-z]a’
ovmcli “create VmDiskMapping slot=$slot physicalDisk=$asm name=xvd$nombre on Vm name=nodo01”
ovmcli “create VmDiskMapping slot=$slot physicalDisk=$asm name=xvd$nombre on Vm name=nodo02”
done

# Añadimos los discos de su entorno para DATA
for asm in ovmcli list PhysicalDisk | grep PRO | egrep “DATA” | awk ‘{print $3}’| cut -d “:” -f2 | sort
do
slot=$((slot+1))
nombre=echo $nombre | tr ‘[a-y]z’ ‘[b-z]a’
ovmcli “create VmDiskMapping slot=$slot physicalDisk=$asm name=xvd$nombre on Vm name=nodo01”
ovmcli “create VmDiskMapping slot=$slot physicalDisk=$asm name=xvd$nombre on Vm name=nodo02”
done

# Añadimos los discos de su entorno para FRA
for asm in ovmcli list PhysicalDisk | grep PRO | egrep “FRA” | awk ‘{print $3}’| cut -d “:” -f2 | sort
do
slot=$((slot+1))
nombre=echo $nombre | tr ‘[a-y]z’ ‘[b-z]a’
ovmcli “create VmDiskMapping slot=$slot physicalDisk=$asm name=xvd$nombre on Vm name=nodo01”
ovmcli “create VmDiskMapping slot=$slot physicalDisk=$asm name=xvd$nombre on Vm name=nodo02”
done

# Añadimos los discos de su entorno para ADMIN
for asm in ovmcli list PhysicalDisk | grep PRO | egrep “ADMIN” | awk ‘{print $3}’| cut -d “:” -f2 | sort
do
slot=$((slot+1))
nombre=echo $nombre | tr ‘[a-y]z’ ‘[b-z]a’
ovmcli “create VmDiskMapping slot=$slot physicalDisk=$asm name=xvd$nombre on Vm name=nodo01”
ovmcli “create VmDiskMapping slot=$slot physicalDisk=$asm name=xvd$nombre on Vm name=nodo02”
done

# Borramos las interfaces xenbr0|1 de las templates para dejar las eth0|
for xenbr in ovmcli list vnic |grep name | awk ‘{print $3}’ |cut -c 6- |grep :; do
ovmcli delete vnic name=${xenbr}
done