Fixes for HA fencing plugin

* Document a w/a for a parrallel deploy issue
* Add known issues section to docs
* Add missing versioning section to docs
* Deploy the plugin only at controller nodes

Related blueprint fencing-in-puppet-manifests
Related-bug: #1411603

Change-Id: I26ebb5a9d7dae0723b57d171644b626a7b9e691d
Signed-off-by: Bogdan Dobrelya <bdobrelia@mirantis.com>
This commit is contained in:
Bogdan Dobrelya 2015-01-16 12:31:23 +01:00
parent 7382d88ccf
commit 09e547f02c
2 changed files with 57 additions and 15 deletions

View File

@ -10,7 +10,9 @@ Fuel Fencing Plugin
5. [Limitations - OS compatibility, etc.](#limitations)
6. [Development - Guide for contributing to the plugin](#development)
7. [Contributors - Those with commits](#contributors)
8. [Release Notes - Notes on the most recent updates to the plugin](#release-notes)
8. [Versioning - Fuel and plugin versions](#versioning)
9. [Known Issues - Issues and workarounds](#known-issues)
10. [Release Notes - Notes on the most recent updates to the plugin](#release-notes)
Overview
--------
@ -118,6 +120,14 @@ Note that in order to build this plugin the following tools must present:
TODO(bogdando) finish the guide, add agents and devices verification commands
Please also note that the recommended value for the ``no-quorum-policy`` cluster property
should be changed manually (after deployment is done) from ignore/stopped to suicide.
For more information on no-quorum policy, see the [Cluster Options](http://clusterlabs.org/doc/en-US/Pacemaker/1.0/html/Pacemaker_Explained/s-cluster-options.html)
section in the official Pacemaker documentation. You can set this property by the command
```
pcs property set no-quorum-policy=suicide
```
Implementation
--------------
@ -170,6 +180,33 @@ Plugin :: Fuel version
6.0.0 -> 6.0
```
Known Issues
------------
[LP1411603](https://bugs.launchpad.net/fuel/+bug/1411603)
After the deployment is finished, please make sure all of the controller nodes have
corresponding ``stonith__*`` primitives and the stonith verification command gives
no errors.
You can list the STONITH primitives and check their health by the commands:
```
pcs stonith
pcs stonith level verify
```
And the location constraints could be shown by the commands:
```
pcs constraint list
pcs constraint ref <stonith_resource_name>
```
It is expected that every ``stonith_*`` primitive should have one "prohibit" and
one "allow" location shown by the ref command.
If some of the controller nodes does not have corresponding stonith primitives
or locations for them, please follow the workaround provided at the LP bug.
Release Notes
-------------

View File

@ -1,21 +1,26 @@
$fuel_settings = parseyaml($astute_settings_yaml)
# Fetch fencing policy and settings
$fence_policy = $::fuel_settings['ha_fencing']['fence_policy']
$fencing_enabled = $fence_policy ? { 'disabled'=>false, 'reboot'=>true, 'poweroff'=>true, default=>false }
$primary_controller = $::fuel_settings['role'] ? { 'primary-controller'=>true, default=>false }
$is_controller = $::fuel_settings['role'] ? { 'controller'=>true, default=>false }
if $fencing_enabled {
$fencing_settings = parseyaml($fencing_settings_yaml)
$fence_primitives = $::fencing_settings['fence_primitives']
$fence_topology = $::fencing_settings['fence_topology']
if ($is_controller or $primary_controller) {
# Fetch fencing policy and settings
$fence_policy = $::fuel_settings['ha_fencing']['fence_policy']
$fencing_enabled = $fence_policy ? { 'disabled'=>false, 'reboot'=>true, 'poweroff'=>true, default=>false }
$nodes_hash = $::fuel_settings['nodes']
$controllers = concat(filter_nodes($nodes_hash,'role','primary-controller'), filter_nodes($nodes_hash,'role','controller'))
if $fencing_enabled {
$fencing_settings = parseyaml($fencing_settings_yaml)
$fence_primitives = $::fencing_settings['fence_primitives']
$fence_topology = $::fencing_settings['fence_topology']
include stdlib
class { '::pcs_fencing::fencing_primitives':
fence_primitives => $fence_primitives,
fence_topology => $fence_topology,
nodes => $controllers,
$nodes_hash = $::fuel_settings['nodes']
$controllers = concat(filter_nodes($nodes_hash,'role','primary-controller'), filter_nodes($nodes_hash,'role','controller'))
include stdlib
class { '::pcs_fencing::fencing_primitives':
fence_primitives => $fence_primitives,
fence_topology => $fence_topology,
nodes => $controllers,
}
}
}