This script is usually called from devtest.sh as devtest_testenv.sh $TE_DATAFILE
JSONFILE=${1:-''}
Configure a network for your test environment. This configures an openvswitch bridge and teaches libvirt about it.
setup-network
Configure a seed VM. This VM has a disk image manually configured by later scripts, and hosts the statically configured seed which is used to bootstrap a full dynamically configured baremetal cloud.
setup-seed-vm -a $NODE_ARCH
Create baremetal nodes for the test cluster. The final parameter to create-nodes is the number of VMs to create. To change this in future you can either run clean-env and then recreate with more nodes, or use create-nodes to make more nodes then add their macs to your testenv.json.
NODE_CNT=$(( $OVERCLOUD_COMPUTESCALE + 2 ))
MACS=$(create-nodes $NODE_CPU $NODE_MEM $NODE_DISK $NODE_ARCH $NODE_CNT | tr '\r\n' ' ')
What IP address to ssh to for virsh operations.
HOSTIP=${HOSTIP:-192.168.122.1}
If a static SEEDIP is in use, define it here. If not defined it will be looked up in the ARP table by the seed MAC address during seed deployment.
SEEDIP=${SEEDIP:-''}
Ensure we can ssh into the host machine to turn VMs on and off. The private key we create will be embedded in the seed VM, and delivered dynamically by heat to the undercloud VM.
# generate ssh authentication keys if they don't exist
if [ ! -f ~/.ssh/id_rsa_virt_power ]; then
ssh-keygen -t rsa -N "" -C virtual-power-key -f ~/.ssh/id_rsa_virt_power
fi
# make the local id_rsa_virt_power.pub be in .ssh/authorized_keys before
# that is copied into images via local-config
if ! grep -qF "$(cat ~/.ssh/id_rsa_virt_power.pub)" ~/.ssh/authorized_keys; then
cat ~/.ssh/id_rsa_virt_power.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
fi
Finally wrap this all up into JSON.
python -c "import json, sys, os; json.dump({'arch':'$NODE_ARCH', 'host-ip':'$HOSTIP', 'power_manager':'$POWER_MANAGER', 'seed-ip':'$SEEDIP', 'node-macs':'$MACS', 'ssh-key': open(os.path.expanduser('~/.ssh/id_rsa_virt_power'), 'rt').read(), 'ssh-user':'`whoami`'}, sys.stdout)" > $JSONFILE