packstack/packstack/puppet/modules/packstack/manifests/provision.pp
Javier Pena ad67a6c01b Update rake version in puppet module Gemfile, fix linter
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
2020-06-11 10:51:26 +00:00

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,
}
}
}
}