diff --git a/example-puppet.py b/example-puppet.py index e551eeb3..8bdaf645 100755 --- a/example-puppet.py +++ b/example-puppet.py @@ -448,6 +448,14 @@ def setup_resources(): signals.connect(node1, nova_conductor_puppet) signals.connect(nova_puppet, nova_conductor_puppet) + # NOVA SCHEDULER + # NOTE(bogdando) Generic service is used. Package and service names for Ubuntu case + # come from https://github.com/openstack/puppet-nova/blob/5.1.0/manifests/params.pp + nova_scheduler_puppet = vr.create('nova_scheduler_puppet', 'resources/nova_generic_service_puppet', { + 'title' : 'scheduler', 'package_name': 'nova-scheduler', 'service_name': 'nova-scheduler', + })[0] + signals.connect(node1, nova_scheduler_puppet) + # NOVA COMPUTE # Deploy chain (nova, node_networking(TODO)) -> (nova_compute_libvirt, nova_neutron) -> nova_compute nova_compute_puppet = vr.create('nova_compute_puppet', 'resources/nova_compute_puppet', {})[0] @@ -634,6 +642,7 @@ resources_to_run = [ 'nova_keystone_service_endpoint', 'nova_api_puppet', 'nova_conductor_puppet', + 'nova_scheduler_puppet', 'glance_db', 'glance_db_user', diff --git a/resources/nova_generic_service_puppet/README.md b/resources/nova_generic_service_puppet/README.md new file mode 100644 index 00000000..900f686e --- /dev/null +++ b/resources/nova_generic_service_puppet/README.md @@ -0,0 +1,5 @@ +# Nova generic service resource for puppet handler + +Setup and configure the Nova generic services. + +source https://github.com/openstack/puppet-nova/blob/5.1.0/manifests/generic_service.pp diff --git a/resources/nova_generic_service_puppet/actions/remove.pp b/resources/nova_generic_service_puppet/actions/remove.pp new file mode 100644 index 00000000..964f79c9 --- /dev/null +++ b/resources/nova_generic_service_puppet/actions/remove.pp @@ -0,0 +1,21 @@ +$service_title = $resource['input']['title']['value'] +$package_name = $resource['input']['package_name']['value'] +$service_name = $resource['input']['service_name']['value'] + +exec { 'post-nova_config': + command => '/bin/echo "Nova config has changed"', +} + +nova::generic_service { $service_title: + ensure_package => 'absent', + enabled => false, + package_name => $package_name, + service_name => $service_name, +} + +include nova::params + +package { 'nova-common': + name => $nova::params::common_package_name, + ensure => 'absent', +} \ No newline at end of file diff --git a/resources/nova_generic_service_puppet/actions/run.pp b/resources/nova_generic_service_puppet/actions/run.pp new file mode 100644 index 00000000..9e696f4d --- /dev/null +++ b/resources/nova_generic_service_puppet/actions/run.pp @@ -0,0 +1,25 @@ +$resource = hiera($::resource_name) + +$service_title = $resource['input']['title']['value'] +$package_name = $resource['input']['package_name']['value'] +$service_name = $resource['input']['service_name']['value'] +$ensure_package = $resource['input']['ensure_package']['value'] + +exec { 'post-nova_config': + command => '/bin/echo "Nova config has changed"', +} + +include nova::params + +package { 'nova-common': + name => $nova::params::common_package_name, + ensure => $ensure_package, +} + +nova::generic_service { $service_title: + enabled => true, + manage_service => true, + package_name => $package_name, + service_name => $service_name, + ensure_package => $ensure_package, +} \ No newline at end of file diff --git a/resources/nova_generic_service_puppet/meta.yaml b/resources/nova_generic_service_puppet/meta.yaml new file mode 100644 index 00000000..90b3f55f --- /dev/null +++ b/resources/nova_generic_service_puppet/meta.yaml @@ -0,0 +1,33 @@ +id: nova_generic_service +handler: puppet +puppet_module: nova +version: 1.0.0 +input: + title: + schema: str! + value: + package_name: + schema: str! + value: + service_name: + schema: str! + value: + ensure_package: + schema: str + value: 'present' + + git: + schema: {repository: str!, branch: str!} + value: {repository: 'https://github.com/openstack/puppet-nova', branch: '5.1.0'} + + ip: + schema: str! + value: + ssh_key: + schema: str! + value: + ssh_user: + schema: str! + value: + +tags: [resource/nova_generic_service, resources/nova]