heat_template_version: ocata description: > Ceph Monitor service. parameters: 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 EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set via parameter_defaults in the resource registry. type: json CephIPv6: default: False type: boolean CephMonKey: description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key. type: string hidden: true CinderRbdPoolName: default: volumes type: string ManilaCephFSDataPoolName: default: manila_data type: string ManilaCephFSMetadataPoolName: default: manila_metadata type: string CinderBackupRbdPoolName: default: backups type: string GlanceRbdPoolName: default: images type: string GnocchiRbdPoolName: default: metrics type: string NovaRbdPoolName: default: vms type: string CephPools: description: > It can be used to override settings for one of the predefined pools, or to create additional ones. Example: { "volumes": { "size": 5, "pg_num": 128, "pgp_num": 128 } } default: {} type: json MonitoringSubscriptionCephMon: default: 'overcloud-ceph-mon' type: string resources: CephBase: type: ./ceph-base.yaml properties: ServiceNetMap: {get_param: ServiceNetMap} DefaultPasswords: {get_param: DefaultPasswords} EndpointMap: {get_param: EndpointMap} outputs: role_data: description: Role data for the Ceph Monitor service. value: service_name: ceph_mon monitoring_subscription: {get_param: MonitoringSubscriptionCephMon} config_settings: map_merge: - get_attr: [CephBase, role_data, config_settings] - ceph::profile::params::ms_bind_ipv6: {get_param: CephIPv6} ceph::profile::params::mon_key: {get_param: CephMonKey} ceph::profile::params::osd_pool_default_pg_num: 32 ceph::profile::params::osd_pool_default_pgp_num: 32 ceph::profile::params::osd_pool_default_size: 3 # repeat returns items in a list, so we need to map_merge twice tripleo::profile::base::ceph::mon::ceph_pools: map_merge: - map_merge: repeat: for_each: <%pool%>: - {get_param: CinderRbdPoolName} - {get_param: ManilaCephFSDataPoolName} - {get_param: ManilaCephFSMetadataPoolName} - {get_param: CinderBackupRbdPoolName} - {get_param: NovaRbdPoolName} - {get_param: GlanceRbdPoolName} - {get_param: GnocchiRbdPoolName} template: <%pool%>: pg_num: "%{hiera('ceph::profile::params::osd_pool_default_pg_num')}" pgp_num: "%{hiera('ceph::profile::params::osd_pool_default_pgp_num')}" size: "%{hiera('ceph::profile::params::osd_pool_default_size')}" - {get_param: CephPools} tripleo.ceph_mon.firewall_rules: '110 ceph_mon': dport: - 6789 service_config_settings: get_attr: [CephBase, role_data, service_config_settings] step_config: | include ::tripleo::profile::base::ceph::mon upgrade_batch_tasks: # Note we perform these tasks in list order, but they are all step0 so # we can perform a rolling upgrade of all mon nodes in step0, then a # rolling upgrade of all osd nodes in step1 - name: Check status tags: step0,validation shell: ceph health | grep -qv HEALTH_ERR # FIXME(shardy) I suspect we can use heat or ansible facts here instead? - name: Get hostname tags: step0 shell: hostname -s register: mon_id - name: Stop Ceph Mon tags: step0 service: name=ceph-mon@{{mon_id.stdout}} pattern=ceph-mon state=stopped - name: Update ceph packages tags: step0 yum: name=ceph-mon state=latest - name: Start ceph-mon service tags: step0 service: name=ceph-mon@{{mon_id.stdout}} state=started - name: ceph osd crush tunables default tags: step0 shell: ceph osd crush tunables default