Add dashboard component as new ceph composable service.

This review introduces the CephDashboard service
to allow operators to deploy the new ceph dashboard
along with the other ceph components.
According to the spec we can add the environment
file to reference the template that contains all the
parameters needed to deploy the ceph-dashboard via
ceph-ansible related roles.

Implements: blueprint ceph-dashboard
Change-Id: I1d31cd99823686986cdbd3ac1df184e9457a361e
This commit is contained in:
fpantano 2019-07-05 19:02:15 +02:00
parent 2fd958eb64
commit a407d4f5da
No known key found for this signature in database
GPG Key ID: 799868C47301D458
20 changed files with 240 additions and 7 deletions

View File

@ -5,6 +5,7 @@ resource_registry:
OS::TripleO::Services::CephMon: ../../deployment/ceph-ansible/ceph-mon.yaml
OS::TripleO::Services::CephOSD: ../../deployment/ceph-ansible/ceph-osd.yaml
OS::TripleO::Services::CephClient: ../../deployment/ceph-ansible/ceph-client.yaml
OS::TripleO::Services::CephGrafana: ../../deployment/ceph-ansible/ceph-grafana.yaml
OS::TripleO::Services::PankoApi: ../../deployment/panko/panko-api-container-puppet.yaml
OS::TripleO::Services::Collectd: ../../deployment/metrics/collectd-container-puppet.yaml
OS::TripleO::Services::MetricsQdr: ../../deployment/metrics/qdr-container-puppet.yaml
@ -148,6 +149,7 @@ parameter_defaults:
ANSIBLE_SSH_RETRIES: '4'
DEFAULT_FORKS: '3'
NovaEnableRbdBackend: true
CephEnableDashboard: true
CinderEnableRbdBackend: true
CinderRbdExtraPools: altrbd
CinderBackupBackend: ceph

View File

@ -10,6 +10,7 @@ resource_registry:
OS::TripleO::Services::CephMon: ../../deployment/ceph-ansible/ceph-mon.yaml
OS::TripleO::Services::CephOSD: ../../deployment/ceph-ansible/ceph-osd.yaml
OS::TripleO::Services::CephClient: ../../deployment/ceph-ansible/ceph-client.yaml
OS::TripleO::Services::CephGrafana: ../../deployment/ceph-ansible/ceph-grafana.yaml
OS::TripleO::Services::PankoApi: ../../deployment/deprecated/panko/panko-api-container-puppet.yaml
OS::TripleO::Services::Collectd: ../../deployment/metrics/collectd-container-puppet.yaml
OS::TripleO::Services::GnocchiApi: ../../deployment/gnocchi/gnocchi-api-container-puppet.yaml
@ -90,6 +91,7 @@ parameter_defaults:
CephAdminKey: 'AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ=='
CephClientKey: 'AQC+vYNXgDAgAhAAc8UoYt+OTz5uhV7ItLdwUw=='
CephAnsiblePlaybookVerbosity: 1
CephEnableDashboard: true
CephAnsibleEnvironmentVariables:
ANSIBLE_SSH_RETRIES: '4'
DEFAULT_FORKS: '3'

View File

@ -50,6 +50,7 @@
- OS::TripleO::Services::CephMon
- OS::TripleO::Services::CephRbdMirror
- OS::TripleO::Services::CephRgw
- OS::TripleO::Services::CephGrafana
- OS::TripleO::Services::CertmongerUser
- OS::TripleO::Services::CinderApi
- OS::TripleO::Services::CinderBackendDellPs

View File

@ -53,6 +53,10 @@ parameters:
description: CLI tool used to manage containers.
constraints:
- allowed_values: ['docker', 'podman']
CephEnableDashboard:
type: boolean
default: false
description: Parameter used to trigger the dashboard deployment.
CephAnsiblePlaybook:
type: comma_delimited_list
description: >
@ -381,6 +385,7 @@ resources:
- {get_param: CephIPv6}
- ipv6
- ipv4
dashboard_enabled: {get_param: CephEnableDashboard}
outputs:
role_data:

View File

