In my previous article http://ranjeetbadhe.com/tripleo-undercloud I discussed the Undercloud testbed setup and the installation steps. I hope you have to work Undercloud and we can start the overcloud deployment.
In my testbed, I have got 1 Director node,1 Compute node and 1 Controller node. These nodes are virtualized on ESXi Hypervisor. The below screenshots shows the configuration of these 2 VM’s. For the 3 nodes, I have allocated 24GB memory to each node and 100 GB of Hard Disk space. My first Installation was failing due to less memory allocation, as a result, the system was not able to fork the process, throwing an OS-Refresh error.
Compute Node:
Controller Node:
Now that our nodes are ready we start by downloading and importing the Overcloud images.
Let us first check our Openstack Service list
login as: root
root@172.19.19.121’s password:
Last login: Sat Apr 14 13:44:05 2018 from 10.53.172.15
[root@undercloud ~]# su – stack
Last login: Sat Apr 14 13:44:27 EDT 2018 on pts/0
[stack@undercloud ~]$ source stackrc
(undercloud) [stack@undercloud ~]$ openstack service list
+———————————-+——————+————————-+
| ID | Name | Type |
+———————————-+——————+————————-+
| 12183fd366b64af6866917dfbf090f8b | nova | compute |
| 23974285f176485c88e50dd1ab3996bd | keystone | identity |
| 2c5d0ba4bb004569ab73cd28e8f4e96b | zaqar-websocket | messaging-websocket |
| 4057b3aac921485c80d9a8c7cf91f8f2 | mistral | workflowv2 |
| 5176499275bf410a8d5d791b3b7935a4 | heat-cfn | cloudformation |
| 710b97a07a33400ba67b46631e124d6e | glance | image |
| 71b5997d13f64518b48c369ccada4bbb | heat | orchestration |
| 76110b760e924054997795e2cc84264a | ironic | baremetal |
| 7a1b9f5e9407498992f615f72942f658 | ironic-inspector | baremetal-introspection |
| 9b69b15190a5423b814adc5ff2c824d6 | zaqar | messaging |
| d35af7dc14cc4d4f87edc8db0dbee384 | swift | object-store |
| e4fdd68ab3404961975e18bcb2f03232 | neutron | network |
| f874c9ac81af480c8033154a64d369fd | placement | placement |
+———————————-+——————+————————-+
Now Start downloading the images
[stack@undercloud ~]$ source stackrc
(undercloud) [stack@undercloud ~]$ sudo wget https://images.rdoproject.org/newton/delorean/current-tripleo/ironic-python-agent.tar – -no-check-certificate
–2018-04-14 21:01:59– https://images.rdoproject.org/newton/delorean/current-tripleo/ironic-python-agent.tar
Resolving images.rdoproject.org (images.rdoproject.org)… 38.145.33.168
Connecting to images.rdoproject.org (images.rdoproject.org)|38.145.33.168|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 351150080 (335M) [application/x-tar]
Saving to: ‘ironic-python-agent.tar’
100%[======================================================================================================>] 351,150,080 116KB/s in 39m 33s
2018-04-14 21:41:34 (145 KB/s) – ‘ironic-python-agent.tar’ saved [351150080/351150080]
(undercloud) [stack@undercloud ~]$ ping images.rdoproject.org
PING images.rdoproject.org (38.145.33.168) 56(84) bytes of data.
64 bytes from ip-38-145-33-168.redhat.com (38.145.33.168): icmp_seq=1 ttl=48 time=230 ms
64 bytes from ip-38-145-33-168.redhat.com (38.145.33.168): icmp_seq=2 ttl=48 time=224 ms
^C
— images.rdoproject.org ping statistics —
3 packets transmitted, 2 received, 33% packet loss, time 2001ms
rtt min/avg/max/mdev = 224.842/227.859/230.876/3.017 ms
(undercloud) [stack@undercloud ~]$ sudo wget https://images.rdoproject.org/newton/delorean/current-tripleo/overcloud-full.tar –no-check-certificate
–2018-04-14 21:51:33– https://images.rdoproject.org/newton/delorean/current-tripleo/overcloud-full.tar
Resolving images.rdoproject.org (images.rdoproject.org)… 38.145.33.168
Connecting to images.rdoproject.org (images.rdoproject.org)|38.145.33.168|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 1324298240 (1.2G) [application/x-tar]
Saving to: ‘overcloud-full.tar.1’
100%[====================================================================================================>] 1,324,298,240 230KB/s in 95m 56s
2018-04-14 23:27:31 (225 KB/s) – ‘overcloud-full.tar.1’ saved [1324298240/1324298240]
Make a “Images” folder and and Untzar the images into it.
(undercloud) [stack@undercloud ~]$ mkdir ~/images
(undercloud) [stack@undercloud ~]$ tar -xpvf ironic-python-agent.tar -C ~/images/
ironic-python-agent.d/
ironic-python-agent.d/dib-manifests/
ironic-python-agent.d/dib-manifests/dib_environment
ironic-python-agent.d/dib-manifests/dib_arguments
ironic-python-agent.d/dib-manifests/dib-element-manifest
ironic-python-agent.initramfs
ironic-python-agent.kernel
ironic-python-agent.qcow2.log
ironic-python-agent.vmlinuz
(undercloud) [stack@undercloud ~]$ ls
images ironic-python-agent.tar overcloud-full.tar.1 overcloud-stackenv.json.bkp undercloud.conf
index.html overcloud-full.tar overcloud-stackenv.json stackrc undercloud-passwords.conf
(undercloud) [stack@undercloud ~]$ ls -ltr
total 1919024
-rw-r–r–. 1 root root 1324298240 Oct 15 18:29 overcloud-full.tar.1
-rw-r–r–. 1 root root 351150080 Oct 15 18:29 ironic-python-agent.tar
-rw-rw-r–. 1 stack stack 424 Apr 14 13:34 undercloud.conf
-rw——-. 1 stack stack 1994 Apr 14 13:45 undercloud-passwords.conf
-rw——-. 1 stack stack 1234 Apr 14 14:26 stackrc
-rw-rw-r–. 1 stack stack 788 Apr 14 20:31 overcloud-stackenv.json.bkp
-rw-rw-r–. 1 stack stack 480 Apr 14 20:43 overcloud-stackenv.json
-rw-r–r–. 1 root root 2753 Apr 14 20:54 index.html
-rw-r–r–. 1 root root 289603584 Apr 14 21:47 overcloud-full.tar
drwxrwxr-x. 3 stack stack 4096 Apr 15 00:14 images
(undercloud) [stack@undercloud ~]$ tar -xpvf overcloud-full.tar.1 -C ~/images/
overcloud-full.d/
overcloud-full.d/dib-manifests/
overcloud-full.d/dib-manifests/dib-manifests-pip/
overcloud-full.d/dib-manifests/dib-element-manifest
overcloud-full.d/dib-manifests/dib_environment
overcloud-full.d/dib-manifests/dib_arguments
overcloud-full.initrd
overcloud-full.qcow2
overcloud-full.qcow2.log
overcloud-full.vmlinuz
(undercloud) [stack@undercloud ~]$ pwd
/home/stack
(undercloud) [stack@undercloud ~]$ cd ~/images/
(undercloud) [stack@undercloud images]$ ls
ironic-python-agent.d ironic-python-agent.kernel ironic-python-agent.vmlinuz overcloud-full.initrd overcloud-full.qcow2.log
ironic-python-agent.initramfs ironic-python-agent.qcow2.log overcloud-full.d overcloud-full.qcow2 overcloud-full.vmlinuz
Now upload the Images.
(undercloud) [stack@undercloud images]$ source ~/stackrc
(undercloud) [stack@undercloud images]$ openstack overcloud image upload –image-path ~/images/
Image “overcloud-full-vmlinuz” was uploaded.
+————————————–+————————+————-+———+——–+
| ID | Name | Disk Format | Size | Status |
+————————————–+————————+————-+———+——–+
| dbf87df5-a3ad-4134-9604-8db7d5713b51 | overcloud-full-vmlinuz | aki | 5878848 | active |
+————————————–+————————+————-+———+——–+
Image “overcloud-full-initrd” was uploaded.
+————————————–+———————–+————-+———-+——–+
| ID | Name | Disk Format | Size | Status |
+————————————–+———————–+————-+———-+——–+
| 4f82b4f4-7f12-44b8-9056-f0fee1547df2 | overcloud-full-initrd | ari | 50701259 | active |
+————————————–+———————–+————-+———-+——–+
Image “overcloud-full” was uploaded.
+————————————–+—————-+————-+————+——–+
| ID | Name | Disk Format | Size | Status |
+————————————–+—————-+————-+————+——–+
| b95486b3-a0bd-47d2-a19b-8489c0906716 | overcloud-full | qcow2 | 1266761216 | active |
+————————————–+—————-+————-+————+——–+
Image “bm-deploy-kernel” was uploaded.
+————————————–+——————+————-+———+——–+
| ID | Name | Disk Format | Size | Status |
+————————————–+——————+————-+———+——–+
| 9138d663-6692-438f-9e38-323febe1b89c | bm-deploy-kernel | aki | 5878848 | active |
+————————————–+——————+————-+———+——–+
Image “bm-deploy-ramdisk” was uploaded.
+————————————–+——————-+————-+———–+——–+
| ID | Name | Disk Format | Size | Status |
+————————————–+——————-+————-+———–+——–+
| e984faf4-62e6-4fd6-aa0c-0efdafaf936d | bm-deploy-ramdisk | ari | 344201061 | active |
+————————————–+——————-+————-+———–+——–+
Create a json file with name “overcloud-stackenv.json” . Put the MAC address you derive from ESXi screen as hown in the below screenshot.
Use this online tool to validate your json file, https://jsonlint.com/
(undercloud) [stack@undercloud ~]$ vi overcloud-stackenv.json
{
“nodes”: [
{
“mac”:[
“00:50:56:8a:c1:90”
],
“cpu“:”4”,
“memory”:”24576″,
“disk”:”100″,
“arch”:”x86_64″,
“name”:”control01″,
“pm_type”:”fake_pxe”
},
{
“mac”:[
“00:50:56:8a:ef:15”
],
“cpu“:”4”,
“memory”:”24576″,
“disk”:”100″,
“arch”:”x86_64″,
“name”:”compute01″,
“pm_type”:”fake_pxe”
}
]
}
Here are few points to note if your test bed is ESXi
By default the fake_pxe
driver isn’t enabled on the undercloud. You have to enable it in the /etc/ironic/ironic.conf
by modifying the following line:
enabled_drivers = pxe_ipmitool,pxe_ssh,pxe_drac,pxe_ilo,fake_pxe
Now you need to restart the ironic service
sudo systemctl list-unit-files | grep ironic
Validate whether Driver is active
(undercloud) [stack@undercloud ~]$ openstack baremetal driver list
+———————+———————-+
| Supported driver(s) | Active host(s) |
+———————+———————-+
| fake_pxe | undercloud.telus.com |
| idrac | undercloud.telus.com |
| ilo | undercloud.telus.com |
| ipmi | undercloud.telus.com |
| pxe_drac | undercloud.telus.com |
| pxe_ilo | undercloud.telus.com |
| pxe_ipmitool | undercloud.telus.com |
| redfish | undercloud.telus.com |
+———————+———————-+
Import the Nodes and do the introspection using below command
(undercloud) [stack@undercloud images]$ cd ~
(undercloud) [stack@undercloud ~]$ source stackrc
(undercloud) [stack@undercloud ~]$ openstack overcloud node import –introspect –provide overcloud-stackenv.json
Waiting for messages on queue ‘tripleo’ with no timeout.
2 node(s) successfully moved to the “manageable” state.
Successfully registered node UUID 7906e404-3460-4156-9c9f-8d06ed403094
Successfully registered node UUID a0fc1290-81e7-41e2-a1cc-77f11511d9a2
Waiting for introspection to finish…
Waiting for messages on queue ‘tripleo’ with no timeout.
Check your node list
(undercloud) [stack@undercloud ~]$ ironic node-list
+————————————–+———–+—————+————-+——————–+————-+
| UUID | Name | Instance UUID | Power State | Provisioning State | Maintenance |
+————————————–+———–+—————+————-+——————–+————-+
| 7906e404-3460-4156-9c9f-8d06ed403094 | control01 | None | power on | manageable | False |
| a0fc1290-81e7-41e2-a1cc-77f11511d9a2 | compute01 | None | power on | manageable | False |
+————————————–+———–+—————+————-+——————–+————-+
(undercloud) [stack@undercloud ~]$ openstack flavor list
+————————————–+—————+——+——+———–+——-+———–+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+————————————–+—————+——+——+———–+——-+———–+
| 09d49e1f-fc57-44de-9674-8552452038a9 | compute | 4096 | 40 | 0 | 1 | True |
| 40069056-8917-4b78-a891-16047e6f91c8 | ceph-storage | 4096 | 40 | 0 | 1 | True |
| 48792f1b-b79f-4356-ab6c-52da07b7ae9d | block-storage | 4096 | 40 | 0 | 1 | True |
| 897d8c6b-200c-461d-b698-6d87dc036843 | swift-storage | 4096 | 40 | 0 | 1 | True |
| cbefbff0-30a0-4dbc-8a71-6c34f866162d | control | 4096 | 40 | 0 | 1 | True |
| d56d59ae-1489-4d4f-b013-8a4333d43884 | baremetal | 4096 | 40 | 0 | 1 | True |
+————————————–+—————+——+——+———–+——-+———–+
(undercloud) [stack@undercloud ~]$ openstack baremetal introspection list
+————————————–+———————+————-+——-+
| UUID | Started at | Finished at | Error |
+————————————–+———————+————-+——-+
| 7906e404-3460-4156-9c9f-8d06ed403094 | 2018-04-16T01:59:14 | None | None |
| a0fc1290-81e7-41e2-a1cc-77f11511d9a2 | 2018-04-16T01:59:12 | None | None |
+————————————–+———————+————-+——-+