I know this is a little long but there are dependencies on how this works. Hopefully you can understand it. The last cURL command is the piece that puts it all together and spins up a VM. The last command will spin up a instance called "instance1", use a flavor and an cirros image and place it in the "VN2" network
LAPTOP:SCRIPTS$cat openstack-create.sh
TOKEN=""
#Do a POST to GET the AUTH TOKEN
TOKEN=$(curl -i \
-H "Content-Type: application/json" \
-d '
{ "auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": "admin",
"domain": { "id": "default" },
"password": "password",
"tenantName": "admin"
}
}
},
"scope": {
"project": {
"name": "demo",
"domain": { "id": "default" }
}
}
}
}' \
http://192.168.1.4:5000/v3/auth/tokens | grep X-Subject-Token: | sed -e "s/X-Subject-Token: //")
#STORE TOKEN
header='X-Auth-Token: '$TOKEN
#echo "$header"
#NOW USE the AUTH TOKEN TO CHECK TENANTS
curl -X GET http://192.168.1.4:5000/v2.0/tenants/ -H "$header" | python -m json.tool
#CHECK IMAGES FOR TENANT/PROJECT CALLED DEMO
# TENANT ID FOR DEMO = 6d0ebb466f01454e897e518289b3b785
echo "IMAGES"
curl -H "X-Auth-Project-Id: demo" -H "$header" -X GET http://192.168.1.4:8774/v2/6d0ebb466f01454e897e518289b3b785/images | python -m json.tool
# CHECK FLAVORS
echo "FLAVORS"
curl -H "X-Auth-Project-Id: demo" -H "$header" -X GET http://192.168.1.4:8774/v2/6d0ebb466f01454e897e518289b3b785/flavors | python -m json.tool
# CHECK SERVERS
echo "SERVERS"
curl -H "X-Auth-Project-Id: demo" -H "$header" -X GET http://192.168.1.4:8774/v2/6d0ebb466f01454e897e518289b3b785/servers | python -m json.tool
# CHECK NETWORK ID - THIS IS NEUTRON AND HAS IT'S OWN PORT NUMBER 9696
echo "NETWORKS"
curl -H "Content-Type: application/json" -H "$header" -X GET http://192.168.1.4:9696/v2.0/networks | python -m json.tool
#CREATE VM
echo "CREATE VM"
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Auth-Project-Id: demo" -H "$header" -X POST http://192.168.1.4:8774/v2/6d0ebb466f01454e897e518289b3b785/servers -d '{"server": {"name": "instance1", "imageRef": "d5f30886-e8ce-4e89-9709-c49a40717b5b", "flavorRef": "2", "max_count": 1, "min_count": 1,"key_name": "xyz", "networks": [{"network": "bd912f99-c345-4f3e-8026-88e1dde42255", "uuid": "bd912f99-c345-4f3e-8026-88e1dde42255"}]}}'
TOKEN=""
#Do a POST to GET the AUTH TOKEN
TOKEN=$(curl -i \
-H "Content-Type: application/json" \
-d '
{ "auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": "admin",
"domain": { "id": "default" },
"password": "password",
"tenantName": "admin"
}
}
},
"scope": {
"project": {
"name": "demo",
"domain": { "id": "default" }
}
}
}
}' \
http://192.168.1.4:5000/v3/auth/tokens | grep X-Subject-Token: | sed -e "s/X-Subject-Token: //")
#STORE TOKEN
header='X-Auth-Token: '$TOKEN
#echo "$header"
#NOW USE the AUTH TOKEN TO CHECK TENANTS
curl -X GET http://192.168.1.4:5000/v2.0/tenants/ -H "$header" | python -m json.tool
#CHECK IMAGES FOR TENANT/PROJECT CALLED DEMO
# TENANT ID FOR DEMO = 6d0ebb466f01454e897e518289b3b785
echo "IMAGES"
curl -H "X-Auth-Project-Id: demo" -H "$header" -X GET http://192.168.1.4:8774/v2/6d0ebb466f01454e897e518289b3b785/images | python -m json.tool
# CHECK FLAVORS
echo "FLAVORS"
curl -H "X-Auth-Project-Id: demo" -H "$header" -X GET http://192.168.1.4:8774/v2/6d0ebb466f01454e897e518289b3b785/flavors | python -m json.tool
# CHECK SERVERS
echo "SERVERS"
curl -H "X-Auth-Project-Id: demo" -H "$header" -X GET http://192.168.1.4:8774/v2/6d0ebb466f01454e897e518289b3b785/servers | python -m json.tool
# CHECK NETWORK ID - THIS IS NEUTRON AND HAS IT'S OWN PORT NUMBER 9696
echo "NETWORKS"
curl -H "Content-Type: application/json" -H "$header" -X GET http://192.168.1.4:9696/v2.0/networks | python -m json.tool
#CREATE VM
echo "CREATE VM"
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Auth-Project-Id: demo" -H "$header" -X POST http://192.168.1.4:8774/v2/6d0ebb466f01454e897e518289b3b785/servers -d '{"server": {"name": "instance1", "imageRef": "d5f30886-e8ce-4e89-9709-c49a40717b5b", "flavorRef": "2", "max_count": 1, "min_count": 1,"key_name": "xyz", "networks": [{"network": "bd912f99-c345-4f3e-8026-88e1dde42255", "uuid": "bd912f99-c345-4f3e-8026-88e1dde42255"}]}}'
-----------------------
I don’t execute the script and print it out as it would not look too pretty.
The most annoying part of this is all the curly brackets I had to dig around for the formatting of "networks" part as this was the hardest part.
I found out the formatting was like this:
networks: [{"port": String, "fixed_ip": String, "uuid": String, "network": String}, {"port": String, "fixed_ip": String, "uuid": String, "network": String}, ...]
Here's the api that I found useful:
Below is how it would look like if you executed the commands directly on the compute node. Note how image-list has the id for "imageRef"
root@openstack:/# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
root@openstack:/# nova image-list
+--------------------------------------+--------------+--------+--------------------------------------+
| ID | Name | Status | Server |
+--------------------------------------+--------------+--------+--------------------------------------+
| d894be99-6c35-46be-b0bf-01149d724aec | c1 | ACTIVE | |
| d5f30886-e8ce-4e89-9709-c49a40717b5b | cirros | ACTIVE | |
| 10a33e93-84da-43cb-862b-fbf0b0ea9d64 | ubuntu-cloud | ACTIVE | |
+--------------------------------------+--------------+--------+--------------------------------------+
root@openstack:/# nova keypair-list
+------+-------------------------------------------------+
| Name | Fingerprint |
+------+-------------------------------------------------+
| xyz | 88:c3:9d:32:d0:33:c9:1d:c3:9a:ed:cc:51:0c:55:30 |
+------+-------------------------------------------------+
root@openstack:/# nova network-list
+--------------------------------------+-----------------------------+------+
| ID | Label | Cidr |
+--------------------------------------+-----------------------------+------+
| 4c626c1c-26e2-45a3-8fa6-336fb297ffea | west-network | None |
| 3d608137-9e84-452a-9b9b-dd055f21a095 | right-nw | None |
| cfcd7fd5-4dae-4b0d-bf77-41df699e7bfb | vn-blue | None |
| c72cad3d-8f41-48a9-8ebc-73f6f4d8be87 | VN1 | None |
| 80d71671-0b00-422e-911f-cb599e5b462a | external-floating-ip | None |
| a8d51e11-34a7-4e72-bd91-7e51d7fbdc6c | default-virtual-network | None |
| c9a0a923-d583-4513-b2b6-c2c6d805ff18 | management-network-poc-demo | None |
| f7681c05-30e9-4951-b2fb-1796a0b7c41f | left-vn | None |
| 3a156ca5-54de-4654-b344-5e75a1a4369c | ip-fabric | None |
| bd912f99-c345-4f3e-8026-88e1dde42255 | VN2 | None |
| a77a4bec-51d8-4a6f-8e93-01d8e2d21512 | management | None |
| d4b022f2-88ff-4d63-84cb-c79b76153799 | network1 | None |
| 632269aa-74ac-4306-820d-3b27835f5951 | __link_local__ | None |
| f2bc533f-ba1d-412d-a788-875670883e9b | svc-vn-mgmt | None |
| 1072c78f-f464-4a6f-91a5-0caac6cf2f26 | east-network | None |
| 77c40c19-07d1-4416-86d5-1a00b2545a88 | public-fip | None |
+--------------------------------------+-----------------------------+------+
root@openstack:/#
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
root@openstack:/# nova image-list
+--------------------------------------+--------------+--------+--------------------------------------+
| ID | Name | Status | Server |
+--------------------------------------+--------------+--------+--------------------------------------+
| d894be99-6c35-46be-b0bf-01149d724aec | c1 | ACTIVE | |
| d5f30886-e8ce-4e89-9709-c49a40717b5b | cirros | ACTIVE | |
| 10a33e93-84da-43cb-862b-fbf0b0ea9d64 | ubuntu-cloud | ACTIVE | |
+--------------------------------------+--------------+--------+--------------------------------------+
root@openstack:/# nova keypair-list
+------+-------------------------------------------------+
| Name | Fingerprint |
+------+-------------------------------------------------+
| xyz | 88:c3:9d:32:d0:33:c9:1d:c3:9a:ed:cc:51:0c:55:30 |
+------+-------------------------------------------------+
root@openstack:/# nova network-list
+--------------------------------------+-----------------------------+------+
| ID | Label | Cidr |
+--------------------------------------+-----------------------------+------+
| 4c626c1c-26e2-45a3-8fa6-336fb297ffea | west-network | None |
| 3d608137-9e84-452a-9b9b-dd055f21a095 | right-nw | None |
| cfcd7fd5-4dae-4b0d-bf77-41df699e7bfb | vn-blue | None |
| c72cad3d-8f41-48a9-8ebc-73f6f4d8be87 | VN1 | None |
| 80d71671-0b00-422e-911f-cb599e5b462a | external-floating-ip | None |
| a8d51e11-34a7-4e72-bd91-7e51d7fbdc6c | default-virtual-network | None |
| c9a0a923-d583-4513-b2b6-c2c6d805ff18 | management-network-poc-demo | None |
| f7681c05-30e9-4951-b2fb-1796a0b7c41f | left-vn | None |
| 3a156ca5-54de-4654-b344-5e75a1a4369c | ip-fabric | None |
| bd912f99-c345-4f3e-8026-88e1dde42255 | VN2 | None |
| a77a4bec-51d8-4a6f-8e93-01d8e2d21512 | management | None |
| d4b022f2-88ff-4d63-84cb-c79b76153799 | network1 | None |
| 632269aa-74ac-4306-820d-3b27835f5951 | __link_local__ | None |
| f2bc533f-ba1d-412d-a788-875670883e9b | svc-vn-mgmt | None |
| 1072c78f-f464-4a6f-91a5-0caac6cf2f26 | east-network | None |
| 77c40c19-07d1-4416-86d5-1a00b2545a88 | public-fip | None |
+--------------------------------------+-----------------------------+------+
root@openstack:/#
No comments:
Post a Comment