@ -0,0 +1,125 @@
heat_template_version: rocky
description: >
Ceph Grafana service.
parameters:
ServiceData:
default: {}
description: Dictionary packing service data
type: json
ServiceNetMap:
default: {}
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry. This
mapping overrides those in ServiceNetMapDefaults.
type: json
DefaultPasswords:
default: {}
type: json
RoleName:
default: ''
description: Role name on which the service is applied
type: string
RoleParameters:
default: {}
description: Parameters specific to the role
type: json
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
CephGrafanaAdminUser:
default: 'admin'
description: Admin user for grafana component
type: string
CephGrafanaAdminPassword:
description: Admin password for grafana component
type: string
hidden: true
GrafanaPlugins:
default: ['vonage-status-panel', 'grafana-piechart-panel']
type: comma_delimited_list
description: >
List of plugins to enable on the grafana container
GrafanaContainerImage:
description: Grafana container image
type: string
GrafanaDashboardsPath:
default: ''
description: ceph dashboards templates built for grafana
type: string
GrafanaDataSource:
default: 'Dashboard'
description: Grafana datasource
type: string
PrometheusContainerImage:
description: Ceph Prometheus container image
type: string
AlertManagerContainerImage:
description: Ceph AlertManager container image
type: string
NodeExporterContainerImage:
description: Ceph NodeExporter container image
type: string
resources:
CephBase:
type: ./ceph-base.yaml
properties:
ServiceData: {get_param: ServiceData}
ServiceNetMap: {get_param: ServiceNetMap}
DefaultPasswords: {get_param: DefaultPasswords}
EndpointMap: {get_param: EndpointMap}
RoleName: {get_param: RoleName}
RoleParameters: {get_param: RoleParameters}
CephGrafanaAnsibleVars:
type: OS::Heat::Value
properties:
type: json
value:
vars:
grafana_admin_user: {get_param: CephGrafanaAdminUser}
grafana_admin_password: {get_param: CephGrafanaAdminPassword}
grafana_container_image: {get_param: GrafanaContainerImage}
grafana_dashboards_path: {get_param: GrafanaDashboardsPath}
grafana_datasource: {get_param: GrafanaDataSource}
grafana_plugins: {get_param: GrafanaPlugins}
prometheus_container_image: {get_param: PrometheusContainerImage}
alertmanager_container_image: {get_param: AlertManagerContainerImage}
node_exporter_container_image: {get_param: NodeExporterContainerImage}
outputs:
role_data:
description: Role data for the Ceph Dashboard service.
value:
service_name: ceph_grafana-server
upgrade_tasks: []
puppet_config:
config_image: ''
config_volume: ''
step_config: ''
docker_config: {}
external_deploy_tasks:
list_concat:
- {get_attr: [CephBase, role_data, external_deploy_tasks]}
- - name: ceph_dashboard_external_deploy_init
when: step == '1'
tags: ceph
block:
- name: set ceph-ansible group vars
set_fact:
ceph_ansible_group_vars_grafana: {get_attr: [CephGrafanaAnsibleVars, value, vars]}
- name: generate ceph-ansible grafana-server group vars
copy:
dest: "{{playbook_dir}}/ceph-ansible/group_vars/grafana-server.yml"
content: "{{ceph_ansible_group_vars_grafana|to_nice_yaml}}"
external_update_tasks: {get_attr: [CephBase, role_data, external_update_tasks]}
external_upgrade_tasks: {get_attr: [CephBase, role_data, external_upgrade_tasks]}
config_settings:
map_merge:
- tripleo::ceph_dashboard::firewall_rules:
'123 ceph_dashboard':
dport: [3000,9090,9093,9094,9100]
- {}

View File

@ -55,6 +55,11 @@ parameters:
ManilaCephFSMetadataPoolPGNum:
default: 128
type: number
CephEnableDashboard:
type: boolean
default: false
description: Parameter used to trigger the dashboard deployment.
parameter_groups:
- label: deprecated
@ -66,6 +71,7 @@ parameter_groups:
conditions:
deprecated_data_pool_pgnum: {not: {equals: [{get_param: ManilaCephFSDataPoolPGNum}, 128]}}
deprecated_metadata_pool_pgnum: {not: {equals: [{get_param: ManilaCephFSMetadataPoolPGNum}, 128]}}
dashboard_enabled: {equals: [{get_param: CephEnableDashboard}, true]}
resources:
CephBase:
@ -132,5 +138,10 @@ outputs:
- tripleo::ceph_mds::firewall_rules:
'112 ceph_mds':
dport:
- '6800-7300'
list_concat:
- - '6800-7300'
- if:
- dashboard_enabled
- - '9100'
- []
- {}

View File

