Openstack
General troubleshoot - Shamelessly stolen from : http://www.panticz.de/index.php/openstack
# list VMs on all hypervisor
openstack server list --all --long -c Name -c Host
# list VMs on specific hypervisor
openstack server list --all -c Name -f value --host ${COMPUTE_NODE}
# get VM count by hypervisor
openstack server list --all --long -c Host -f value | sort | uniq -c
# list compute nodes
openstack compute service list
# list compute service
openstack compute service list --host ${OS_NODE}
# disable compute service
for OS_SERVICE in $(openstack compute service list --host ${OS_NODE} -c Binary -f value); do
openstack compute service set --disable --disable-reason "Maintenance" ${OS_NODE} ${OS_SERVICE}
done
openstack compute service set --disable --disable-reason potato qasite1-compute001.localdomain nova-compute
# Search for server witch status error
openstack server list --all --status ERROR
# Search for server with status resizing
openstack server list --all --status=VERIFY_RESIZE
# List instances / VMs
openstack server list
openstack server list -c ID -c Name -c Status -c Networks -c Host --long
Start all VMs on a single compute
for x in `openstack server list --all -c ID -f value --host tenlab1-compute002.localdomain`;do openstack server start $x;done
Migrate to specific compute
nova host-evacuate --target_host kolla-compute003 kolla-compute004.cmaker.studio
watch nova migration-list
Get all the keypairs existing for all users
for x in `openstack user list -f value -c ID`;do echo $x && nova keypair-list --user $x;done
Evacuate single server from compute
nova evacuate 1d6a436b-e18e-45ce-8b01-bee4a7126f81
Evacuate single server from compute to a specific destination
nova evacuate 5f58a1bf-a7f9-4952-b980-af9d52a11e66 qasite1-compute001.localdomain
Openstack create image with different id.
Use the --id
flag
openstack image create --id cirros-0.4.0 --disk-format qcow2 --container-format bare --public --file ./cirros-0.4.0-x86_64-disk.img cirros-0.4.0
07d76f4e-c920-49ea-af06-bd3c322f16cf
openstack router set --external-gateway EXT_NET --enable-snat --fixed-ip subnet=EXT_SUB,ip-address=192.168.70.2
neutron net-create PROV_NET --shared --router:external True --provider:physical_network physnet1 --provider:network_type vlan --provider:segmentation_id 71
neutron subnet-create PROV_NET --name PROV_SUB --disable-dhcp --gateway 192.168.71.1 192.168.71.0/24
neutron net-create EXT_NET --router:external True --provider:physical_network physnet1 --provider:network_type vlan --provider:segmentation_id 70
neutron subnet-create EXT_NET --name EXT_SUB --allocation-pool start=192.168.70.10,end=192.168.70.100 --disable-dhcp --gateway 192.168.70.1 192.168.70.0/24
network : e23f7863-6e84-4395-bbbb-45877e950f2a
subnet : 5bee0941-8d7f-4869-896d-e34e1f2e8b3d
9ce38b2c-b13b-4e65-8e68-32b146115a62 : openstack port create --fixed-ip subnet=5bee0941-8d7f-4869-896d-e34e1f2e8b3d,ip-address=10.100.100.10 --network e23f7863-6e84-4395-bbbb-45877e950f2a cumulus_1
eefa2140-fd69-4daf-8b0d-0eafcf3e24b9 : openstack port create --fixed-ip subnet=5bee0941-8d7f-4869-896d-e34e1f2e8b3d,ip-address=10.100.100.11 --network e23f7863-6e84-4395-bbbb-45877e950f2a cumulus_2
neutron net-create PROV_NET --router:external True --provider:physical_network physnet1 --provider:network_type vlan --provider:segmentation_id 71
neutron subnet-create PROV_NET --name PROV_SUB --allocation-pool start=192.168.71.10,end=192.168.71.100 --disable-dhcp --gateway 192.168.71.1 192.168.71.0/24
neutron net-create PROV_NET --shared --router:external True --provider:physical_network physnet1 --provider:network_type vlan --provider:segmentation_id 71
neutron subnet-create PROV_NET --name PROV_SUB --disable-dhcp --gateway 192.168.71.1 192.168.71.0/24
Random useful commands
openstack server list --all -c ID -c Name --host $NOVA_COMPUTE_NAME_HERE -f value
Upload custom image
openstack image create --disk-format qcow2 --container-format bare --public --file ./cirros-0.4.0-x86_64-disk.img cirros-0.4.0
Create flavor
openstack flavor create --ram 1024 --disk 10 --vcpus 1 --public small-flavor
openstack flavor create --ram 16384 --disk 21 --vcpus 8 \
--private \
--project $PROJECT_ID_HERE \
--property aggregate_instance_extra_specs:$HOST_AGG_NAME_HERE='true' \
--property hw:cpu_policy='dedicated' \
--property hw:cpu_thread_policy='prefer' \
--property hw:mem_page_size='1GB' \
--property hw:numa_cpus.0='1-7' \
--property hw:numa_cpus.1='0' \
--property hw:numa_mem.0='8192' \
--property hw:numa_mem.1='8192' \
--property hw:numa_mempolicy='strict' \
--property hw:numa_nodes='2' \
TEST
Create VM
openstack server create --image e090519f-91f6-4c21-baf5-08642d0bd28b --flavor f60498da-a9a9-4772-a05c-75b4aaa6389a --network e23f7863-6e84-4395-bbbb-45877e950f2a cumulus-1
openstack server create --image e090519f-91f6-4c21-baf5-08642d0bd28b --flavor f60498da-a9a9-4772-a05c-75b4aaa6389a --network e23f7863-6e84-4395-bbbb-45877e950f2a cumulus-2
Compute node requirements
https://docs.openstack.org/nova/rocky/install/compute-install-rdo.html
https://docs.openstack.org/neutron/rocky/install/compute-install-rdo.html
https://docs.openstack.org/neutron/rocky/install/compute-install-option1-rdo.html
Create a external network with a subnet attached to that network.
neutron net-create EXT_NET --router:external True --provider:physical_network physnet1 --provider:network_type vlan --provider:segmentation_id 70
neutron subnet-create EXT_NET --name EXT_SUB --allocation-pool start=192.168.70.10,end=192.168.70.100 --disable-dhcp --gateway 192.168.70.1 192.168.70.0/24
Random commands
#Create image
openstack image create --disk-format qcow2 --container-format bare --public --file ./cirros-0.4.0-x86_64-disk.img cirros-0.4.0
#Create flavor
openstack flavor create --ram 1024 --disk 10 --vcpus 1 --public small-flavor
#Create network
openstack network create network-floating-ip1
openstack floating ip create --subnet floating-ip-1
#Create provider network with vlan
openstack network create --share --provider-physical-network provider --provider-network-type vlan provider1
/etc/hosts
10.12.0.2 controller01
10.12.0.3 compute01
10.12.0.4 compute02
10.12.0.5 compute03
################################
10.12.0.3 compute01
10.12.0.2 controller01
10.12.0.4 compute02
10.12.0.5 compute03
################################
10.12.0.4 compute02
10.12.0.2 controller01
10.12.0.3 compute01
10.12.0.5 compute03
################################
10.12.0.5 compute03
10.12.0.2 controller01
10.12.0.3 compute01
10.12.0.4 compute02
Placeholder password : openstack2019
RABBIT_PASS : openstack2019
rabbitmqctl add_user openstack openstack2019
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'openstack2019';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'openstack2019';
connection = mysql+pymysql://keystone:openstack2019@controller01/keystone
keystone-manage bootstrap --bootstrap-password openstack2019 \
--bootstrap-admin-url http://controller01:5000/v3/ \
--bootstrap-internal-url http://controller01:5000/v3/ \
--bootstrap-public-url http://controller01:5000/v3/ \
--bootstrap-region-id RegionOne
export OS_USERNAME=admin
export OS_PASSWORD=openstack2019
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller01:5000/v3
export OS_IDENTITY_API_VERSION=3
openstack domain create --description "Test Domain" example
openstack project create --domain default \
--description "Service Project" service
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'openstack2019';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'openstack2019';
www_authenticate_uri = http://controller01:5000
auth_url = http://controller01:5000
memcached_servers = controller01:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = openstack2019
### Deploy Compute NOVA service on Controller node.
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
CREATE DATABASE placement;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
IDENTIFIED BY 'openstack2019';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'openstack2019';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'openstack2019';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'openstack2019';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'openstack2019';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'openstack2019';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
IDENTIFIED BY 'openstack2019';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
IDENTIFIED BY 'openstack2019';
openstack user create --domain default --password-prompt nova
openstack role add --project service --user nova admin
openstack service create --name nova \
--description "OpenStack Compute" compute
openstack endpoint create --region RegionOne \
compute public http://controller01:8774/v2.1
openstack endpoint create --region RegionOne \
compute internal http://controller01:8774/v2.1
openstack endpoint create --region RegionOne \
compute admin http://controller01:8774/v2.1
openstack endpoint create --region RegionOne \
placement public http://controller01:8778
openstack endpoint create --region RegionOne \
placement internal http://controller01:8778
openstack endpoint create --region RegionOne \
placement admin http://controller01:8778
modprobe br_netfilter
echo "$(sysctl -w net.bridge.bridge-nf-call-iptables=1)" >> /etc/sysctl.conf
echo "$(sysctl -w net.bridge.bridge-nf-call-ip6tables=1)" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY 'openstack2019';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY 'openstack2019';
openstack endpoint create --region RegionOne \
network public http://controller01:9696
openstack endpoint create --region RegionOne \
network internal http://controller01:9696
openstack endpoint create --region RegionOne \
network admin http://controller01:9696
openstack subnet create --network provider \
--allocation-pool start=10.13.0.100,end=10.13.0.200 \
--dns-nameserver 10.13.0.1 --gateway 10.13.0.1 \
--subnet-range 10.13.0.0/24 provider
openstack server create --flavor m1.nano --image cirros \
--nic net-id=dee9dde7-0edb-4311-a06e-5ffb98144527 --security-group default \
provider-instance
nova-manage cell_v2 map_cell0
nova-manage db sync