]> git-server-git.apps.pok.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>
Wed, 19 Feb 2020 22:52:53 +0000 (17:52 -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>
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 a73db7a3a5e17d594d7f8bfd72330a45fbcc8a9a..0b2d9fe944e19ea17e22eaae1957f86165930724 100644 (file)
@@ -720,6 +720,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 a2756709c6d9d8b20fbd77082bea7deef9b41b1b..a6b511c8164d897468a6602c232456646f259417 100644 (file)
@@ -720,6 +720,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 e978901e2201cf21fe69a4695665b4de2370a891..b579a7bf1b98fcc67111c7f9f9ff7187afcf20a8 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 2418810a55243b9b2b13a180c36f3913e437bb0a..cf8cddf568dec107a9406079b7b42ad82a62116f 100644 (file)
@@ -712,6 +712,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