@ -30,6 +30,21 @@ parameters:
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
CephDashboardAdminUser:
default: 'admin'
description: Admin user for grafana component
type: string
CephDashboardAdminPassword:
description: Admin password for grafana component
type: string
hidden: true
CephEnableDashboard:
type: boolean
default: false
description: Parameter used to trigger the dashboard deployment.
conditions:
dashboard_enabled: {equals: [{get_param: CephEnableDashboard}, true]}
resources:
CephBase:
@ -49,6 +64,12 @@ resources:
value:
vars:
ceph_mgr_docker_extra_env: '-e MGR_DASHBOARD=0'
dashboard_admin_user: {get_param: CephDashboardAdminUser}
dashboard_admin_password: {get_param: CephDashboardAdminPassword}
dashboard_rgw_api_host: {get_param: [EndpointMap, CephRgwInternal, host]}
dashboard_rgw_api_port: {get_param: [EndpointMap, CephRgwInternal, port]}
dashboard_rgw_api_scheme: {get_param: [EndpointMap, CephRgwInternal, protocol]}
dashboard_rgw_api_no_ssl_verify: false
outputs:
role_data:
@ -82,5 +103,10 @@ outputs:
- tripleo::ceph_mgr::firewall_rules:
'113 ceph_mgr':
dport:
- '6800-7300'
list_concat:
- - '6800-7300'
- if:
- dashboard_enabled
- - '8443'
- []
- {}

View File

@ -47,6 +47,13 @@ parameters:
type: number
default: 30
description: Interval (in seconds) in between validation checks
CephEnableDashboard:
type: boolean
default: false
description: Parameter used to trigger the dashboard deployment.
conditions:
dashboard_enabled: {equals: [{get_param: CephEnableDashboard}, true]}
resources:
CephBase:
@ -100,6 +107,11 @@ outputs:
- tripleo::ceph_mon::firewall_rules:
'110 ceph_mon':
dport:
- 6789
- 3300
list_concat:
- - 6789
- - 3300
- if:
- dashboard_enabled
- - '9100'
- []
- {}

View File

@ -38,6 +38,13 @@ parameters:
- /dev/vdb
osd_scenario: lvm
osd_objectstore: bluestore
CephEnableDashboard:
type: boolean
default: false
description: Parameter used to trigger the dashboard deployment.
conditions:
dashboard_enabled: {equals: [{get_param: CephEnableDashboard}, true]}
resources:
CephBase:
@ -93,5 +100,10 @@ outputs:
- tripleo::ceph_osd::firewall_rules:
'111 ceph_osd':
dport:
- '6800-7300'
list_concat:
- - '6800-7300'
- if:
- dashboard_enabled
- - '9100'
- []
- {}

View File

@ -38,6 +38,13 @@ parameters:
type: string
default: 'regionOne'
description: Keystone region for endpoint
CephEnableDashboard:
type: boolean
default: false
description: Parameter used to trigger the dashboard deployment.
conditions:
dashboard_enabled: {equals: [{get_param: CephEnableDashboard}, true]}
resources:
CephBase:
@ -95,7 +102,13 @@ outputs:
map_merge:
- tripleo::ceph_rgw::firewall_rules:
'122 ceph rgw':
dport: {get_param: [EndpointMap, CephRgwInternal, port]}
dport:
list_concat:
- - {get_param: [EndpointMap, CephRgwInternal, port]}
- if:
- dashboard_enabled
- - '9100'
- []
- {}
service_config_settings:
keystone:

View File

@ -0,0 +1,5 @@
resource_registry:
OS::TripleO::Services::CephGrafana: ../../deployment/ceph-ansible/ceph-grafana.yaml
parameter_defaults:
CephEnableDashboard: true

View File

@ -117,6 +117,7 @@ resource_registry:
OS::TripleO::Services::CephRbdMirror: OS::Heat::None
OS::TripleO::Services::CephRgw: OS::Heat::None
OS::TripleO::Services::CephOSD: OS::Heat::None
OS::TripleO::Services::CephGrafana: OS::Heat::None
OS::TripleO::Services::CephClient: OS::Heat::None
OS::TripleO::Services::CephNfs: OS::Heat::None
OS::TripleO::Services::CephExternal: OS::Heat::None

View File

@ -0,0 +1,9 @@
---
features:
- |
As ceph-dashboard is available on Ceph, the new ceph dashboard composable
service enables a user scenario in which the dashboard is deployed along
with the other ceph components using TripleO.
This feature is disabled by default and can be enabled by operators adding
to the deployment the ceph-dashboard.yaml environment file included
in tripleo-heat-templates.

View File

@ -17,6 +17,7 @@
- OS::TripleO::Services::AuditD
- OS::TripleO::Services::BootParams
- OS::TripleO::Services::CACerts
- OS::TripleO::Services::CephGrafana
- OS::TripleO::Services::CephMds
- OS::TripleO::Services::CephMgr
- OS::TripleO::Services::CephMon

View File

@ -49,6 +49,7 @@
- OS::TripleO::Services::CeilometerAgentCentral
- OS::TripleO::Services::CeilometerAgentNotification
- OS::TripleO::Services::CephExternal
- OS::TripleO::Services::CephGrafana
- OS::TripleO::Services::CephMds
- OS::TripleO::Services::CephMgr
- OS::TripleO::Services::CephMon

View File

@ -40,6 +40,7 @@
- OS::TripleO::Services::CeilometerAgentCentral
- OS::TripleO::Services::CeilometerAgentNotification
- OS::TripleO::Services::CephExternal
- OS::TripleO::Services::CephGrafana
- OS::TripleO::Services::CephMds
- OS::TripleO::Services::CephMgr
- OS::TripleO::Services::CephMon

View File

@ -3,7 +3,7 @@
###############################################################################
- name: HciCephAll
description: |
HCI Full Stack Role (OSD + MON + Nova + RGW + MDS + MGR + RBD Mirroring)
HCI Full Stack Role (OSD + MON + Nova + RGW + MDS + MGR + RBD Mirroring + Dashboard)
networks:
InternalApi:
subnet: internal_api_subnet
@ -25,6 +25,7 @@
- OS::TripleO::Services::CACerts
- OS::TripleO::Services::CephClient
- OS::TripleO::Services::CephExternal
- OS::TripleO::Services::CephGrafana
- OS::TripleO::Services::CephMds
- OS::TripleO::Services::CephMgr
- OS::TripleO::Services::CephMon

View File

@ -41,6 +41,7 @@
- OS::TripleO::Services::CeilometerAgentNotification
- OS::TripleO::Services::CephClient
- OS::TripleO::Services::CephExternal
- OS::TripleO::Services::CephGrafana
- OS::TripleO::Services::CephMds
- OS::TripleO::Services::CephMgr
- OS::TripleO::Services::CephMon

View File

@ -52,6 +52,7 @@
- OS::TripleO::Services::CeilometerAgentCentral
- OS::TripleO::Services::CeilometerAgentNotification
- OS::TripleO::Services::CephExternal
- OS::TripleO::Services::CephGrafana
- OS::TripleO::Services::CephMds
- OS::TripleO::Services::CephMgr
- OS::TripleO::Services::CephMon

View File

@ -368,6 +368,7 @@ def validate_hci_role(hci_role_filename, hci_role_tpl):
for role in hci_role_tpl:
if role['name'] == 'HciCephAll':
hci_role_services = role['ServicesDefault']
hci_role_services.remove('OS::TripleO::Services::CephGrafana')
hci_role_services.remove('OS::TripleO::Services::CephMds')
hci_role_services.remove('OS::TripleO::Services::CephMgr')
hci_role_services.remove('OS::TripleO::Services::CephMon')
@ -403,6 +404,7 @@ def validate_ceph_role(ceph_role_filename, ceph_role_tpl):
for role in ceph_role_tpl:
if role['name'] == 'CephAll':
ceph_role_services = role['ServicesDefault']
ceph_role_services.remove('OS::TripleO::Services::CephGrafana')
ceph_role_services.remove('OS::TripleO::Services::CephMds')
ceph_role_services.remove('OS::TripleO::Services::CephMgr')
ceph_role_services.remove('OS::TripleO::Services::CephMon')
@ -433,6 +435,7 @@ def validate_controller_no_ceph_role(filename, tpl):
services.remove('OS::TripleO::Services::CephClient')
services.append('OS::TripleO::Services::CephMds')
services.append('OS::TripleO::Services::CephMgr')
services.append('OS::TripleO::Services::CephGrafana')
services.append('OS::TripleO::Services::CephMon')
services.append('OS::TripleO::Services::CephRbdMirror')
services.append('OS::TripleO::Services::CephRgw')