]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
ceph-rgw-loadbalancer: Fix rgw_ports fact
authorBenoît Knecht <bknecht@protonmail.ch>
Tue, 13 Apr 2021 11:57:44 +0000 (13:57 +0200)
committerGuillaume Abrioux <gabrioux@redhat.com>
Thu, 15 Apr 2021 11:20:45 +0000 (13:20 +0200)
The `set_fact rgw_ports` task was failing due to a templating error, because
`hostvars[item].rgw_instances` is a list, but it was treated as if it was a
dictionary.

Another issue was the fact that the `unique` filter only applied to the list
being appended to `rgw_ports` instead of the entire list, which means it was
possible to have duplicate items.

Lastly, `rgw_ports` would have been a list of integers, but the `seport` module
expects a list of strings.

This commit fixes all of the issues above, allowing the `ceph-rgw-loadbalancer`
role to work on systems with SELinux enabled.

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
(cherry picked from commit c07851347521b09c39b556818378767fc23f05e5)

roles/ceph-rgw-loadbalancer/tasks/pre_requisite.yml

index 7844d19fbade8cbb01feaef815828be131cf7ee1..45903c22050a1aa9b7d921142d5cc0940713ce8a 100644 (file)
@@ -41,7 +41,7 @@
   block:
     - name: set_fact rgw_ports
       set_fact:
-        rgw_ports: "{{ rgw_ports | default([]) + [hostvars[item]['rgw_instances']['radosgw_frontend_port']] | unique }}"
+        rgw_ports: "{{ rgw_ports | default([]) | union(hostvars[item]['rgw_instances'] | map(attribute='radosgw_frontend_port') | map('string') | list) }}"
       with_items: "{{ groups.get(rgw_group_name, []) }}"
 
     - name: add selinux rules