puppet-vitrage/manifests/api.pp
ZhongShengping 0fa819aafa 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: I9265926488573daeba3acfcd8659caef3e37b9e2
2016-12-07 16:09:31 +08:00

102 lines
2.9 KiB
Puppet

# Installs & configure the vitrage api service
#
# == Parameters
#
# [*enabled*]
# (optional) Should the service be enabled.
# Defaults to true
#
# [*manage_service*]
# (optional) Whether the service should be managed by Puppet.
# Defaults to true.
#
# [*host*]
# (optional) The vitrage api bind address.
# Defaults to '0.0.0.0'
#
# [*port*]
# (optional) The vitrage api port.
# Defaults to '8999'
#
# [*package_ensure*]
# (optional) ensure state for package.
# Defaults to 'present'
#
# [*service_name*]
# (optional) Name of the service that will be providing the
# server functionality of vitrage-api.
# If the value is 'httpd', this means vitrage-api will be a web
# service, and you must use another class to configure that
# web service. For example, use class { 'vitrage::wsgi::apache'...}
# to make vitrage-api be a web app using apache mod_wsgi.
# Defaults to '$::vitrage::params::api_service_name'
#
# [*enable_proxy_headers_parsing*]
# (Optional) Enable paste middleware to handle SSL requests through
# HTTPProxyToWSGI middleware.
# Defaults to $::os_service_default.
#
class vitrage::api (
$manage_service = true,
$enabled = true,
$package_ensure = 'present',
$host = '0.0.0.0',
$port = '8999',
$service_name = $::vitrage::params::api_service_name,
$enable_proxy_headers_parsing = $::os_service_default,
) inherits vitrage::params {
include ::vitrage::deps
include ::vitrage::params
include ::vitrage::policy
package { 'vitrage-api':
ensure => $package_ensure,
name => $::vitrage::params::api_package_name,
tag => ['openstack', 'vitrage-package'],
}
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
if $service_name == $::vitrage::params::api_service_name {
service { 'vitrage-api':
ensure => $service_ensure,
name => $::vitrage::params::api_service_name,
enable => $enabled,
hasstatus => true,
hasrestart => true,
tag => 'vitrage-service',
}
} elsif $service_name == 'httpd' {
include ::apache::params
service { 'vitrage-api':
ensure => 'stopped',
name => $::vitrage::params::api_service_name,
enable => false,
tag => 'vitrage-service',
}
# we need to make sure vitrage-api/eventlet is stopped before trying to start apache
Service['vitrage-api'] -> Service[$service_name]
} else {
fail("Invalid service_name. Either vitrage/openstack-vitrage-api for running \
as a standalone service, or httpd for being run by a httpd server")
}
vitrage_config {
'api/host' : value => $host;
'api/port' : value => $port;
}
oslo::middleware { 'vitrage_config':
enable_proxy_headers_parsing => $enable_proxy_headers_parsing,
}
}