Add fedora support
This commit is a refactor of work performed by Derek Higgins that adds fedora 16 support to these openstack modules. It contains the following: - creates a params class to store all of the data differences. - installs all packages on all nova nodes - introuces an anchor that is used to specify ordering for things that need to occur before nova is installed. - manages libvirt package and service in the nova::compute::libvirt class
This commit is contained in:
parent
649f335ae4
commit
e66e5ab7c4
@ -12,18 +12,14 @@ class nova::api($enabled=false) {
|
|||||||
exec { "initial-db-sync":
|
exec { "initial-db-sync":
|
||||||
command => "/usr/bin/nova-manage db sync",
|
command => "/usr/bin/nova-manage db sync",
|
||||||
refreshonly => true,
|
refreshonly => true,
|
||||||
require => [Package["nova-common"], Nova_config['sql_connection']],
|
require => [Package[$::nova::params::package_names], Nova_config['sql_connection']],
|
||||||
}
|
}
|
||||||
|
|
||||||
package { "nova-api":
|
|
||||||
ensure => present,
|
|
||||||
require => Package["python-greenlet"],
|
|
||||||
notify => Exec['initial-db-sync'],
|
|
||||||
}
|
|
||||||
service { "nova-api":
|
service { "nova-api":
|
||||||
|
name => $::nova::params::api_service_name,
|
||||||
ensure => $service_ensure,
|
ensure => $service_ensure,
|
||||||
enable => $enabled,
|
enable => $enabled,
|
||||||
require => Package["nova-api"],
|
require => Package[$::nova::params::package_names],
|
||||||
#subscribe => File["/etc/nova/nova.conf"]
|
#subscribe => File["/etc/nova/nova.conf"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,15 +16,11 @@ class nova::compute(
|
|||||||
$service_ensure = 'stopped'
|
$service_ensure = 'stopped'
|
||||||
}
|
}
|
||||||
|
|
||||||
package { "nova-compute":
|
|
||||||
ensure => present,
|
|
||||||
require => Package['nova-common'],
|
|
||||||
}
|
|
||||||
|
|
||||||
service { "nova-compute":
|
service { "nova-compute":
|
||||||
|
name => $::nova::params::compute_service_name,
|
||||||
ensure => $service_ensure,
|
ensure => $service_ensure,
|
||||||
enable => $enabled,
|
enable => $enabled,
|
||||||
require => Package["nova-compute"],
|
require => Package[$::nova::params::package_names],
|
||||||
before => Exec['networking-refresh'],
|
before => Exec['networking-refresh'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,9 +3,29 @@ class nova::compute::libvirt (
|
|||||||
$flat_network_bridge = 'br100',
|
$flat_network_bridge = 'br100',
|
||||||
$flat_network_bridge_ip,
|
$flat_network_bridge_ip,
|
||||||
$flat_network_bridge_netmask
|
$flat_network_bridge_netmask
|
||||||
) {
|
) inherits nova::compute{
|
||||||
|
|
||||||
|
include nova::params
|
||||||
|
|
||||||
|
package { 'libvirt':
|
||||||
|
name => $::nova::params::libvirt_package_name,
|
||||||
|
ensure => present,
|
||||||
|
}
|
||||||
|
|
||||||
|
service {"libvirt" :
|
||||||
|
name => $::nova::params::libvirt_service_name,
|
||||||
|
ensure => running,
|
||||||
|
provider => $::nova::params::special_service_provider,
|
||||||
|
require => Package['libvirt'],
|
||||||
|
}
|
||||||
|
|
||||||
|
Service['nova-compute'] {
|
||||||
|
require +> Service['libvirt'],
|
||||||
|
}
|
||||||
|
|
||||||
nova_config { 'libvirt_type': value => $libvirt_type }
|
nova_config { 'libvirt_type': value => $libvirt_type }
|
||||||
nova_config { 'connection_type': value => 'libvirt' }
|
nova_config { 'connection_type': value => 'libvirt' }
|
||||||
|
|
||||||
nova::network::bridge { $flat_network_bridge:
|
nova::network::bridge { $flat_network_bridge:
|
||||||
ip => $flat_network_bridge_ip,
|
ip => $flat_network_bridge_ip,
|
||||||
netmask => $flat_network_bridge_netmask,
|
netmask => $flat_network_bridge_netmask,
|
||||||
|
@ -56,7 +56,10 @@ class nova::controller(
|
|||||||
flat_network_bridge_netmask => $flat_network_bridge_netmask,
|
flat_network_bridge_netmask => $flat_network_bridge_netmask,
|
||||||
}
|
}
|
||||||
|
|
||||||
class { "nova::objectstore": enabled => true }
|
class { "nova::objectstore":
|
||||||
|
enabled => true,
|
||||||
|
}
|
||||||
|
|
||||||
class { "nova::scheduler": enabled => true }
|
class { "nova::scheduler": enabled => true }
|
||||||
|
|
||||||
nova::manage::admin { $admin_user: }
|
nova::manage::admin { $admin_user: }
|
||||||
|
@ -7,8 +7,8 @@ class nova::db(
|
|||||||
$cluster_id = 'localzone'
|
$cluster_id = 'localzone'
|
||||||
) {
|
) {
|
||||||
|
|
||||||
# Create the db instance before nova-common if its installed
|
# Create the db instance before openstack-nova if its installed
|
||||||
Mysql::Db[$dbname] -> Package<| title == "nova-common" |>
|
Mysql::Db[$dbname] -> Anchor<| title == "nova-start" |>
|
||||||
Mysql::Db[$dbname] ~> Exec<| title == 'initial-db-sync' |>
|
Mysql::Db[$dbname] ~> Exec<| title == 'initial-db-sync' |>
|
||||||
|
|
||||||
# now this requires storedconfigs
|
# now this requires storedconfigs
|
||||||
|
@ -24,13 +24,23 @@ class nova(
|
|||||||
$nodaemon = false,
|
$nodaemon = false,
|
||||||
$periodic_interval = '60',
|
$periodic_interval = '60',
|
||||||
$report_interval = '10'
|
$report_interval = '10'
|
||||||
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
include nova::params
|
||||||
|
|
||||||
Nova_config<| |> {
|
Nova_config<| |> {
|
||||||
require +> Package["nova-common"],
|
require +> Package[$::nova::params::package_names],
|
||||||
before +> File['/etc/nova/nova.conf'],
|
before +> File['/etc/nova/nova.conf'],
|
||||||
notify +> Exec['post-nova_config']
|
notify +> Exec['post-nova_config']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File {
|
||||||
|
require => Package[$::nova::params::package_names],
|
||||||
|
owner => 'nova',
|
||||||
|
group => 'nova',
|
||||||
|
}
|
||||||
|
|
||||||
# TODO - why is this required?
|
# TODO - why is this required?
|
||||||
package { 'python':
|
package { 'python':
|
||||||
ensure => present,
|
ensure => present,
|
||||||
@ -41,10 +51,21 @@ class nova(
|
|||||||
}
|
}
|
||||||
|
|
||||||
class { 'nova::utilities': }
|
class { 'nova::utilities': }
|
||||||
package { ["python-nova", "nova-common", "nova-doc"]:
|
|
||||||
|
# this anchor is used to simplify the graph between nova components by
|
||||||
|
# allowing a resource to serve as a point where the configuration of nova begins
|
||||||
|
anchor { 'nova-start': }
|
||||||
|
|
||||||
|
package { ["python-nova", $::nova::params::doc_package_name]:
|
||||||
ensure => present,
|
ensure => present,
|
||||||
require => Package["python-greenlet"]
|
require => Package["python-greenlet"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
package { $::nova::params::package_names:
|
||||||
|
ensure => present,
|
||||||
|
require => [Package["python-greenlet"], Anchor['nova-start']]
|
||||||
|
}
|
||||||
|
|
||||||
group { 'nova':
|
group { 'nova':
|
||||||
ensure => present
|
ensure => present
|
||||||
}
|
}
|
||||||
@ -55,13 +76,8 @@ class nova(
|
|||||||
file { $logdir:
|
file { $logdir:
|
||||||
ensure => directory,
|
ensure => directory,
|
||||||
mode => '751',
|
mode => '751',
|
||||||
owner => 'nova',
|
|
||||||
group => 'nova',
|
|
||||||
require => Package['nova-common'],
|
|
||||||
}
|
}
|
||||||
file { '/etc/nova/nova.conf':
|
file { '/etc/nova/nova.conf':
|
||||||
owner => 'nova',
|
|
||||||
group => 'nova',
|
|
||||||
mode => '0640',
|
mode => '0640',
|
||||||
}
|
}
|
||||||
exec { "nova-db-sync":
|
exec { "nova-db-sync":
|
||||||
|
@ -9,15 +9,11 @@ class nova::network( $enabled=false ) {
|
|||||||
$service_ensure = 'stopped'
|
$service_ensure = 'stopped'
|
||||||
}
|
}
|
||||||
|
|
||||||
package { "nova-network":
|
|
||||||
ensure => present,
|
|
||||||
require => Package["python-greenlet"]
|
|
||||||
}
|
|
||||||
|
|
||||||
service { "nova-network":
|
service { "nova-network":
|
||||||
|
name => $::nova::params::network_service_name,
|
||||||
ensure => $service_ensure,
|
ensure => $service_ensure,
|
||||||
enable => $enabled,
|
enable => $enabled,
|
||||||
require => Package["nova-network"],
|
require => Package[$::nova::params::package_names],
|
||||||
before => Exec['networking-refresh'],
|
before => Exec['networking-refresh'],
|
||||||
#subscribe => File["/etc/nova/nova.conf"]
|
#subscribe => File["/etc/nova/nova.conf"]
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,9 @@ define nova::network::bridge ( $ip, $netmask = "255.255.255.0" )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
'fedora' : {
|
||||||
|
}
|
||||||
|
|
||||||
default: { fail('nova::network_bridge currently only supports Debian and Ubuntu') }
|
default: { fail('nova::network_bridge currently only supports Debian and Ubuntu') }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class nova::objectstore( $enabled=false ) {
|
class nova::objectstore( $enabled=false ) {
|
||||||
|
|
||||||
|
include nova::params
|
||||||
|
|
||||||
Exec['post-nova_config'] ~> Service['nova-objectstore']
|
Exec['post-nova_config'] ~> Service['nova-objectstore']
|
||||||
Exec['nova-db-sync'] ~> Service['nova-objectstore']
|
Exec['nova-db-sync'] ~> Service['nova-objectstore']
|
||||||
|
|
||||||
@ -9,15 +11,11 @@ class nova::objectstore( $enabled=false ) {
|
|||||||
$service_ensure = 'stopped'
|
$service_ensure = 'stopped'
|
||||||
}
|
}
|
||||||
|
|
||||||
package { "nova-objectstore":
|
|
||||||
ensure => present,
|
|
||||||
require => Package["python-greenlet"]
|
|
||||||
}
|
|
||||||
|
|
||||||
service { "nova-objectstore":
|
service { "nova-objectstore":
|
||||||
|
name => $::nova::params::objectstore_service_name,
|
||||||
ensure => $service_ensure,
|
ensure => $service_ensure,
|
||||||
enable => $enabled,
|
enable => $enabled,
|
||||||
require => Package["nova-objectstore"],
|
require => Package[$::nova::params::package_names],
|
||||||
#subscribe => File["/etc/nova/nova.conf"]
|
#subscribe => File["/etc/nova/nova.conf"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
42
manifests/params.pp
Normal file
42
manifests/params.pp
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# these parameters need to be accessed from several locations and
|
||||||
|
# should be considered to be constant
|
||||||
|
class nova::params {
|
||||||
|
|
||||||
|
case $::osfamily {
|
||||||
|
'RedHat': {
|
||||||
|
$package_names = 'openstack-nova'
|
||||||
|
$doc_package_name = 'openstack-nova-doc'
|
||||||
|
$api_service_name = 'openstack-nova-api'
|
||||||
|
$compute_service_name = 'openstack-nova-compute'
|
||||||
|
$network_service_name = 'openstack-nova-network'
|
||||||
|
$objectstore_service_name = 'openstack-nova-objectstore'
|
||||||
|
$scheduler_service_name = 'openstack-nova-scheduler'
|
||||||
|
$libvirt_package_name = 'libvirt'
|
||||||
|
$libvirt_service_name = 'libvirtd'
|
||||||
|
$special_service_provider = 'init'
|
||||||
|
}
|
||||||
|
'Debian': {
|
||||||
|
$package_names = ['nova-common',
|
||||||
|
'nova-api',
|
||||||
|
'nova-compute',
|
||||||
|
'nova-network',
|
||||||
|
'nova-objectstore',
|
||||||
|
'nova-scheduler'
|
||||||
|
]
|
||||||
|
$doc_package_name = 'nova-doc'
|
||||||
|
$api_service_name = 'nova-api'
|
||||||
|
$compute_service_name = 'nova-compute'
|
||||||
|
$network_service_name = 'nova-network'
|
||||||
|
$objectstore_service_name = 'nova-objectstore'
|
||||||
|
$scheduler_service_name = 'nova-scheduler'
|
||||||
|
$libvirt_package_name = 'libvirt-bin'
|
||||||
|
$libvirt_service_name = 'libvirt-bin'
|
||||||
|
# some of the services need to be started form the special upstart provider
|
||||||
|
$special_service_provider = 'upstart'
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}, module ${module_name} only support osfamily RedHat and Debian")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -11,7 +11,7 @@ class nova::rabbitmq(
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
# only configure nova after the queue is up
|
# only configure nova after the queue is up
|
||||||
Class['rabbitmq::service'] -> Package<| title == 'nova-common' |>
|
Class['rabbitmq::service'] -> Anchor<| title == 'nova-start' |>
|
||||||
|
|
||||||
# work around hostname bug, LP #653405
|
# work around hostname bug, LP #653405
|
||||||
host { $hostname:
|
host { $hostname:
|
||||||
@ -42,7 +42,7 @@ class nova::rabbitmq(
|
|||||||
write_permission => '.*',
|
write_permission => '.*',
|
||||||
read_permission => '.*',
|
read_permission => '.*',
|
||||||
provider => 'rabbitmqctl',
|
provider => 'rabbitmqctl',
|
||||||
}->Package<| title == 'nova-common' |>
|
}->Anchor<| title == 'nova-start' |>
|
||||||
}
|
}
|
||||||
class { 'rabbitmq::server':
|
class { 'rabbitmq::server':
|
||||||
port => $port,
|
port => $port,
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class nova::scheduler( $enabled ) {
|
class nova::scheduler( $enabled ) {
|
||||||
|
|
||||||
|
include nova::params
|
||||||
|
|
||||||
Exec['post-nova_config'] ~> Service['nova-scheduler']
|
Exec['post-nova_config'] ~> Service['nova-scheduler']
|
||||||
Exec['nova-db-sync'] -> Service['nova-scheduler']
|
Exec['nova-db-sync'] -> Service['nova-scheduler']
|
||||||
|
|
||||||
@ -9,15 +11,11 @@ class nova::scheduler( $enabled ) {
|
|||||||
$service_ensure = 'stopped'
|
$service_ensure = 'stopped'
|
||||||
}
|
}
|
||||||
|
|
||||||
package { "nova-scheduler":
|
|
||||||
ensure => present,
|
|
||||||
require => Package["python-greenlet"]
|
|
||||||
}
|
|
||||||
|
|
||||||
service { "nova-scheduler":
|
service { "nova-scheduler":
|
||||||
|
name => $::nova::params::scheduler_service_name,
|
||||||
ensure => $service_ensure,
|
ensure => $service_ensure,
|
||||||
enable => $enabled,
|
enable => $enabled,
|
||||||
require => Package["nova-scheduler"],
|
require => Package[$::nova::params::package_names],
|
||||||
#subscribe => File["/etc/nova/nova.conf"]
|
#subscribe => File["/etc/nova/nova.conf"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user