(Created page with "On a CentOS7 system <pre> [hamzy@oscloud5 ~]$ lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.3.1...") |
No edit summary |
||
Line 212: | Line 212: | ||
__EOF__ | __EOF__ | ||
[stack@undercloud ~]$ (for SERVICE in openstack-mistral-api.service openstack-mistral-engine.service openstack-mistral-executor.service; do sudo systemctl restart ${SERVICE}; done) | [stack@undercloud ~]$ (for SERVICE in openstack-mistral-api.service openstack-mistral-engine.service openstack-mistral-executor.service; do sudo systemctl restart ${SERVICE}; done) | ||
</pre> | |||
Ironic needs some different settings to be able to support agent_ipmitool for ppc64le: | |||
<pre> | |||
[stack@oscloud5 ~]$ (cd /etc/ironic; cat << '__EOF__' | sudo patch -p0) | |||
--- ironic.conf.orig 2017-09-11 18:35:37.847711251 +0000 | |||
+++ ironic.conf 2017-09-11 18:41:58.515508406 +0000 | |||
@@ -30,7 +30,7 @@ | |||
# "ironic.drivers" entrypoint. An example may be found in the | |||
# developer documentation online. (list value) | |||
#enabled_drivers = pxe_ipmitool | |||
-enabled_drivers=pxe_drac,pxe_ilo,pxe_ipmitool | |||
+enabled_drivers=pxe_drac,pxe_ilo,pxe_ipmitool,agent_ipmitool | |||
# Specify the list of hardware types to load during service | |||
# initialization. Missing hardware types, or hardware types | |||
@@ -1511,6 +1511,9 @@ | |||
[glance] | |||
+temp_url_endpoint_type = swift | |||
+swift_temp_url_key = secretkey | |||
+ | |||
# | |||
# From ironic | |||
# | |||
@@ -1644,6 +1647,7 @@ | |||
# "endpoint_url/api_version/[account/]container/object_id" | |||
# (string value) | |||
#swift_account = <None> | |||
+swift_account = AUTH_e1cd79d92e1649de805e91c062c65a17 | |||
# The Swift API version to create a temporary URL for. | |||
# Defaults to "v1". Swift temporary URL format: | |||
@@ -1657,6 +1661,7 @@ | |||
# "endpoint_url/api_version/[account/]container/object_id" | |||
# (string value) | |||
#swift_container = glance | |||
+swift_container = glance | |||
# The "endpoint" (scheme, hostname, optional port) for the | |||
# Swift URL of the form | |||
@@ -1667,6 +1672,7 @@ | |||
# will be appended. Required for temporary URLs. (string | |||
# value) | |||
#swift_endpoint_url = <None> | |||
+swift_endpoint_url = http://9.114.118.98:8080/swift | |||
# This should match a config by the same name in the Glance | |||
# configuration file. When set to 0, a single-tenant store | |||
@@ -1706,6 +1712,7 @@ | |||
# The secret token given to Swift to allow temporary URL | |||
# downloads. Required for temporary URLs. (string value) | |||
#swift_temp_url_key = <None> | |||
+swift_temp_url_key = secretkey | |||
# Tenant ID (string value) | |||
#tenant_id = <None> | |||
__EOF__ | |||
</pre> | </pre> | ||
Revision as of 18:44, 11 September 2017
On a CentOS7 system
[hamzy@oscloud5 ~]$ lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.3.1611 (Core) Release: 7.3.1611 Codename: Core [stack@oscloud5 ~]$ uname -a Linux oscloud5.stglabs.ibm.com 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Unfortunately, it seems that Environment setup for baremetal environment does not explain how to install the undercloud. There are three machines in this scenario:
arch | use | portname1 | MAC1 | IP1 | portname2 | MAC2 | IP2 |
x86_64 | undercloud | eno2 | 6c:ae:8b:29:2a:02 | 9.114.219.30 | eno4 | 6c:ae:8b:29:2a:04 | 9.114.118.98 |
ppc64le | overcloud control | enP3p9s0f0 | 6c:ae:8b:6a:74:14 | 9.114.219.134 | enp1s0 | 34:40:b5:b6:ea:bc | 9.114.118.50 |
ppc64le | overcloud compute | enP3p5s0f2 | 00:90:fa:74:05:52 | 9.114.219.49 | enP3p5s0f3 | 00:90:fa:74:05:53 | 9.114.118.154 |
So, following Undercloud installation, I perform the following:
[hamzy@oscloud5 ~]$ sudo useradd stack [hamzy@oscloud5 ~]$ sudo passwd stack [hamzy@oscloud5 ~]$ echo "stack ALL=(root) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/stack [hamzy@oscloud5 ~]$ sudo chmod 0440 /etc/sudoers.d/stack [hamzy@oscloud5 ~]$ sudo su - stack [stack@oscloud5 ~]$ sudo hostnamectl set-hostname oscloud5.stglabs.ibm.com [stack@oscloud5 ~]$ sudo hostnamectl set-hostname --transient oscloud5.stglabs.ibm.com [stack@oscloud5 ~]$ sudo curl -L -o /etc/yum.repos.d/delorean.repo https://trunk.rdoproject.org/centos7-master/current-passed-ci/delorean.repo [stack@oscloud5 ~]$ sudo curl -L -o /etc/yum.repos.d/delorean-deps.repo https://trunk.rdoproject.org/centos7/delorean-deps.repo [stack@oscloud5 ~]$ sudo yum install -y python-tripleoclient [stack@oscloud5 ~]$ cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf [stack@oscloud5 ~]$ cat << '__EOF__' > instackenv.json { "nodes": [ { "pm_type":"agent_ipmitool", "mac":[ "34:40:b5:b6:ea:bc" ], "cpu":"16", "memory":"1048576", "disk":"1000", "arch":"ppc64le", "pm_password":"update", "pm_addr":"9.114.118.51" }, { "pm_type":"agent_ipmitool", "mac":[ "00:90:fa:74:05:53" ], "cpu":"16", "memory":"1048576", "disk":"1000", "arch":"ppc64le", "pm_password":"update", "pm_addr":"9.114.118.155" } ] } __EOF__
I transfer over the built overcloud images:
[hamzy@pkvmci853 ~]$ (OCB=$(dig @192.168.122.1 -4 +short Overcloud.virbr0); UC=9.114.118.98; ssh-keygen -f ~/.ssh/known_hosts -R ${UC}; ssh-keyscan ${UC} >> ~/.ssh/known_hosts; scp -3 hamzy@${OCB}:~/*{initrd,initramfs,kernel,vmlinuz,qcow2}* stack@${UC}:~/)
I then modify undercloud.conf as follows:
[stack@oscloud5 ~]$ cat << __EOF__ | patch -p0 --- undercloud.conf.orig 2017-08-25 12:04:54.935063830 +0000 +++ undercloud.conf 2017-08-25 12:05:17.561063576 +0000 @@ -17,21 +17,25 @@ # defined by local_interface, with the netmask defined by the prefix # portion of the value. (string value) #local_ip = 192.168.24.1/24 +local_ip = 9.114.118.98/24 # Network gateway for the Neutron-managed network for Overcloud # instances. This should match the local_ip above when using # masquerading. (string value) #network_gateway = 192.168.24.1 +network_gateway = 9.114.118.98 # Virtual IP or DNS address to use for the public endpoints of # Undercloud services. Only used with SSL. (string value) # Deprecated group/name - [DEFAULT]/undercloud_public_vip #undercloud_public_host = 192.168.24.2 +undercloud_public_host = 9.114.118.98 # Virtual IP or DNS address to use for the admin endpoints of # Undercloud services. Only used with SSL. (string value) # Deprecated group/name - [DEFAULT]/undercloud_admin_vip #undercloud_admin_host = 192.168.24.3 +undercloud_admin_host = 9.114.118.98 # DNS nameserver(s) to use for the undercloud node. (list value) #undercloud_nameservers = @@ -74,6 +78,7 @@ # Network interface on the Undercloud that will be handling the PXE # boots and DHCP for Overcloud instances. (string value) #local_interface = eth1 +local_interface = eno4 # MTU to use for the local_interface. (integer value) #local_mtu = 1500 @@ -82,18 +87,22 @@ # instances. This should be the subnet used for PXE booting. (string # value) #network_cidr = 192.168.24.0/24 +network_cidr = 9.114.118.0/24 # Network that will be masqueraded for external access, if required. # This should be the subnet used for PXE booting. (string value) #masquerade_network = 192.168.24.0/24 +masquerade_network = 9.114.118.0/24 # Start of DHCP allocation range for PXE and DHCP of Overcloud # instances. (string value) #dhcp_start = 192.168.24.5 +dhcp_start = 9.114.118.245 # End of DHCP allocation range for PXE and DHCP of Overcloud # instances. (string value) #dhcp_end = 192.168.24.24 +dhcp_end = 9.114.118.248 # Path to hieradata override file. If set, the file will be copied # under /etc/puppet/hieradata and set as the first file in the hiera @@ -112,12 +121,14 @@ # doubt, use the default value. (string value) # Deprecated group/name - [DEFAULT]/discovery_interface #inspection_interface = br-ctlplane +inspection_interface = br-ctlplane # Temporary IP range that will be given to nodes during the inspection # process. Should not overlap with the range defined by dhcp_start # and dhcp_end, but should be in the same network. (string value) # Deprecated group/name - [DEFAULT]/discovery_iprange #inspection_iprange = 192.168.24.100,192.168.24.120 +inspection_iprange = 9.114.118.249,9.114.118.250 # Whether to enable extra hardware collection during the inspection # process. Requires python-hardware or python-hardware-detect package __EOF__
And install the undercloud:
[stack@oscloud5 ~]$ time openstack undercloud install 2>&1 | tee output.undercloud.install ... Undercloud install complete. ...
There is a bug for needing the userid for machines using ipmi that needs to be patched around.
[stack@oscloud5 ~]$ (cd /usr/lib/python2.7/site-packages/tripleo_common/utils/; cat << __EOF__ | sudo patch -p0) --- nodes.py.orig 2017-08-24 15:54:07.614226329 +0000 +++ nodes.py 2017-08-24 15:54:29.699440619 +0000 @@ -105,7 +105,7 @@ 'pm_user': '%s_username' % prefix, 'pm_password': '%s_password' % prefix, } - mandatory_fields = list(mapping) + mandatory_fields = ['pm_addr', 'pm_password'] # list(mapping) if has_port: mapping['pm_port'] = '%s_port' % prefix __EOF__ [stack@undercloud ~]$ (for SERVICE in openstack-mistral-api.service openstack-mistral-engine.service openstack-mistral-executor.service; do sudo systemctl restart ${SERVICE}; done)
Ironic needs some different settings to be able to support agent_ipmitool for ppc64le:
[stack@oscloud5 ~]$ (cd /etc/ironic; cat << '__EOF__' | sudo patch -p0) --- ironic.conf.orig 2017-09-11 18:35:37.847711251 +0000 +++ ironic.conf 2017-09-11 18:41:58.515508406 +0000 @@ -30,7 +30,7 @@ # "ironic.drivers" entrypoint. An example may be found in the # developer documentation online. (list value) #enabled_drivers = pxe_ipmitool -enabled_drivers=pxe_drac,pxe_ilo,pxe_ipmitool +enabled_drivers=pxe_drac,pxe_ilo,pxe_ipmitool,agent_ipmitool # Specify the list of hardware types to load during service # initialization. Missing hardware types, or hardware types @@ -1511,6 +1511,9 @@ [glance] +temp_url_endpoint_type = swift +swift_temp_url_key = secretkey + # # From ironic # @@ -1644,6 +1647,7 @@ # "endpoint_url/api_version/[account/]container/object_id" # (string value) #swift_account = <None> +swift_account = AUTH_e1cd79d92e1649de805e91c062c65a17 # The Swift API version to create a temporary URL for. # Defaults to "v1". Swift temporary URL format: @@ -1657,6 +1661,7 @@ # "endpoint_url/api_version/[account/]container/object_id" # (string value) #swift_container = glance +swift_container = glance # The "endpoint" (scheme, hostname, optional port) for the # Swift URL of the form @@ -1667,6 +1672,7 @@ # will be appended. Required for temporary URLs. (string # value) #swift_endpoint_url = <None> +swift_endpoint_url = http://9.114.118.98:8080/swift # This should match a config by the same name in the Glance # configuration file. When set to 0, a single-tenant store @@ -1706,6 +1712,7 @@ # The secret token given to Swift to allow temporary URL # downloads. Required for temporary URLs. (string value) #swift_temp_url_key = <None> +swift_temp_url_key = secretkey # Tenant ID (string value) #tenant_id = <None> __EOF__
I then go through the process of installing the overcloud:
[stack@oscloud5 ~]$ source stackrc (undercloud) [stack@oscloud5 ~]$ time openstack overcloud image upload ... (undercloud) [stack@oscloud5 ~]$ time openstack overcloud node import --provide instackenv.json 2>&1 | tee output.overcloud.node.import ... (undercloud) [stack@oscloud5 ~]$ openstack overcloud profiles list +--------------------------------------+-----------+-----------------+-----------------+-------------------+ | Node UUID | Node Name | Provision State | Current Profile | Possible Profiles | +--------------------------------------+-----------+-----------------+-----------------+-------------------+ | 032a8e33-e371-44e3-8513-04028a4de95b | | available | None | | | 612b49a6-1407-42cd-bb41-d10bd5173712 | | available | None | | +--------------------------------------+-----------+-----------------+-----------------+-------------------+ (undercloud) [stack@oscloud5 ~]$ ironic node-update 032a8e33-e371-44e3-8513-04028a4de95b replace properties/capabilities=profile:compute,boot_option:local (undercloud) [stack@oscloud5 ~]$ ironic node-update 612b49a6-1407-42cd-bb41-d10bd5173712 replace properties/capabilities=profile:control,boot_option:local
The Ironic configuration needs some changes:
(undercloud) [stack@oscloud5 ~]$ openstack object store account set --property Temp-URL-Key=secretkey (undercloud) [stack@oscloud5 ~]$ openstack object store account show +------------+---------------------------------------+ | Field | Value | +------------+---------------------------------------+ | Account | AUTH_6833b565ea2a4682b6c7512a6e1d27c4 | | Bytes | 3157235 | | Containers | 9 | | Objects | 761 | | properties | Temp-Url-Key='secretkey' | +------------+---------------------------------------+ (undercloud) [stack@oscloud5 ~]$ sudo vi /etc/ironic/ironic.conf ... [glance] temp_url_endpoint_type = swift swift_endpoint_url = http://9.114.118.98:8080 swift_api_version = v1 swift_account = AUTH_6833b565ea2a4682b6c7512a6e1d27c4 swift_container = glance swift_temp_url_key = guess swift_temp_url_duration = 3601 #swift_temp_url_cache_enabled = true #swift_temp_url_expected_download_start_delay = 3600 ... (undercloud) [stack@oscloud5 ~]$ for I in openstack-ironic-conductor.service openstack-ironic-inspector.service openstack-ironic-inspector-dnsmasq.service; do sudo systemctl restart ${I}; done
And now do the deploy:
(undercloud) [stack@oscloud5 ~]$ openstack overcloud deploy --debug --templates -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml --control-scale 1 --compute-scale 1 --control-flavor control --compute-flavor compute 2>&1 | tee output.overcloud.deploy ... 2017-09-05 19:45:53.145 3636 ERROR ironic.drivers.modules.deploy_utils [req-cae10ca3-b586-4ea6-8bbc-a8c827265fa9 ce127a9ce842408682f1251583ca470b 56ffaa22fea94144864840cef5993602 - default default] Agent deploy supports only HTTP(S) URLs as instance_info['image_source'] or swift temporary URL. Either the specified URL is not a valid HTTP(S) URL or is not reachable for node 58c6e4a4-b0ec-49a7-9b5a-368a88c50dc3. Error: Validation of image href secreturl failed, reason: Got HTTP code 404 instead of 200 in response to HEAD request: ImageRefValidationFailed: Validation of image href secreturl failed, reason: Got HTTP code 404 instead of 200 in response to HEAD request. ...