Add hooks for external install & svc management
This adds defined anchor points for external modules to hook into the software install, config and service dependency chain. This allows external modules to manage software installation (virtualenv, containers, etc) and service management (pacemaker) without needing rely on resources that may change or be renamed. Change-Id: I2b5707a0fe3dd72a56bbf1d840b4197bfa3012db
This commit is contained in:
parent
e202f75c97
commit
5a37cc8127
|
@ -36,18 +36,16 @@ class designate::agent (
|
||||||
package { 'designate-agent':
|
package { 'designate-agent':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => pick($agent_package_name, $::designate::params::agent_package_name),
|
name => pick($agent_package_name, $::designate::params::agent_package_name),
|
||||||
tag => 'openstack',
|
tag => ['openstack', 'designate-package'],
|
||||||
}
|
}
|
||||||
|
|
||||||
Designate_config<||> ~> Service['designate-agent']
|
|
||||||
Package['designate-agent'] -> Designate_config<||>
|
|
||||||
|
|
||||||
service { 'designate-agent':
|
service { 'designate-agent':
|
||||||
ensure => $service_ensure,
|
ensure => $service_ensure,
|
||||||
name => $::designate::params::agent_service_name,
|
name => $::designate::params::agent_service_name,
|
||||||
enable => $enabled,
|
enable => $enabled,
|
||||||
hasstatus => true,
|
hasstatus => true,
|
||||||
hasrestart => true,
|
hasrestart => true,
|
||||||
|
tag => ['openstack', 'designate-service'],
|
||||||
}
|
}
|
||||||
|
|
||||||
designate_config {
|
designate_config {
|
||||||
|
|
|
@ -76,12 +76,9 @@ class designate::api (
|
||||||
package { 'designate-api':
|
package { 'designate-api':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => pick($api_package_name, $::designate::params::api_package_name),
|
name => pick($api_package_name, $::designate::params::api_package_name),
|
||||||
tag => 'openstack',
|
tag => ['openstack', 'designate-package'],
|
||||||
}
|
}
|
||||||
|
|
||||||
Designate_config<||> ~> Service['designate-api']
|
|
||||||
Package['designate-api'] -> Designate_config<||>
|
|
||||||
|
|
||||||
service { 'designate-api':
|
service { 'designate-api':
|
||||||
ensure => $service_ensure,
|
ensure => $service_ensure,
|
||||||
name => $::designate::params::api_service_name,
|
name => $::designate::params::api_service_name,
|
||||||
|
@ -89,7 +86,7 @@ class designate::api (
|
||||||
hasstatus => true,
|
hasstatus => true,
|
||||||
hasrestart => true,
|
hasrestart => true,
|
||||||
require => Class['::designate::db'],
|
require => Class['::designate::db'],
|
||||||
subscribe => Exec['designate-dbsync']
|
tag => ['openstack', 'designate-service'],
|
||||||
}
|
}
|
||||||
|
|
||||||
# API Service
|
# API Service
|
||||||
|
|
|
@ -36,12 +36,9 @@ class designate::central (
|
||||||
package { 'designate-central':
|
package { 'designate-central':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => pick($central_package_name, $::designate::params::central_package_name),
|
name => pick($central_package_name, $::designate::params::central_package_name),
|
||||||
tag => 'openstack',
|
tag => ['openstack', 'designate-package'],
|
||||||
}
|
}
|
||||||
|
|
||||||
Designate_config<||> ~> Service['designate-central']
|
|
||||||
Package['designate-central'] -> Designate_config<||>
|
|
||||||
|
|
||||||
service { 'designate-central':
|
service { 'designate-central':
|
||||||
ensure => $service_ensure,
|
ensure => $service_ensure,
|
||||||
name => $::designate::params::central_service_name,
|
name => $::designate::params::central_service_name,
|
||||||
|
@ -49,7 +46,7 @@ class designate::central (
|
||||||
hasstatus => true,
|
hasstatus => true,
|
||||||
hasrestart => true,
|
hasrestart => true,
|
||||||
require => Class['::designate::db'],
|
require => Class['::designate::db'],
|
||||||
subscribe => Exec['designate-dbsync']
|
tag => ['openstack', 'designate-service'],
|
||||||
}
|
}
|
||||||
|
|
||||||
designate_config {
|
designate_config {
|
||||||
|
|
|
@ -16,8 +16,6 @@ class designate::db (
|
||||||
|
|
||||||
include ::designate::params
|
include ::designate::params
|
||||||
|
|
||||||
Package<| title == 'designate-common' |> -> Class['::designate::db']
|
|
||||||
|
|
||||||
case $database_connection {
|
case $database_connection {
|
||||||
/^mysql:\/\//: {
|
/^mysql:\/\//: {
|
||||||
require 'mysql::bindings'
|
require 'mysql::bindings'
|
||||||
|
@ -38,10 +36,12 @@ class designate::db (
|
||||||
user => 'root',
|
user => 'root',
|
||||||
refreshonly => true,
|
refreshonly => true,
|
||||||
logoutput => on_failure,
|
logoutput => on_failure,
|
||||||
subscribe => Designate_config['storage:sqlalchemy/connection']
|
# Config and software must be installed before running dbsync, and if either
|
||||||
|
# one changes, then run it again.
|
||||||
|
subscribe => [
|
||||||
|
Anchor['designate::install::end'],
|
||||||
|
Anchor['designate::config::end'],
|
||||||
|
],
|
||||||
|
notify => Anchor['designate::service::begin'],
|
||||||
}
|
}
|
||||||
|
|
||||||
# Have to have a valid configuration file before running migrations
|
|
||||||
Designate_config<||> -> Exec['designate-dbsync']
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,12 @@ class designate(
|
||||||
package { 'designate-common':
|
package { 'designate-common':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => pick($common_package_name, $::designate::params::common_package_name),
|
name => pick($common_package_name, $::designate::params::common_package_name),
|
||||||
tag => 'openstack',
|
tag => ['openstack', 'designate-package'],
|
||||||
|
}
|
||||||
|
|
||||||
|
if $package_ensure != 'absent' {
|
||||||
|
Package['designate-common'] -> User['designate']
|
||||||
|
Package['designate-common'] -> Group['designate']
|
||||||
}
|
}
|
||||||
|
|
||||||
user { 'designate':
|
user { 'designate':
|
||||||
|
@ -79,13 +84,13 @@ class designate(
|
||||||
name => 'designate',
|
name => 'designate',
|
||||||
gid => 'designate',
|
gid => 'designate',
|
||||||
system => true,
|
system => true,
|
||||||
require => Package['designate-common'],
|
before => Anchor['designate::install::end'],
|
||||||
}
|
}
|
||||||
|
|
||||||
group { 'designate':
|
group { 'designate':
|
||||||
ensure => 'present',
|
ensure => 'present',
|
||||||
name => 'designate',
|
name => 'designate',
|
||||||
require => Package['designate-common'],
|
before => Anchor['designate::install::end'],
|
||||||
}
|
}
|
||||||
|
|
||||||
file { '/etc/designate/':
|
file { '/etc/designate/':
|
||||||
|
@ -95,14 +100,6 @@ class designate(
|
||||||
mode => '0750',
|
mode => '0750',
|
||||||
}
|
}
|
||||||
|
|
||||||
file { '/etc/designate/designate.conf':
|
|
||||||
owner => 'designate',
|
|
||||||
group => 'designate',
|
|
||||||
mode => '0640',
|
|
||||||
}
|
|
||||||
|
|
||||||
Package['designate-common'] -> Designate_config<||>
|
|
||||||
|
|
||||||
designate_config {
|
designate_config {
|
||||||
'DEFAULT/rabbit_userid' : value => $rabbit_userid;
|
'DEFAULT/rabbit_userid' : value => $rabbit_userid;
|
||||||
'DEFAULT/rabbit_password' : value => $rabbit_password, secret => true;
|
'DEFAULT/rabbit_password' : value => $rabbit_password, secret => true;
|
||||||
|
@ -130,4 +127,26 @@ class designate(
|
||||||
'DEFAULT/state_path' : value => $::designate::params::state_path;
|
'DEFAULT/state_path' : value => $::designate::params::state_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Setup anchors for install, config and service phases of the module. These
|
||||||
|
# anchors allow external modules to hook the begin and end of any of these
|
||||||
|
# phases. Package or service management can also be replaced by ensuring the
|
||||||
|
# package is absent or turning off service management and having the
|
||||||
|
# replacement depend on the appropriate anchors. When applicable, end tags
|
||||||
|
# should be notified so that subscribers can determine if installation,
|
||||||
|
# config or service state changed and act on that if needed.
|
||||||
|
anchor { 'designate::install::begin': } ->
|
||||||
|
Package<| tag == 'designate-package'|> ~>
|
||||||
|
anchor { 'designate::install::end': }
|
||||||
|
->
|
||||||
|
anchor { 'designate::config::begin': } ->
|
||||||
|
Designate_config<||> ~>
|
||||||
|
anchor { 'designate::config::end': }
|
||||||
|
->
|
||||||
|
anchor { 'designate::service::begin': } ~>
|
||||||
|
Service<| tag == 'designate-service' |> ~>
|
||||||
|
anchor { 'designate::service::end': }
|
||||||
|
|
||||||
|
# Package installation or config changes will always restart services.
|
||||||
|
Anchor['designate::install::end'] ~> Anchor['designate::service::begin']
|
||||||
|
Anchor['designate::config::end'] ~> Anchor['designate::service::begin']
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,16 +31,15 @@ class designate::sink (
|
||||||
package { 'designate-sink':
|
package { 'designate-sink':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => pick($sink_package_name, $::designate::params::sink_service_name),
|
name => pick($sink_package_name, $::designate::params::sink_service_name),
|
||||||
tag => 'openstack',
|
tag => ['openstack', 'designate-package'],
|
||||||
}
|
}
|
||||||
|
|
||||||
Package['designate-sink'] -> Service['designate-sink']
|
|
||||||
|
|
||||||
service { 'designate-sink':
|
service { 'designate-sink':
|
||||||
ensure => $service_ensure,
|
ensure => $service_ensure,
|
||||||
name => $::designate::params::sink_service_name,
|
name => $::designate::params::sink_service_name,
|
||||||
enable => $enabled,
|
enable => $enabled,
|
||||||
hasstatus => true,
|
hasstatus => true,
|
||||||
hasrestart => true,
|
hasrestart => true,
|
||||||
|
tag => ['openstack', 'designate-service'],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,12 +16,13 @@ describe 'designate::agent' do
|
||||||
is_expected.to contain_service('designate-agent').with(
|
is_expected.to contain_service('designate-agent').with(
|
||||||
:name => platform_params[:agent_service_name],
|
:name => platform_params[:agent_service_name],
|
||||||
:ensure => 'running',
|
:ensure => 'running',
|
||||||
:enable => 'true'
|
:enable => 'true',
|
||||||
|
:tag => ['openstack', 'designate-service'],
|
||||||
)
|
)
|
||||||
is_expected.to contain_package('designate-agent').with(
|
is_expected.to contain_package('designate-agent').with(
|
||||||
:name => platform_params[:agent_package_name],
|
:name => platform_params[:agent_package_name],
|
||||||
:ensure => 'present',
|
:ensure => 'present',
|
||||||
:tag => 'openstack'
|
:tag => ['openstack', 'designate-package'],
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -23,12 +23,12 @@ describe 'designate::api' do
|
||||||
:ensure => 'running',
|
:ensure => 'running',
|
||||||
:require => 'Class[Designate::Db]',
|
:require => 'Class[Designate::Db]',
|
||||||
:enable => 'true',
|
:enable => 'true',
|
||||||
:subscribe => 'Exec[designate-dbsync]'
|
:tag => ['openstack', 'designate-service'],
|
||||||
)
|
)
|
||||||
is_expected.to contain_package('designate-api').with(
|
is_expected.to contain_package('designate-api').with(
|
||||||
:name => platform_params[:api_package_name],
|
:name => platform_params[:api_package_name],
|
||||||
:ensure => 'present',
|
:ensure => 'present',
|
||||||
:tag => 'openstack'
|
:tag => ['openstack', 'designate-package'],
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,13 @@ describe 'designate::central' do
|
||||||
is_expected.to contain_service('designate-central').with(
|
is_expected.to contain_service('designate-central').with(
|
||||||
:name => platform_params[:central_service_name],
|
:name => platform_params[:central_service_name],
|
||||||
:ensure => 'running',
|
:ensure => 'running',
|
||||||
:enable => 'true'
|
:enable => 'true',
|
||||||
|
:tag => ['openstack', 'designate-service'],
|
||||||
)
|
)
|
||||||
is_expected.to contain_package('designate-central').with(
|
is_expected.to contain_package('designate-central').with(
|
||||||
:name => platform_params[:central_package_name],
|
:name => platform_params[:central_package_name],
|
||||||
:ensure => 'present',
|
:ensure => 'present',
|
||||||
:tag => 'openstack'
|
:tag => ['openstack', 'designate-package'],
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,12 @@ describe 'designate::db' do
|
||||||
is_expected.to contain_designate_config('storage:sqlalchemy/connection').with_value('mysql://designate:designate@localhost/designate')
|
is_expected.to contain_designate_config('storage:sqlalchemy/connection').with_value('mysql://designate:designate@localhost/designate')
|
||||||
is_expected.to contain_class('mysql::bindings')
|
is_expected.to contain_class('mysql::bindings')
|
||||||
is_expected.to contain_class('mysql::bindings::python')
|
is_expected.to contain_class('mysql::bindings::python')
|
||||||
is_expected.to contain_exec('designate-dbsync')
|
is_expected.to contain_exec('designate-dbsync').with(
|
||||||
|
:subscribe => ['Anchor[designate::install::end]',
|
||||||
|
'Anchor[designate::config::end]'],
|
||||||
|
:notify => 'Anchor[designate::service::begin]',
|
||||||
|
)
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ describe 'designate' do
|
||||||
is_expected.to contain_group('designate').with(
|
is_expected.to contain_group('designate').with(
|
||||||
:ensure => 'present',
|
:ensure => 'present',
|
||||||
:name => 'designate',
|
:name => 'designate',
|
||||||
:require => 'Package[designate-common]',
|
:before => 'Anchor[designate::install::end]',
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -61,6 +61,7 @@ describe 'designate' do
|
||||||
:name => 'designate',
|
:name => 'designate',
|
||||||
:gid => 'designate',
|
:gid => 'designate',
|
||||||
:system => true,
|
:system => true,
|
||||||
|
:before => 'Anchor[designate::install::end]',
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -73,19 +74,12 @@ describe 'designate' do
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'configures designate configuration file' do
|
|
||||||
is_expected.to contain_file('/etc/designate/designate.conf').with(
|
|
||||||
:owner => 'designate',
|
|
||||||
:group => 'designate',
|
|
||||||
:mode => '0640'
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'installs designate common package' do
|
it 'installs designate common package' do
|
||||||
is_expected.to contain_package('designate-common').with(
|
is_expected.to contain_package('designate-common').with(
|
||||||
:ensure => 'installed',
|
:ensure => 'installed',
|
||||||
:name => platform_params[:common_package_name],
|
:name => platform_params[:common_package_name],
|
||||||
:tag => 'openstack'
|
:tag => ['openstack', 'designate-package'],
|
||||||
|
:before => ['User[designate]', 'Group[designate]'],
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -95,6 +89,19 @@ describe 'designate' do
|
||||||
is_expected.to contain_designate_config('DEFAULT/root_helper').with_value( params[:root_helper] )
|
is_expected.to contain_designate_config('DEFAULT/root_helper').with_value( params[:root_helper] )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'configures phase anchors' do
|
||||||
|
is_expected.to contain_anchor('designate::install::begin')
|
||||||
|
is_expected.to contain_anchor('designate::install::end').with(
|
||||||
|
:notify => ['Anchor[designate::service::begin]'],
|
||||||
|
)
|
||||||
|
is_expected.to contain_anchor('designate::config::begin')
|
||||||
|
is_expected.to contain_anchor('designate::config::end').with(
|
||||||
|
:notify => ['Anchor[designate::service::begin]'],
|
||||||
|
)
|
||||||
|
is_expected.to contain_anchor('designate::service::begin')
|
||||||
|
is_expected.to contain_anchor('designate::service::end')
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
shared_examples_for 'rabbit without HA support' do
|
shared_examples_for 'rabbit without HA support' do
|
||||||
|
|
|
@ -16,12 +16,13 @@ describe 'designate::sink' do
|
||||||
is_expected.to contain_service('designate-sink').with(
|
is_expected.to contain_service('designate-sink').with(
|
||||||
:name => platform_params[:sink_service_name],
|
:name => platform_params[:sink_service_name],
|
||||||
:ensure => 'running',
|
:ensure => 'running',
|
||||||
:enable => 'true'
|
:enable => 'true',
|
||||||
|
:tag => ['openstack', 'designate-service'],
|
||||||
)
|
)
|
||||||
is_expected.to contain_package('designate-sink').with(
|
is_expected.to contain_package('designate-sink').with(
|
||||||
:name => platform_params[:sink_package_name],
|
:name => platform_params[:sink_package_name],
|
||||||
:ensure => 'present',
|
:ensure => 'present',
|
||||||
:tag => 'openstack'
|
:tag => ['openstack', 'designate-package'],
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue