Bug 1768063
Summary: | When External LB is used, minor updates fail while trying to work with haproxy-bundle | ||
---|---|---|---|
Product: | Red Hat OpenStack | Reporter: | Brendan Shephard <bshephar> |
Component: | openstack-tripleo-heat-templates | Assignee: | RHOS Maint <rhos-maint> |
Status: | CLOSED ERRATA | QA Contact: | Sasha Smolyak <ssmolyak> |
Severity: | urgent | Docs Contact: | |
Priority: | urgent | ||
Version: | 13.0 (Queens) | CC: | bperkins, dabarzil, kthakre, lmiccini, mburns, michele, rhos-maint |
Target Milestone: | z11 | Keywords: | Triaged, ZStream |
Target Release: | 13.0 (Queens) | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | openstack-tripleo-heat-templates-8.4.1-18.el7ost | Doc Type: | No Doc Update |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2020-03-10 11:22:07 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Brendan Shephard
2019-11-02 04:06:14 UTC
After tagging the relevant blocks and skipping the tags, we can see it completes successfully: ansible-playbook --module-path /usr/share/ansible-modules/ -i /usr/bin/tripleo-ansible-inventory --ssh-extra-args '-o UserKnownHostsFile=/dev/null' --ssh-common-args '-o StrictHostKeyChecking=no' -b update_steps_playbook.yaml --limit Controller --skip-tags haproxy_lb [...] PLAY RECAP ********************************************************************************************************************************************************************************************************************************** controller-0 : ok=287 changed=124 unreachable=0 failed=0 The only issue is that I'm not using an External LB. So there might be other issues that come into play that I'm unable to anticipate without a more thorough knowledge of the process. Making this part of my comment public as well for anyone watching this BZ: The tags I added are here: 62 - block: 63 - name: Check for haproxy Kolla configuration [...] 79 name: Set HAProxy upgrade facts 80 tags: haproxy_lb and 81 - block: 82 - command: cibadmin --query --xpath "//storage-mapping[@id='haproxy-cert']" [...] 113 name: Mount TLS cert if needed 114 when: 115 - step|int == 1 116 - haproxy_containerized|bool 117 - is_bootstrap_node 118 tags: haproxy_lb and 119 - block: 120 - name: Get docker Haproxy image [...] 142 name: Haproxy fetch and retag container image for pacemaker 143 when: step|int == 2 144 tags: haproxy_lb If I comment out the haproxy part from the docker-ha.yaml file and re-run the update prepare, it seems to remove all of it actually: - cp /usr/share/openstack-tripleo-heat-templates/environments/docker-ha.yaml ~/templates/ - vi ~/templates/docker-ha.yaml Comment out the haproxy part: # HA Containers managed by pacemaker OS::TripleO::Services::CinderVolume: ../docker/services/pacemaker/cinder-volume.yaml OS::TripleO::Services::Clustercheck: ../docker/services/pacemaker/clustercheck.yaml #OS::TripleO::Services::HAproxy: ../docker/services/pacemaker/haproxy.yaml OS::TripleO::Services::MySQL: ../docker/services/pacemaker/database/mysql.yaml OS::TripleO::Services::RabbitMQ: ../docker/services/pacemaker/rabbitmq.yaml OS::TripleO::Services::Redis: ../docker/services/pacemaker/database/redis.yaml - include that file at the end of my deployment script: -e /home/stack/templates/docker-ha.yaml \ - run the update prepare command Then when I check swift, I can now see it commented out: (undercloud) [stack@undercloud-0 ~]$ diff -u swift/environments/docker-ha.yaml swift_changed/environments/docker-ha.yaml --- swift/environments/docker-ha.yaml 2019-11-01 21:57:09.204555383 -0400 +++ swift_changed/environments/docker-ha.yaml 2019-11-02 01:23:16.948181306 -0400 @@ -16,7 +16,7 @@ # HA Containers managed by pacemaker OS::TripleO::Services::CinderVolume: ../docker/services/pacemaker/cinder-volume.yaml OS::TripleO::Services::Clustercheck: ../docker/services/pacemaker/clustercheck.yaml - OS::TripleO::Services::HAproxy: ../docker/services/pacemaker/haproxy.yaml + #OS::TripleO::Services::HAproxy: ../docker/services/pacemaker/haproxy.yaml OS::TripleO::Services::MySQL: ../docker/services/pacemaker/database/mysql.yaml OS::TripleO::Services::RabbitMQ: ../docker/services/pacemaker/rabbitmq.yaml OS::TripleO::Services::Redis: ../docker/services/pacemaker/database/redis.yaml Checking config download: (undercloud) [stack@undercloud-0 ~]$ grep haproxy blah1/tripleo-_ktbDN-config/Controller/update_tasks.yaml (undercloud) [stack@undercloud-0 ~]$ grep haproxy tmpconfig/tripleo-YhykHR-config/Controller/update_tasks.yaml - name: Check for haproxy Kolla configuration register: haproxy_kolla_config path: /var/lib/config-data/puppet-generated/haproxy - name: Check if haproxy is already containerized haproxy_containerized: '{{haproxy_kolla_config.stat.isdir | default(false)}}' tags: haproxy_lb - command: cibadmin --query --xpath "//storage-mapping[@id='haproxy-cert']" name: Check haproxy public certificate configuration in pacemaker register: haproxy_cert_mounted - name: Disable the haproxy cluster resource resource: haproxy-bundle when: haproxy_cert_mounted.rc == 6 haproxy_public_cert_path: /etc/pki/tls/private/overcloud_endpoint.pem haproxy_public_tls_enabled: false - command: pcs resource bundle update haproxy-bundle storage-map add id=haproxy-cert source-dir={{ haproxy_public_cert_path }} target-dir=/var/lib/kolla/config_files/src-tls/{{ haproxy_public_cert_path }} options=ro name: Add a bind mount for public certificate in the haproxy bundle when: haproxy_cert_mounted.rc == 6 and haproxy_public_tls_enabled|bool - name: Enable the haproxy cluster resource resource: haproxy-bundle when: haproxy_cert_mounted.rc == 6 - haproxy_containerized|bool tags: haproxy_lb docker_image: 192.168.24.1:8787/rhosp13/openstack-haproxy:2019-10-31.1 docker_image_latest: 192.168.24.1:8787/rhosp13/openstack-haproxy:pcmklatest register: haproxy_image_id shell: docker images | awk '/haproxy.* pcmklatest/{print $3}' | uniq register: haproxy_containers_to_destroy shell: docker ps -a -q -f 'ancestor={{haproxy_image_id.stdout}}' with_items: '{{ haproxy_containers_to_destroy.stdout_lines }}' shell: docker rmi -f {{haproxy_image_id.stdout}} - haproxy_image_id.stdout != '' This looks like the right solution. But I don't see this mentioned in the documentation. Can anyone confirm? So doing it this way appears to also work for me (comment 4): PLAY RECAP ********************************************************************* controller-0 : ok=280 changed=121 unreachable=0 failed=0 Saturday 02 November 2019 02:11:42 -0400 (0:00:00.043) 0:21:36.744 ***** =============================================================================== Updated nodes - Controller Success I feel like this is probably the "right" way to go about it. To get past this issue we: - set: resource_registry: OS::TripleO::Services::HAproxy: OS::Heat::None - Included it in the update prepare command - Verified that the haproxy parts of the update_tasks.yaml had been removed using openstack overcloud config download - We checked in swift and could see that this had now been set in user-environment.yaml: user-environment.yaml: OS::TripleO::Services::HAproxy: OS::Heat::None - Run the update: openstack overcloud update run --nodes Controller This now completes successfully and the converge was also successful. I think we probably need to document that and include it with the "External Load Balancing for the Overcloud" document: https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/13/html/external_load_balancing_for_the_overcloud/index I think we could also explicitly add OS::TripleO::Services::HAproxy: OS::Heat::None to the example environment files in THT (/usr/share/openstack-tripleo-heat-templates/environments/external-loadbalancer-vip.yaml etc). (In reply to Luca Miccini from comment #7) > I think we could also explicitly add > > OS::TripleO::Services::HAproxy: OS::Heat::None > > to the example environment files in THT > (/usr/share/openstack-tripleo-heat-templates/environments/external- > loadbalancer-vip.yaml etc). Yeah, I agree with this. I'll commit it to master for review and we can debate it there with everyone. merged upstream, cherry picked to queens here https://review.opendev.org/693053 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2020:0760 |