Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
This project is now read‑only. Starting Monday, February 2, please use https://ibm-ceph.atlassian.net/ for all bug tracking management.

Bug 1908793

Summary: [cee/sd][RFE] add option to run mgr dashboard on different interface/network than public_network
Product: [Red Hat Storage] Red Hat Ceph Storage Reporter: Tomas Petr <tpetr>
Component: Ceph-AnsibleAssignee: Guillaume Abrioux <gabrioux>
Status: CLOSED DUPLICATE QA Contact: Ameena Suhani S H <amsyedha>
Severity: medium Docs Contact:
Priority: medium    
Version: 4.1CC: aschoen, ceph-eng-bugs, gmeno, gsitlani, lichen, maydin, mhackett, mmuench, nthomas, vereddy, ykaul
Target Milestone: ---Keywords: FutureFeature
Target Release: 4.3   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-07-08 16:35:46 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 Tomas Petr 2020-12-17 16:13:50 UTC
Description of problem:
The BZ#1792230 hard-coded using public_network for ceph mgr dashboard:
Bug 1792230 - missing settings to configure the mgr dashboard module binding port/address
https://bugzilla.redhat.com/show_bug.cgi?id=1792230

# cat /usr/share/ceph-ansible/roles/ceph-dashboard/tasks/configure_dashboard_backends.yml 
---
- 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 }}"
  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
-----

If we will change the dashborad configuration with ceph commands, like:
$ ceph config set mgr mgr/dashboard/$name/server_addr $IP

next ansible-playbook will rewrite it back to default - using public_network for IP.


We propose to change in this file from using public_network to something like dashboard_network,
that could allow us to set/change this via ceph-ansible, while default would be same as public_network.



Version-Release number of selected component (if applicable):
ceph-ansible-4.0.31-1.el7cp.noarch

How reproducible:
Always

Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 Tomas Petr 2020-12-17 16:22:53 UTC
proposed  changes tested and worked with with:
 - edit the file "/usr/share/ceph-ansible/roles/ceph-dashboard/tasks/configure_dashboard_backends.yml" and change 'public_network' for 'dashboard_network'
 - in all.yml file add line "dashboard_network: <IP_range>" where IP range will be the IP network range on your desired network interface, similar to the public/cluster_network configuration, like "dashboard_network: 192.128.0.1/24"
 - run the ansible-playbook, once finished, check the configuration by running "ceph config dump" 


# cat /usr/share/ceph-ansible/roles/ceph-dashboard/tasks/configure_dashboard_backends.yml 
---
- name: get current mgr backend - ipv4
  set_fact:
    mgr_server_addr: "{{ hostvars[dashboard_backend]['ansible_all_ipv4_addresses'] | ips_in_ranges(dashboard_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(dashboard_network.split(',')) | last }}"
  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

# cat /usr/share/ceph-ansible/group_vars/all.yml
...
ceph_rhcs_version: 4
upgrade_ceph_packages: True

grafana_admin_password: admin
dashboard_admin_password: p@ssw0rd
grafana_container_image: registry.redhat.io/rhceph/rhceph-4-dashboard-rhel8:4
node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.1
prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:4.1
alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:4.1
ceph_docker_registry_auth: true
dashboard_enabled: True
ceph_docker_image_tag: 4-33
ceph_docker_image: "rhceph/rhceph-4-rhel8"
ceph_docker_registry: "registry.redhat.io"
osd_memory_target: 1073741999

monitor_interface: eth0
radosgw_interface: eth0

public_network: "10.10.92.0/22"
cluster_network: "192.168.1.0/28"
dashboard_network: "10.10.94.253/22"

#  ansible-playbook -vv site-docker.yml.sample
# ceph config dump 
WHO   MASK LEVEL    OPTION                              VALUE                                    RO 
  mgr      advanced mgr/dashboard/ALERTMANAGER_API_HOST http://10.10.95.114:9093                 *  
  mgr      advanced mgr/dashboard/GRAFANA_API_PASSWORD  admin                                    *  
  mgr      advanced mgr/dashboard/GRAFANA_API_URL       http://10.10.95.114:3000                 *  
  mgr      advanced mgr/dashboard/GRAFANA_API_USERNAME  admin                                    *  
  mgr      advanced mgr/dashboard/PROMETHEUS_API_HOST   http://10.10.95.114:9092                 *  
  mgr      advanced mgr/dashboard/RGW_API_ACCESS_KEY    B2EL97VVFQ09ZGAQT842                     *  
  mgr      advanced mgr/dashboard/RGW_API_HOST          10.10.93.163                             *  
  mgr      advanced mgr/dashboard/RGW_API_PORT          8080                                     *  
  mgr      advanced mgr/dashboard/RGW_API_SCHEME        http                                     *  
  mgr      advanced mgr/dashboard/RGW_API_SECRET_KEY    skczH3rDFz3AgvU0fa4B3BS3KoBlC0TdWaOCB6Jc *  
  mgr      advanced mgr/dashboard/RGW_API_USER_ID       ceph-dashboard                           *  
  mgr      advanced mgr/dashboard/mons-0/server_addr    10.10.94.253                             *  
  mgr      advanced mgr/dashboard/mons-1/server_addr    10.10.95.227                             *  
  mgr      advanced mgr/dashboard/mons-2/server_addr    10.10.93.9                               *  
  mgr      advanced mgr/dashboard/server_port           8443                                     *  
  mgr      advanced mgr/dashboard/ssl                   false                                    *  
  mgr      advanced mgr/dashboard/ssl_server_port       8443                                     *

Comment 3 Guillaume Abrioux 2021-07-08 16:35:46 UTC

*** This bug has been marked as a duplicate of bug 1927574 ***