Merge "nova: switch auth_uri to keystone versionless endpoint"
[apex-tripleo-heat-templates.git] / puppet / services / pacemaker.yaml
1 heat_template_version: ocata
2
3 description: >
4   Pacemaker service configured with Puppet
5
6 parameters:
7   ServiceNetMap:
8     default: {}
9     description: Mapping of service_name -> network name. Typically set
10                  via parameter_defaults in the resource registry.  This
11                  mapping overrides those in ServiceNetMapDefaults.
12     type: json
13   DefaultPasswords:
14     default: {}
15     type: json
16   EndpointMap:
17     default: {}
18     description: Mapping of service endpoint -> protocol. Typically set
19                  via parameter_defaults in the resource registry.
20     type: json
21   MonitoringSubscriptionPacemaker:
22     default: 'overcloud-pacemaker'
23     type: string
24   CorosyncIPv6:
25     default: false
26     description: Enable IPv6 in Corosync
27     type: boolean
28   EnableFencing:
29     default: false
30     description: Whether to enable fencing in Pacemaker or not.
31     type: boolean
32   PacemakerRemoteAuthkey:
33     type: string
34     description: The authkey for the pacemaker remote service.
35     hidden: true
36     default: ''
37   PcsdPassword:
38     type: string
39     description: The password for the 'pcsd' user for pacemaker.
40     hidden: true
41     default: ''
42   CorosyncSettleTries:
43     type: number
44     description: Number of tries for cluster settling. This has the
45                  same default as the pacemaker puppet module. Override
46                  to a smaller value when in need to replace a controller node.
47     default: 360
48   FencingConfig:
49     default: {}
50     description: |
51       Pacemaker fencing configuration. The JSON should have
52       the following structure:
53         {
54           "devices": [
55             {
56               "agent": "AGENT_NAME",
57               "host_mac": "HOST_MAC_ADDRESS",
58               "params": {"PARAM_NAME": "PARAM_VALUE"}
59             }
60           ]
61         }
62       For instance:
63         {
64           "devices": [
65             {
66               "agent": "fence_xvm",
67               "host_mac": "52:54:00:aa:bb:cc",
68               "params": {
69                 "multicast_address": "225.0.0.12",
70                 "port": "baremetal_0",
71                 "manage_fw": true,
72                 "manage_key_file": true,
73                 "key_file": "/etc/fence_xvm.key",
74                 "key_file_password": "abcdef"
75               }
76             }
77           ]
78         }
79     type: json
80   PacemakerLoggingSource:
81     type: json
82     default:
83       tag: system.pacemaker
84       path: /var/log/pacemaker.log,/var/log/cluster/corosync.log
85       format: >-
86         /^(?<time>[^ ]*\s*[^ ]* [^ ]*)
87         \[(?<pid>[^ ]*)\]
88         (?<host>[^ ]*)
89         (?<message>.*)$/
90   PacemakerResources:
91     type: comma_delimited_list
92     description: List of resources managed by pacemaker
93     default: ['rabbitmq','haproxy','galera']
94
95 outputs:
96   role_data:
97     description: Role data for the Pacemaker role.
98     value:
99       service_name: pacemaker
100       monitoring_subscription: {get_param: MonitoringSubscriptionPacemaker}
101       logging_groups:
102         - haclient
103       logging_source: {get_param: PacemakerLoggingSource}
104       config_settings:
105         pacemaker::corosync::cluster_name: 'tripleo_cluster'
106         pacemaker::corosync::manage_fw: false
107         pacemaker::resource_defaults::defaults:
108           resource-stickiness: { value: INFINITY }
109         corosync_token_timeout: 10000
110         pacemaker::corosync::settle_tries: {get_param: CorosyncSettleTries}
111         tripleo.pacemaker.firewall_rules:
112           '130 pacemaker tcp':
113             proto: 'tcp'
114             dport:
115               - 2224
116               - 3121
117               - 21064
118           '131 pacemaker udp':
119             proto: 'udp'
120             dport: 5405
121         corosync_ipv6: {get_param: CorosyncIPv6}
122         tripleo::fencing::config: {get_param: FencingConfig}
123         enable_fencing: {get_param: EnableFencing}
124         hacluster_pwd:
125           yaql:
126             expression: $.data.passwords.where($ != '').first()
127             data:
128               passwords:
129                 - {get_param: PcsdPassword}
130                 - {get_param: [DefaultPasswords, pcsd_password]}
131         tripleo::profile::base::pacemaker::remote_authkey: {get_param: PacemakerRemoteAuthkey}
132       step_config: |
133         include ::tripleo::profile::base::pacemaker
134       upgrade_tasks:
135         - name: Check pacemaker cluster running before upgrade
136           tags: step0,validation
137           pacemaker_cluster: state=online check_and_fail=true
138         - name: Stop pacemaker cluster
139           tags: step2
140           pacemaker_cluster: state=offline
141         - name: Start pacemaker cluster
142           tags: step4
143           pacemaker_cluster: state=online
144         - name: Check pacemaker resource
145           tags: step4
146           pacemaker_is_active:
147             resource: "{{ item }}"
148             max_wait: 500
149           with_items: {get_param: PacemakerResources}