ad67a6c01b
We needed to update the Rake version required by the Gemfile inside the Packstack Puppet module directory. After that, a rake lint execution showed many linter errors, so fixing them. Change-Id: Ib58e62768f5b71e68b79002e01f0d779d1c6138b
106 lines
3.8 KiB
Puppet
106 lines
3.8 KiB
Puppet
class packstack::provision ()
|
|
{
|
|
$provision_demo = str2bool(hiera('CONFIG_PROVISION_DEMO'))
|
|
$provision_tempest = str2bool(hiera('CONFIG_PROVISION_TEMPEST'))
|
|
$provision_neutron = str2bool(hiera('CONFIG_NEUTRON_INSTALL'))
|
|
$heat_available = str2bool(hiera('CONFIG_HEAT_INSTALL'))
|
|
|
|
if $provision_demo {
|
|
$username = 'demo'
|
|
$password = hiera('CONFIG_KEYSTONE_DEMO_PW')
|
|
$tenant_name = 'demo'
|
|
$floating_range = hiera('CONFIG_PROVISION_DEMO_FLOATRANGE')
|
|
$allocation_pools = hiera('CONFIG_PROVISION_DEMO_ALLOCATION_POOLS')
|
|
} elsif $provision_tempest {
|
|
$username = hiera('CONFIG_PROVISION_TEMPEST_USER')
|
|
$password = hiera('CONFIG_PROVISION_TEMPEST_USER_PW')
|
|
$tenant_name = 'tempest'
|
|
$floating_range = hiera('CONFIG_PROVISION_TEMPEST_FLOATRANGE')
|
|
$allocation_pools = []
|
|
if (empty($username) or empty($password)) {
|
|
fail("Both CONFIG_PROVISION_TEMPEST_USER and
|
|
CONFIG_PROVISION_TEMPEST_USER_PW need to be configured.")
|
|
}
|
|
}
|
|
|
|
if $provision_demo or $provision_tempest {
|
|
|
|
# Keystone
|
|
$admin_tenant_name = 'admin'
|
|
keystone_tenant { $tenant_name:
|
|
ensure => present,
|
|
enabled => true,
|
|
description => 'default tenant',
|
|
}
|
|
|
|
keystone_user { $username:
|
|
ensure => present,
|
|
enabled => true,
|
|
password => $password,
|
|
}
|
|
|
|
if $heat_available {
|
|
keystone_user_role { "${username}@${tenant_name}":
|
|
ensure => present,
|
|
roles => ['_member_', 'heat_stack_owner'],
|
|
}
|
|
} else {
|
|
keystone_user_role { "${username}@${tenant_name}":
|
|
ensure => present,
|
|
roles => ['_member_'],
|
|
}
|
|
}
|
|
|
|
## Neutron
|
|
if $provision_neutron {
|
|
$public_network_name = 'public'
|
|
$public_subnet_name = 'public_subnet'
|
|
$private_network_name = 'private'
|
|
$private_subnet_name = 'private_subnet'
|
|
$fixed_range = '10.0.0.0/24'
|
|
$router_name = 'router1'
|
|
$public_physnet = hiera('CONFIG_NEUTRON_OVS_EXTERNAL_PHYSNET')
|
|
|
|
$neutron_deps = [Neutron_network[$public_network_name]]
|
|
|
|
neutron_network { $public_network_name:
|
|
ensure => present,
|
|
router_external => true,
|
|
tenant_name => $admin_tenant_name,
|
|
provider_network_type => 'flat',
|
|
provider_physical_network => $public_physnet,
|
|
}
|
|
neutron_subnet { $public_subnet_name:
|
|
ensure => 'present',
|
|
cidr => $floating_range,
|
|
allocation_pools => $allocation_pools,
|
|
enable_dhcp => false,
|
|
network_name => $public_network_name,
|
|
tenant_name => $admin_tenant_name,
|
|
}
|
|
neutron_network { $private_network_name:
|
|
ensure => present,
|
|
tenant_name => $tenant_name,
|
|
}
|
|
neutron_subnet { $private_subnet_name:
|
|
ensure => present,
|
|
cidr => $fixed_range,
|
|
network_name => $private_network_name,
|
|
tenant_name => $tenant_name,
|
|
}
|
|
# Tenant-owned router - assumes network namespace isolation
|
|
neutron_router { $router_name:
|
|
ensure => present,
|
|
tenant_name => $tenant_name,
|
|
gateway_network_name => $public_network_name,
|
|
# A neutron_router resource must explicitly declare a dependency on
|
|
# the first subnet of the gateway network.
|
|
require => Neutron_subnet[$public_subnet_name],
|
|
}
|
|
neutron_router_interface { "${router_name}:${private_subnet_name}":
|
|
ensure => present,
|
|
}
|
|
}
|
|
}
|
|
}
|