fuel-library/deployment/puppet/pacemaker
Sergey Vasilenko 0d78e4d995 refactor how provider starts child process
in very rare cases processes created by puppet return
before waiting for the child process to finish. this
leads to the issue when pacemaker provider
starts working with shadow xml copies before they are even created.

this fix refactors how provider starts child process using system function instead of fork&exec pair

testing showed that the issue goes away after this leaving all the other functions untouched

Change-Id: I0c48d974f915e1a3c848beddd9c8421ce00180b6
Closes-bug: #1444915
2015-04-16 13:06:07 +03:00
..
lib/puppet refactor how provider starts child process 2015-04-16 13:06:07 +03:00
spec Cleanup primitives by their full names 2015-01-29 23:00:04 +00:00
.fixtures.yml Sync corosync upstream 2015-01-23 11:05:09 +01:00
.gitignore Sync corosync upstream 2015-01-23 11:05:09 +01:00
.rspec Sync corosync upstream 2015-01-23 11:05:09 +01:00
.travis.yml Sync corosync upstream 2015-01-23 11:05:09 +01:00
Gemfile Sync corosync upstream 2015-01-23 11:05:09 +01:00
LICENSE Sync corosync upstream 2015-01-23 11:05:09 +01:00
Rakefile Sync corosync upstream 2015-01-23 11:05:09 +01:00
README.md Sync corosync upstream 2015-01-23 11:05:09 +01:00

Fuel module for Pacemaker

These manfisests are derived from puppetlabs-corosync modules v0.1.0.

Basic usage

Configuring primitives

The resources that Pacemaker will manage can be referred to as a primitive. These are things like virtual IPs or services like drbd, nginx, and apache.

To assign a VIP to a network interface to be used by Nginx

cs_resource { 'nginx_vip':
  primitive_class => 'ocf',
  primitive_type  => 'IPaddr2',
  provided_by     => 'heartbeat',
  parameters      => { 'ip' => '172.16.210.100', 'cidr_netmask' => '24' },
  operations      => { 'monitor' => { 'interval' => '10s' } },
}

Make Pacemaker manage and monitor the state of Nginx using a custom OCF agent

cs_resource { 'nginx_service':
  primitive_class => 'ocf',
  primitive_type  => 'nginx_fixed',
  provided_by     => 'pacemaker',
  operations      => {
    'monitor' => { 'interval' => '10s', 'timeout' => '30s' },
    'start'   => { 'interval' => '0', 'timeout' => '30s', 'on-fail' => 'restart' }
  },
  require         => Cs_primitive['nginx_vip'],
}

Make Pacemaker manage and monitor the state of Apache using a LSB agent

cs_resource { 'nginx_service':
  primitive_class => 'lsb',
  primitive_type  => 'apache2',
  provided_by     => 'heartbeat',
  operations      => {
    'monitor' => { 'interval' => '10s', 'timeout' => '30s' },
    'start'   => { 'interval' => '0', 'timeout' => '30s', 'on-fail' => 'restart' }
  },
  require         => Cs_primitive['apache2_vip'],
}

*You can also specify multi-state resource such as clone or master

cs_resource {'nginx_service':
primitive_class => 'lsb',
  provided_by     => 'heartbeat',
  operations      => {
    'monitor' => { 'interval' => '10s', 'timeout' => '30s' },
    'start'   => { 'interval' => '0', 'timeout' => '30s', 'on-fail' => 'restart' }
  },
  require         => Cs_primitive['apache2_vip'],
  multistate_hash => {'type'=>'clone','name'=>'nginx_clone'
  ms_metadata => {'interleave'=>'true'}
  }
}

Dependencies

Tested and built on Ubuntu 12.04 with 1.4.2 of Corosync is validated to function.

Notes

Contributors

Copyright (C) 2012 Puppet Labs Inc

Puppet Labs can be contacted at: info@puppetlabs.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.