diff options
author | Tim Rozet <trozet@redhat.com> | 2019-01-04 12:28:30 -0500 |
---|---|---|
committer | Tim Rozet <trozet@redhat.com> | 2019-01-11 15:52:51 -0500 |
commit | 4cbad53ea9293fd51c5ffc368ca01787549472f7 (patch) | |
tree | b7d15482235035f91d7ebc025563de8c4350aac6 /apex | |
parent | e1c6f92cdac07949b00c758bab5c79ff20639dd9 (diff) |
Fixes undercloud install failure with setting hostname
There is a new bug when deploying master/rocky where the OS of the
undercloud/overcloud is now upgraded to CentOS 7.6. When the undercloud
install runs it fails to configure the hostname using hostnamectl. This
is because systemd-hostnamed is not running and fails to start. Simply
reloading dbus seems to fix the issue. In the dbus logs there are odd
error messages like:
dbus-daemon[3230]: Unknown username "root" in message bus configuration
file
Disabling selinux seems to fix this. This patch also moves to use
podman instead of docker for container management and invokes a script
in Ansible which updates NIC templates as new variables are added
upstream. Furthermore, with the new patches for routed networks in OOO,
it is now required that the MTU is set in network-data, as well as
adding the External network to the Compute role. Now the External
network is removed by default from the Compute role.
Change-Id: Ie8b86f6f28d69bda11b1f7a430df882970ac3cb9
Signed-off-by: Tim Rozet <trozet@redhat.com>
Diffstat (limited to 'apex')
-rw-r--r-- | apex/common/utils.py | 12 | ||||
-rw-r--r-- | apex/deploy.py | 7 | ||||
-rw-r--r-- | apex/network/network_data.py | 2 | ||||
-rw-r--r-- | apex/tests/test_apex_common_utils.py | 5 | ||||
-rw-r--r-- | apex/undercloud/undercloud.py | 5 |
5 files changed, 29 insertions, 2 deletions
diff --git a/apex/common/utils.py b/apex/common/utils.py index aae821ef..72a66d10 100644 --- a/apex/common/utils.py +++ b/apex/common/utils.py @@ -310,3 +310,15 @@ def fetch_properties(url): logging.warning('Unable to fetch properties for: {}'.format(url)) raise exc.FetchException('Unable determine properties location: ' '{}'.format(url)) + + +def find_container_client(os_version): + """ + Determines whether to use docker or podman client + :param os_version: openstack version + :return: client name as string + """ + if os_version == 'rocky' or os_version == 'queens': + return 'docker' + else: + return 'podman' diff --git a/apex/deploy.py b/apex/deploy.py index f5d64820..d0c2b208 100644 --- a/apex/deploy.py +++ b/apex/deploy.py @@ -527,6 +527,8 @@ def main(): container_vars['os_version'] = os_version container_vars['aarch64'] = platform.machine() == 'aarch64' container_vars['sdn_env_file'] = sdn_env_files + container_vars['container_client'] = utils.find_container_client( + os_version) try: utils.run_ansible(container_vars, docker_playbook, host=undercloud.ip, user='stack', @@ -569,6 +571,8 @@ def main(): deploy_vars['http_proxy'] = net_settings.get('http_proxy', '') deploy_vars['https_proxy'] = net_settings.get('https_proxy', '') deploy_vars['vim'] = ds_opts['vim'] + deploy_vars['container_client'] = utils.find_container_client( + os_version) for dns_server in net_settings['dns_servers']: deploy_vars['dns_server_args'] += " --dns-nameserver {}".format( dns_server) @@ -733,6 +737,9 @@ def main(): deploy_vars['sriov'] = ds_opts.get('sriov') deploy_vars['tacker'] = ds_opts.get('tacker') deploy_vars['all_in_one'] = all_in_one + # TODO(trozet): need to set container client to docker until OOO + # migrates OC to podman. Remove this later. + deploy_vars['container_client'] = 'docker' # TODO(trozet): pull all logs and store in tmp dir in overcloud # playbook post_overcloud = os.path.join(args.lib_dir, constants.ANSIBLE_PATH, diff --git a/apex/network/network_data.py b/apex/network/network_data.py index 1177af09..6f330c50 100644 --- a/apex/network/network_data.py +++ b/apex/network/network_data.py @@ -83,7 +83,7 @@ def create_network_data(ns, target=None): "{}".format(net)) raise NetworkDataException("cidr is null for network {}".format( net)) - + tmp_net['mtu'] = network.get('mtu', 1500) network_data.append(copy.deepcopy(tmp_net)) # have to do this due to the aforementioned bug diff --git a/apex/tests/test_apex_common_utils.py b/apex/tests/test_apex_common_utils.py index f307990d..1ecb7df6 100644 --- a/apex/tests/test_apex_common_utils.py +++ b/apex/tests/test_apex_common_utils.py @@ -155,3 +155,8 @@ class TestCommonUtils: def test_unique(self): dummy_list = [1, 2, 1, 3, 4, 5, 5] assert_equal(utils.unique(dummy_list), [1, 2, 3, 4, 5]) + + def test_find_container_client(self): + for version in 'rocky', 'queens': + assert_equal(utils.find_container_client(version), 'docker') + assert_equal(utils.find_container_client('master'), 'podman') diff --git a/apex/undercloud/undercloud.py b/apex/undercloud/undercloud.py index ccdcd168..5ee487c2 100644 --- a/apex/undercloud/undercloud.py +++ b/apex/undercloud/undercloud.py @@ -155,6 +155,8 @@ class Undercloud: ansible_vars['apex_temp_dir'] = apex_temp_dir ansible_vars['nat'] = self.detect_nat(net_settings) + ansible_vars['container_client'] = utils.find_container_client( + self.os_version) try: utils.run_ansible(ansible_vars, playbook, host=self.ip, user='stack') @@ -252,7 +254,8 @@ class Undercloud: "generate_service_certificate false", "undercloud_ntp_servers {}".format(str(ns['ntp'][0])), "container_images_file " - "/home/stack/containers-prepare-parameter.yaml" + "/home/stack/containers-prepare-parameter.yaml", + "undercloud_enable_selinux false" ] config['undercloud_network_config'] = [ |