]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
Configure ceph dashboard backend and dashboard_frontend_vip
authorFrancesco Pantano <fpantano@redhat.com>
Wed, 12 Feb 2020 12:58:59 +0000 (13:58 +0100)
committerDimitri Savineau <savineau.dimitri@gmail.com>
Mon, 24 Feb 2020 21:50:19 +0000 (16:50 -0500)
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)

group_vars/all.yml.sample
group_vars/rhcs.yml.sample
roles/ceph-dashboard/tasks/configure_dashboard.yml
roles/ceph-dashboard/tasks/configure_dashboard_backends.yml [new file with mode: 0644]
roles/ceph-defaults/defaults/main.yml
roles/ceph-prometheus/templates/prometheus.service.j2

index 41c972fb1e950f4a8f309c30cacf7110ba80c11f..5e54e4dba3b3e0143501302ce15e6f379c3510ab 100644 (file)
@@ -715,6 +715,7 @@ dummy:
 #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
index 654f551d17a5edcab15b8f3b0eddb663aba88a85..276a4ee748b148b54c72cb6190023280b358c5f7 100644 (file)
@@ -715,6 +715,7 @@ ceph_docker_registry_auth: 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: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.1
 #node_exporter_port: 9100
 #grafana_admin_user: admin
index 113d1aa245498c09bfab99d67c2246d1a34f3adb..b361b40fb538c341af2224f15689aaf9bd4288e5 100644 (file)
   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:
diff --git a/roles/ceph-dashboard/tasks/configure_dashboard_backends.yml b/roles/ceph-dashboard/tasks/configure_dashboard_backends.yml
new file mode 100644 (file)
index 0000000..ba688f4
--- /dev/null
@@ -0,0 +1,16 @@
+---
+- 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
index 87d64ac9ee6318fa68022a365bfd70044bd5cc0f..92425107e30c06d051390d6866d05e90aee7ee9b 100644 (file)
@@ -707,6 +707,7 @@ dashboard_key: ''
 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
index 48a1a41c6bde224bacfefe6060add6d4e4aeff1e..c92e4d1998dfb8590472fa1a4c93ac75575ee16c 100644 (file)
@@ -24,7 +24,7 @@ ExecStart=/usr/bin/{{ container_binary }} run --rm --name=prometheus \
   --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