This change introduces a new set of tasks to configure the
ceph dashboard backend and listen just on the mgr related
subnet (and not on '*'). For the same reason the proper
server address is added in both prometheus and alertmanger
systemd units.
This patch also adds the "dashboard_frontend_vip" parameter
to make sure we're able to support the HA model when multiple
grafana instances are deployed.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1792230
Signed-off-by: Francesco Pantano <fpantano@redhat.com>
(cherry picked from commit
15ed9eebf15c631b33c9de54f361e3d8ae993b3d)
#dashboard_rgw_api_user_id: ceph-dashboard
#dashboard_rgw_api_admin_resource: ''
#dashboard_rgw_api_no_ssl_verify: False
+#dashboard_frontend_vip: ''
#node_exporter_container_image: "prom/node-exporter:v0.17.0"
#node_exporter_port: 9100
#grafana_admin_user: admin
#dashboard_rgw_api_user_id: ceph-dashboard
#dashboard_rgw_api_admin_resource: ''
#dashboard_rgw_api_no_ssl_verify: False
+#dashboard_frontend_vip: ''
node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.1
#node_exporter_port: 9100
#grafana_admin_user: admin
vars:
grafana_server_addr: '{{ item }}'
+- name: config grafana api url vip
+ command: "{{ container_exec_cmd }} ceph --cluster {{ cluster }} dashboard set-grafana-api-url {{ dashboard_protocol }}://{{ dashboard_frontend_vip }}:{{ grafana_port }}"
+ delegate_to: "{{ groups[mon_group_name][0] }}"
+ run_once: true
+ changed_when: false
+ when: dashboard_frontend_vip is defined and dashboard_frontend_vip |length > 0
+
+- include_tasks: configure_dashboard_backends.yml
+ with_items: '{{ groups[mgr_group_name] | default(groups[mon_group_name]) }}'
+ vars:
+ dashboard_backend: '{{ item }}'
+
- name: dashboard object gateway management frontend
when: groups.get(rgw_group_name, []) | length > 0
block:
--- /dev/null
+---
+- name: get current mgr backend - ipv4
+ set_fact:
+ mgr_server_addr: "{{ hostvars[dashboard_backend]['ansible_all_ipv4_addresses'] | ips_in_ranges(public_network.split(',')) | first }}"
+ when: ip_version == 'ipv4'
+
+- name: get current mgr backend - ipv6
+ set_fact:
+ mgr_server_addr: "{{ hostvars[dashboard_backend]['ansible_all_ipv6_addresses'] | ips_in_ranges(public_network.split(',')) | last | ipwrap }}"
+ when: ip_version == 'ipv6'
+
+- name: config the current dashboard backend
+ command: "{{ container_exec_cmd }} ceph --cluster {{ cluster }} config set mgr mgr/dashboard/{{ hostvars[dashboard_backend]['ansible_hostname'] }}/server_addr {{ mgr_server_addr }}"
+ delegate_to: "{{ groups[mon_group_name][0] }}"
+ changed_when: false
+ run_once: true
dashboard_rgw_api_user_id: ceph-dashboard
dashboard_rgw_api_admin_resource: ''
dashboard_rgw_api_no_ssl_verify: False
+dashboard_frontend_vip: ''
node_exporter_container_image: "prom/node-exporter:v0.17.0"
node_exporter_port: 9100
grafana_admin_user: admin
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/prometheus \
--web.external-url=http://{{ ansible_fqdn }}:{{ prometheus_port }}/ \
- --web.listen-address=:{{ prometheus_port }}
+ --web.listen-address={{ grafana_server_addr }}:{{ prometheus_port }}
ExecStop=/usr/bin/{{ container_binary }} stop prometheus
KillMode=none
Restart=always