Brad P. Crochet c43da2d635 Change puppet to match tuskar packaging and code
* The database connection is just 'connection'
* Fix the Red Hat package names

Change-Id: I37751f5641345532717b69bba4772de48913f549
2015-04-29 08:42:28 -04:00

190 lines
5.4 KiB
Puppet

#
# Copyright (C) 2014 eNovance SAS <licensing@enovance.com>
#
# Author: Emilien Macchi <emilien.macchi@enovance.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.
#
# == Class tuskar::api
#
# Configure API service in tuskar
#
# == Parameters
#
# [*manage_service*]
# (optional) Whether to start/stop the service
# Defaults to true
#
# [*package_ensure*]
# (optional) Whether the tuskar api package will be installed
# Defaults to 'present'
#
# [*keystone_password*]
# (required) Password used to authentication.
#
# [*verbose*]
# (optional) Rather to log the tuskar api service at verbose level.
# Default: false
#
# [*debug*]
# (optional) Rather to log the tuskar api service at debug level.
# Default: false
#
# [*bind_host*]
# (optional) The address of the host to bind to.
# Default: 0.0.0.0
#
# [*bind_port*]
# (optional) The port the server should bind to.
# Default: 8585
#
# [*log_file*]
# (optional) The path of file used for logging
# If set to boolean false, it will not log to any file.
# Default: /var/log/tuskar/tuskar-api.log
#
# [*log_dir*]
# (optional) directory to which tuskar logs are sent.
# If set to boolean false, it will not log to any directory.
# Defaults to '/var/log/tuskar'
#
# [*keystone_tenant*]
# (optional) Tenant to authenticate to.
# Defaults to services.
#
# [*keystone_user*]
# (optional) User to authenticate as with keystone.
# Defaults to 'tuskar'.
# [*enabled*]
# (optional) Whether to enable services.
# Defaults to true.
#
# [*use_syslog*]
# (optional) Use syslog for logging.
# Defaults to false.
#
# [*log_facility*]
# (optional) Syslog facility to receive log lines.
# Defaults to 'LOG_USER'.
#
# [*purge_config*]
# (optional) Whether to set only the specified config options
# in the api config.
# Defaults to false.
#
# [*identity_uri*]
# (optional) Complete admin Identity API endpoint.
# Defaults to 'http://127.0.0.1:35357'.
#
class tuskar::api(
$keystone_password,
$verbose = false,
$debug = false,
$bind_host = '0.0.0.0',
$bind_port = '8585',
$log_file = '/var/log/tuskar/tuskar-api.log',
$log_dir = '/var/log/tuskar',
$keystone_tenant = 'services',
$keystone_user = 'tuskar',
$identity_uri = 'http://127.0.0.1:35357',
$enabled = true,
$use_syslog = false,
$log_facility = 'LOG_USER',
$purge_config = false,
$manage_service = true,
$package_ensure = 'present',
) inherits tuskar {
require ::keystone::python
include ::tuskar::params
Tuskar_config<||> ~> Exec['post-tuskar_config']
Tuskar_config<||> ~> Service['tuskar-api']
Package['tuskar-api'] -> Tuskar_config<||>
if $::tuskar::database_connection {
if($::tuskar::database_connection =~ /mysql:\/\/\S+:\S+@\S+\/\S+/) {
require 'mysql::bindings'
require 'mysql::bindings::python'
} elsif($::tuskar::database_connection =~ /postgresql:\/\/\S+:\S+@\S+\/\S+/) {
} elsif($::tuskar::database_connection =~ /sqlite:\/\//) {
} else {
fail("Invalid db connection ${::tuskar::database_connection}")
}
tuskar_config {
'database/connection': value => $::tuskar::database_connection, secret => true;
'database/sql_idle_timeout': value => $::tuskar::database_idle_timeoutl;
}
}
# basic service config
tuskar_config {
'DEFAULT/verbose': value => $verbose;
'DEFAULT/debug': value => $debug;
'DEFAULT/tuskar_api_bind_ip': value => $bind_host;
'DEFAULT/tuskar_api_port': value => $bind_port;
'keystone_authtoken/identity_uri': value => $identity_uri;
'keystone_authtoken/admin_user': value => $keystone_user;
'keystone_authtoken/admin_password': value => $keystone_password, secret => true;
'keystone_authtoken/admin_tenant_name': value => $keystone_tenant;
}
# Logging
if $log_file {
tuskar_config {
'DEFAULT/log_file': value => $log_file;
}
} else {
tuskar_config {
'DEFAULT/log_file': ensure => absent;
}
}
if $log_dir {
tuskar_config {
'DEFAULT/log_dir': value => $log_dir;
}
} else {
tuskar_config {
'DEFAULT/log_dir': ensure => absent;
}
}
# Syslog
if $use_syslog {
tuskar_config {
'DEFAULT/use_syslog' : value => true;
'DEFAULT/syslog_log_facility' : value => $log_facility;
}
} else {
tuskar_config {
'DEFAULT/use_syslog': value => false;
}
}
resources { 'tuskar_config':
purge => $purge_config,
}
tuskar::generic_service { 'api':
enabled => $enabled,
manage_service => $manage_service,
package_ensure => $package_ensure,
package_name => $::tuskar::params::api_package_name,
service_name => $::tuskar::params::api_service_name,
}
}