Note This same procedure is tested with 2 Nodes Controller + Compute and Controller+Compute+Network. Test with ODL not succesful.
Controller:
Compute:
network:
Version: Version 4.2.0 released Oct 22nd 2014
Puppet Module :: OpenStack Version :: OpenStack Codename 2.0.0 -> 2013.1.0 -> Grizzly 3.0.0 -> 2013.2.0 -> Havana 4.0.0 -> 2014.1.0 -> Icehouse 5.0.0 -> 2014.2.0 -> Juno
yum install puppet -y puppet module install puppetlabs-openstack --version 4.2.0
vim /etc/puppet/hiera.yaml
---
:backends:
- yaml
:hierarchy:
- defaults
- "%{clientcert}"
- "%{environment}"
- global
- common
:yaml: # When specifying a datadir, make sure the directory exists. :datadir: /etc/puppet/hieradata mkdir -p /etc/puppet/hieradata cp /etc/puppet/modules/openstack/examples/common.yaml /etc/puppet/hieradata/
Configuration detail for all nodes.
cat /etc/puppet/hieradata/common.yaml
openstack::region: 'openstack'
######## Networks
openstack::network::api: '192.168.201.0/24'
openstack::network::external: '192.168.201.0/24'
openstack::network::management: '10.10.11.0/24'
openstack::network::data: '10.20.21.0/24'
openstack::network::external::ippool::start: 192.168.201.100
openstack::network::external::ippool::end: 192.168.201.200
openstack::network::external::gateway: 192.168.201.1
openstack::network::external::dns: 192.168.201.1
######## Private Neutron Network
openstack::network::neutron::private: '10.0.0.0/24'
######## Fixed IPs (controllers)
openstack::controller::address::api: '192.168.201.29'
openstack::controller::address::management: '10.10.11.2'
openstack::storage::address::api: '192.168.201.29'
openstack::storage::address::management: '10.10.11.2'
######## Database
openstack::mysql::root_password: 'mysqlroot'
openstack::mysql::service_password: 'mysqlservice'
openstack::mysql::allowed_hosts: ['localhost', '127.0.0.1', 'devcontroller', 'devcompute']
######## RabbitMQ
openstack::rabbitmq::user: 'openstack'
openstack::rabbitmq::password: 'pose-vix'
######## Keystone
openstack::keystone::admin_token: 'keystonetoken'
openstack::keystone::admin_email: 'td@puppetlabs.com'
openstack::keystone::admin_password: 'admin'
openstack::keystone::tenants:
"demo":
description: "Demo tenant"
# admin user is configured above!
openstack::keystone::users:
"demo":
password: "demo"
tenant: "demo"
email: "demo@example.com"
admin: false
"test":
password: "test"
tenant: "demo"
email: "test@example.com"
admin: false
######## Glance
openstack::glance::password: 'glancePass'
######## Cinder
openstack::cinder::password: 'cinderPass'
openstack::cinder::volume_size: '28G'
######## Swift
openstack::swift::password: 'dexc-flo'
openstack::swift::hash_suffix: 'pop-bang'
######## Nova
openstack::nova::libvirt_type: 'kvm'
openstack::nova::password: 'novaPass'
######## Neutron
openstack::neutron::password: 'neutronPass'
openstack::neutron::shared_secret: 'neutronsharedsecret'
######## Ceilometer
openstack::ceilometer::mongo::password: 'mongoroot'
openstack::ceilometer::password: 'ceilometerPass'
openstack::ceilometer::meteringsecret: 'ceilometersecretkey'
######## Heat
openstack::heat::password: 'heatPass'
openstack::heat::encryption_key: 'heatsecretkey'
######## Horizon
openstack::horizon::secret_key: 'horizonsecretkey'
######## Tempest
openstack::tempest::configure_images : true
openstack::tempest::image_name : 'Cirros'
openstack::tempest::image_name_alt : 'Cirros'
openstack::tempest::username : 'demo'
openstack::tempest::username_alt : 'test'
openstack::tempest::username_admin : 'admin'
openstack::tempest::configure_network : true
openstack::tempest::public_network_name : 'public-net'
openstack::tempest::cinder_available : false
openstack::tempest::glance_available : true
openstack::tempest::horizon_available : true
openstack::tempest::nova_available : true
openstack::tempest::neutron_available : true
openstack::tempest::heat_available : true
openstack::tempest::swift_available : false
######## Log levels
openstack::verbose: 'True'
openstack::debug: 'True'
cp /etc/puppet/modules/openstack/manifests/role/controller.pp /etc/puppet/modules/openstack/manifests/role/mycontroller.pp
vim /etc/puppet/modules/openstack/manifests/role/mycontroller.pp
# change class name
class openstack::role::mycontroller inherits ::openstack::role {
# comment out
#class { '::openstack::profile::cinder::api': } ->
## Add glance api from storage node
class { '::openstack::profile::glance::api': } ->
Try other option:
## Add from storage
class { '::openstack::profile::glance::api': }
class { '::openstack::profile::cinder::volume': }
class { '::openstack::setup::cirros': }
cp /etc/puppet/modules/openstack/manifests/role/compute.pp /etc/puppet/modules/openstack/manifests/role/mycompute.pp
cat /etc/puppet/manifests/site.pp
node 'devcontroller' {
include ::openstack::role::mycontroller
}
node 'devcompute' {
include ::openstack::role::mycompute
}
On all Nodes:
puppet apply --verbose /etc/puppet/manifests/site.pp puppet apply --debug --verbose /etc/puppet/manifests/site.pp
openrc file for admin is generated under /root/openrc
cp /root/openrc admin_openrc
OVS-Local-IP (Mgmt-net) must be set on controller node, which is not available!!.
Solution: Disable tunneling on controller node only and enable later manually???
in hierardata/common.yaml neutron:tunneling:False
vim /etc/puppet/modules/openstack/manifests/resources/repo/rdo.pp include openstack::resources::repo::epel # add this line include openstack::resources::repo::yum_refresh
Edit
vim /etc/puppet/modules/openstack/manifests/resources/repo/erlang.pp
#baseurl => "http://binaries.erlang-solutions.com/rpm/${dist}/${osver}/x86_64",
baseurl => "http://binaries.erlang-solutions.com/rpm/centos/7/x86_64",
Install erlang first by hand
yum --enablerepo=updates-testing install -y erlang-sd_notify-0.1-4
nova-manage db sync ...
yum erase openstack-keystone puppet apply --verbose /etc/puppet/manifests/site.pp