#!/bin/bash # {{ target_host }} set -eux # Discover new compute nodes sudo podman exec -it nova_api nova-manage cell_v2 discover_hosts --verbose # Export standalone cloud export OS_CLOUD=standalone # Export some needed variables export GATEWAY='{{ tempest_cidr|nthhost(1) }}' export PUBLIC_NETWORK_CIDR='{{ tempest_cidr }}' export PRIVATE_NETWORK_CIDR=192.168.74.0/28 export PUBLIC_NET_START='{{ tempest_cidr|nthhost(150) }}' export PUBLIC_NET_END='{{ tempest_cidr|nthhost(200) }}' export DNS_SERVER=1.1.1.1 export HYPER='{{ hostvars[target_host].ansible_fqdn }}' export INSTANCE_NAME=myserver-$HYPER # List Available Zones openstack availability zone list # List hosts openstack host list # List Hypervisors openstack hypervisor list # List Compute Services openstack compute service list # List network agents openstack network agent list # Steps to validate host # copied from https://github.com/fultonj/zed/blob/main/standalone/verify.sh openstack keypair create --private-key ~/test_key default openstack keypair list # create basic security group to allow ssh/ping/dns openstack security group create basic # allow ssh openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0 # allow ping openstack security group rule create --protocol icmp basic # allow DNS openstack security group rule create --protocol udp --dst-port 53:53 basic openstack network create --external --provider-physical-network datacentre --provider-network-type flat public openstack network create --internal private openstack subnet create public-net \ --subnet-range $PUBLIC_NETWORK_CIDR \ --no-dhcp \ --gateway $GATEWAY \ --allocation-pool start=$PUBLIC_NET_START,end=$PUBLIC_NET_END \ --network public openstack subnet create private-net \ --subnet-range $PRIVATE_NETWORK_CIDR \ --network private openstack floating ip create public openstack router create vrouter openstack router set vrouter --external-gateway public openstack router add subnet vrouter private-net openstack flavor create --ram 512 --disk 1 --ephemeral 0 --vcpus 1 --public m1.tiny curl https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img -o /home/zuul/cirros-0.4.0-x86_64-disk.img openstack image create cirros --container-format bare --disk-format qcow2 --public --file /home/zuul/cirros-0.4.0-x86_64-disk.img openstack image list openstack server create \ --nic none \ --os-compute-api-version 2.74 --hypervisor-hostname $HYPER \ --flavor m1.tiny --image cirros --key-name default \ $INSTANCE_NAME while true; do INSTANCE_STATUS=$(openstack server show ${INSTANCE_NAME} -f json | jq -r '.status') case "${INSTANCE_STATUS}" in "ACTIVE") echo "${INSTANCE_NAME} reached 'ACTIVE' status" break ;; "ERROR") echo "${INSTANCE_NAME} failed" exit 1 esac done