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