fuel-library/deployment/puppet/nailgun/manifests/init.pp
Maksim Malchuk 8b87f79550 Puppet4 propper support in the nailgun module
* Adapt to Puppet 4
* Code cleanup

Change-Id: I60f7d0d7237303d610c90e002c4e5c22fedecf27
Closes-Bug: #1533352
2016-01-14 18:13:00 +03:00

286 lines
9.6 KiB
Puppet

class nailgun(
$package,
$version,
$production,
$venv,
$nailgun_group = 'nailgun',
$nailgun_user = 'nailgun',
$repo_root = '/var/www/nailgun',
$pip_index = '',
$pip_find_links = '',
$gem_source = 'http://localhost/gems/',
$database_name = 'nailgun',
$database_engine = 'postgresql',
$database_host = 'localhost',
$database_port = '5432',
$database_user = 'nailgun',
$database_passwd = 'nailgun',
$staticdir,
$templatedir,
$logdumpdir = '/var/www/nailgun/dump',
$cobbler_user = 'cobbler',
$cobbler_password = 'cobbler',
$cobbler_host = $::fuel_settings['ADMIN_NETWORK']['ipaddress'],
$cobbler_url = "http://${::fuel_settings['ADMIN_NETWORK']['ipaddress']}/cobbler_api",
$bootstrap_flavor = pick($::fuel_settings['BOOTSTRAP']['flavor'], 'centos'),
$dns_upstream = $::fuel_settings['DNS_UPSTREAM'],
$dns_domain = $::fuel_settings['DNS_DOMAIN'],
$dns_search = $::fuel_settings['DNS_SEARCH'],
$dhcp_start_address = $::fuel_settings['ADMIN_NETWORK']['dhcp_pool_start'],
$dhcp_end_address = $::fuel_settings['ADMIN_NETWORK']['dhcp_pool_end'],
$dhcp_netmask = $::fuel_settings['ADMIN_NETWORK']['netmask'],
$dhcp_mac = $::fuel_settings['ADMIN_NETWORK']['mac'],
$dhcp_interface = $::fuel_settings['ADMIN_NETWORK']['interface'],
$dhcp_gateway = $::fuel_settings['ADMIN_NETWORK']['dhcp_gateway'],
$mco_pskey = 'unset',
$mco_vhost = 'mcollective',
$mco_host = $ipaddress,
$mco_user = 'mcollective',
$mco_password = 'marionette',
$mco_connector = 'rabbitmq',
$astute_version,
$nailgun_api_url = "http://${::fuel_settings['ADMIN_NETWORK']['ipaddress']}:8000/api",
$rabbitmq_host = $::fuel_settings['ADMIN_NETWORK']['ipaddress'],
$rabbitmq_astute_user = 'naily',
$rabbitmq_astute_password = 'naily',
$puppet_master_hostname = "${::hostname}.${::domain}",
$puppet_master_ip = $::ipaddress,
$keystone_host = $keystone_host,
) {
Exec {path => '/usr/bin:/bin:/usr/sbin:/sbin'}
anchor { 'nailgun-begin': }
anchor { 'nailgun-end': }
Anchor<| title == 'nailgun-begin' |> ->
Class['nailgun::packages'] ->
Class['nailgun::nginx_repo'] ->
Exec['start_nginx_repo'] ->
Class['nailgun::user'] ->
Class['nailgun::logrotate'] ->
Class['nailgun::rabbitmq'] ->
Class['nailgun::mcollective'] ->
Class['nailgun::venv'] ->
Class['nailgun::astute'] ->
Class['nailgun::nginx_nailgun'] ->
Class['nailgun::host'] ->
Class['nailgun::cobbler'] ->
Class['openstack::logging'] ->
Class['nailgun::supervisor'] ->
Anchor<| title == 'nailgun-end' |>
class { '::nailgun::host':
production => $production,
cobbler_host => $cobbler_host,
nailgun_group => $nailgun_group,
nailgun_user => $nailgun_user,
}
class { '::nailgun::packages':
gem_source => $gem_source,
}
file { ['/etc/nginx/conf.d/default.conf',
'/etc/nginx/conf.d/virtual.conf',
'/etc/nginx/conf.d/ssl.conf']:
ensure => 'absent',
notify => Service['nginx'],
before => [
Class['::nailgun::nginx_repo'],
Class['::nailgun::nginx_nailgun'],
],
}
class { '::openstack::logging':
role => 'server',
log_remote => false,
log_local => true,
log_auth_local => true,
rotation => 'weekly',
keep => '4',
minsize => '5M',
maxsize => '20M',
port => '514',
# listen both TCP and UDP
proto => 'both',
# use date-rfc3339 timestamps
show_timezone => true,
virtual => str2bool($::is_virtual),
production => $production,
}
class { '::nailgun::user':
nailgun_group => $nailgun_group,
nailgun_user => $nailgun_user,
}
class { '::nailgun::venv':
venv => $venv,
venv_opts => '--system-site-packages',
package => $package,
version => $version,
pip_opts => "${pip_index} ${pip_find_links}",
production => $production,
nailgun_user => $nailgun_user,
nailgun_group => $nailgun_group,
database_name => $database_name,
database_engine => $database_engine,
database_host => $database_host,
database_port => $database_port,
database_user => $database_user,
database_passwd => $database_passwd,
staticdir => $staticdir,
templatedir => $templatedir,
rabbitmq_host => $rabbitmq_host,
rabbitmq_astute_user => $rabbitmq_astute_user,
rabbitmq_astute_password => $rabbitmq_astute_password,
admin_network => ipcalc_network_by_address_netmask($::fuel_settings['ADMIN_NETWORK']['ipaddress'], $::fuel_settings['ADMIN_NETWORK']['netmask']),
admin_network_cidr => ipcalc_network_cidr_by_netmask($::fuel_settings['ADMIN_NETWORK']['netmask']),
admin_network_size => ipcalc_network_count_addresses($::fuel_settings['ADMIN_NETWORK']['ipaddress'], $::fuel_settings['ADMIN_NETWORK']['netmask']),
admin_network_first => $::fuel_settings['ADMIN_NETWORK']['dhcp_pool_start'],
admin_network_last => $::fuel_settings['ADMIN_NETWORK']['dhcp_pool_end'],
admin_network_netmask => $::fuel_settings['ADMIN_NETWORK']['netmask'],
admin_network_mac => $::fuel_settings['ADMIN_NETWORK']['mac'],
admin_network_ip => $::fuel_settings['ADMIN_NETWORK']['ipaddress'],
admin_network_gateway => $::fuel_settings['ADMIN_NETWORK']['dhcp_gateway'],
cobbler_host => $cobbler_host,
cobbler_url => $cobbler_url,
cobbler_user => $cobbler_user,
cobbler_password => $cobbler_password,
mco_pskey => $mco_pskey,
mco_vhost => $mco_vhost,
mco_host => $mco_host,
mco_user => $mco_user,
mco_password => $mco_password,
mco_connector => $mco_connector,
puppet_master_hostname => $puppet_master_hostname,
keystone_host => $::fuel_settings['ADMIN_NETWORK']['ipaddress'],
keystone_nailgun_user => $::fuel_settings['keystone']['nailgun_user'],
keystone_nailgun_pass => $::fuel_settings['keystone']['nailgun_password'],
}
class {'::nailgun::astute':
production => $production,
rabbitmq_host => $rabbitmq_host,
rabbitmq_astute_user => $rabbitmq_astute_user,
rabbitmq_astute_password => $rabbitmq_astute_password,
version => $astute_version,
gem_source => $gem_source,
}
if $production == 'prod' {
$nailgun_env = $venv
$ostf_env = $venv
} else {
$nailgun_env = '/opt/nailgun'
$ostf_env = '/opt/fuel_plugins/ostf'
}
class { '::nailgun::supervisor':
nailgun_env => $nailgun_env,
ostf_env => $ostf_env,
}
class { '::nailgun::nginx_repo':
repo_root => $repo_root,
notify => Service['nginx'],
}
exec { 'start_nginx_repo':
command => '/etc/init.d/nginx start',
unless => '/etc/init.d/nginx status | grep -q running',
}
class { '::nailgun::nginx_nailgun':
staticdir => $staticdir,
logdumpdir => $logdumpdir,
notify => Service['nginx'],
}
class { '::nailgun::uwsgi':
venv => $venv,
}
class { '::nailgun::cobbler':
production => $production,
centos_repos => $::centos_repos,
gem_source => $gem_source,
cobbler_user => $cobbler_user,
cobbler_password => $cobbler_password,
bootstrap_flavor => $bootstrap_flavor,
server => $cobbler_host,
name_server => $cobbler_host,
next_server => $cobbler_host,
dns_upstream => $dns_upstream,
domain_name => $dns_domain,
dns_search => $dns_search,
mco_user => $mco_user,
mco_pass => $mco_password,
dhcp_start_address => $dhcp_start_address,
dhcp_end_address => $dhcp_end_address,
dhcp_netmask => $dhcp_netmask,
dhcp_gateway => $dhcp_gateway,
dhcp_interface => $dhcp_interface,
nailgun_api_url => $nailgun_api_url,
}
class { '::nailgun::mcollective':
mco_pskey => $mco_pskey,
mco_user => $mco_user,
mco_password => $mco_password,
mco_vhost => $mco_vhost,
}
if $production !~ /docker/ {
class { '::nailgun::database':
user => $database_user,
password => $database_passwd,
dbname => $database_name,
}
Class['::nailgun::database'] ->
Class['::nailgun::venv']
}
class { '::nailgun::rabbitmq':
production => $production,
astute_user => $rabbitmq_astute_user,
astute_password => $rabbitmq_astute_password,
mco_user => $mco_user,
mco_password => $mco_password,
mco_vhost => $mco_vhost,
}
class { '::nailgun::nginx_service': }
class { '::nailgun::logrotate': }
class { '::nailgun::ostf':
production => $production,
pip_opts => "${pip_index} ${pip_find_links}",
keystone_host => $keystone_host,
keystone_ostf_user => $::fuel_settings['keystone']['ostf_user'],
keystone_ostf_pass => $::fuel_settings['keystone']['ostf_password'],
}
class { '::nailgun::puppetsync': }
}