From 190beffd6c9adcd8421c1f5bb48455e843fae1b5 Mon Sep 17 00:00:00 2001 From: Bogdan Dobrelya Date: Tue, 4 Aug 2015 12:13:17 +0200 Subject: [PATCH] Add neutron ovs plugin resource * Add compostion layer for OVS plugin with GRE * Fix neutron tags, use_ssl input Signed-off-by: Bogdan Dobrelya --- example-puppet.py | 9 +++- .../neutron_plugins_ovs_puppet/README.md | 15 ++++++ .../actions/remove.pp | 10 ++++ .../neutron_plugins_ovs_puppet/actions/run.pp | 32 +++++++++++++ .../neutron_plugins_ovs_puppet/meta.yaml | 48 +++++++++++++++++++ resources/neutron_puppet/meta.yaml | 6 +-- resources/neutron_server_puppet/meta.yaml | 2 +- 7 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 resources/neutron_plugins_ovs_puppet/README.md create mode 100644 resources/neutron_plugins_ovs_puppet/actions/remove.pp create mode 100644 resources/neutron_plugins_ovs_puppet/actions/run.pp create mode 100644 resources/neutron_plugins_ovs_puppet/meta.yaml diff --git a/example-puppet.py b/example-puppet.py index 7989d006..ecdce96f 100644 --- a/example-puppet.py +++ b/example-puppet.py @@ -158,7 +158,7 @@ def setup_resources(): signals.connect(admin_user, openrc, {'user_name': 'user_name','user_password':'password', 'tenant_name': 'tenant'}) # NEUTRON - # Deploy chain neutron -> neutron_server -> ( agents & plugins ) + # Deploy chain neutron -> (plugins) -> neutron_server -> ( agents ) neutron_puppet = vr.create('neutron_puppet', 'resources/neutron_puppet', {})[0] signals.connect(node1, neutron_puppet) signals.connect(rabbitmq_service1, neutron_puppet, { @@ -171,6 +171,12 @@ def setup_resources(): signals.connect(openstack_vhost, neutron_puppet, { 'vhost_name': 'rabbit_virtual_host'}) + # NEUTRON OVS PLUGIN WITH GRE + neutron_plugins_ovs = vr.create('neutron_plugins_ovs_puppet', 'resources/neutron_plugins_ovs_puppet', { + 'tenant_network_type': 'gre', + })[0] + signals.connect(node1, neutron_plugins_ovs) + # NEUTRON API (SERVER) neutron_server_puppet = vr.create('neutron_server_puppet', 'resources/neutron_server_puppet', { 'sync_db': True, @@ -537,6 +543,7 @@ resources_to_run = [ 'neutron_keystone_role', 'neutron_puppet', 'neutron_keystone_service_endpoint', + 'neutron_plugins_ovs', 'neutron_server_puppet', 'cinder_db', diff --git a/resources/neutron_plugins_ovs_puppet/README.md b/resources/neutron_plugins_ovs_puppet/README.md new file mode 100644 index 00000000..7601306e --- /dev/null +++ b/resources/neutron_plugins_ovs_puppet/README.md @@ -0,0 +1,15 @@ +# Neutron OVS plugin puppet resource + +Configure the neutron server to use the OVS plugin. +This configures the plugin for the API server, but does nothing +about configuring the agents that must also run and share a config +file with the OVS plugin if both are on the same machine. + +NB: don't need tunnel ID range when using VLANs, +*but* you do need the network vlan range regardless of type, +because the list of networks there is still important +even if the ranges aren't specified +if type is vlan or flat, a default of physnet1:1000:2000 is used +otherwise this will not be set by default. + +source https://github.com/openstack/puppet-neutron/blob/5.1.0/manifests/plugins/ovs.pp \ No newline at end of file diff --git a/resources/neutron_plugins_ovs_puppet/actions/remove.pp b/resources/neutron_plugins_ovs_puppet/actions/remove.pp new file mode 100644 index 00000000..185c9531 --- /dev/null +++ b/resources/neutron_plugins_ovs_puppet/actions/remove.pp @@ -0,0 +1,10 @@ +class { 'neutron::plugins::ovs': + package_ensure => 'absent', +} + +include neutron::params + +package { 'neutron': + ensure => 'absent', + name => $::neutron::params::package_name, +} \ No newline at end of file diff --git a/resources/neutron_plugins_ovs_puppet/actions/run.pp b/resources/neutron_plugins_ovs_puppet/actions/run.pp new file mode 100644 index 00000000..fdbd38cb --- /dev/null +++ b/resources/neutron_plugins_ovs_puppet/actions/run.pp @@ -0,0 +1,32 @@ +$resource = hiera($::resource_name) + +$ip = $resource['input']['ip']['value'] + +$package_ensure = $resource['input']['package_ensure']['value'] +$sql_connection = $resource['input']['sql_connection']['value'] +$sql_max_retries = $resource['input']['sql_max_retries']['value'] +$sql_idle_timeout = $resource['input']['sql_idle_timeout']['value'] +$reconnect_interval = $resource['input']['reconnect_interval']['value'] +$tenant_network_type = $resource['input']['tenant_network_type']['value'] +$network_vlan_ranges = $resource['input']['network_vlan_ranges']['value'] +$tunnel_id_ranges = $resource['input']['tunnel_id_ranges']['value'] +$vxlan_udp_port = $resource['input']['vxlan_udp_port']['value'] + +class { 'neutron::plugins::ovs': + package_ensure => $package_ensure, + sql_connection => $sql_connection, + sql_max_retries => $sql_max_retries, + sql_idle_timeout => $sql_idle_timeout, + reconnect_interval => $reconnect_interval, + tenant_network_type => $tenant_network_type, + network_vlan_ranges => $network_vlan_ranges, + tunnel_id_ranges => $tunnel_id_ranges, + vxlan_udp_port => $vxlan_udp_port, +} + +include neutron::params + +package { 'neutron': + ensure => $package_ensure, + name => $::neutron::params::package_name, +} \ No newline at end of file diff --git a/resources/neutron_plugins_ovs_puppet/meta.yaml b/resources/neutron_plugins_ovs_puppet/meta.yaml new file mode 100644 index 00000000..ece3fdf5 --- /dev/null +++ b/resources/neutron_plugins_ovs_puppet/meta.yaml @@ -0,0 +1,48 @@ +handler: puppet +id: 'neutron_plugins_ovs_puppet' +input: + ip: + schema: str! + value: '' + ssh_key: + schema: str! + value: '' + ssh_user: + schema: str! + value: '' + + package_ensure: + schema: str + value: 'present' + sql_connection: + schema: str + value: '' + sql_max_retries: + schema: str + value: '' + sql_idle_timeout: + schema: str + value: '' + reconnect_interval: + schema: str + value: '' + tenant_network_type: + schema: str + value: 'vlan' + network_vlan_ranges: + schema: str + value: '' + tunnel_id_ranges: + schema: str + value: '1:1000' + vxlan_udp_port: + schema: int + value: 4789 + + git: + schema: {repository: str!, branch: str!} + value: {repository: 'https://github.com/openstack/puppet-neutron', branch: '5.1.0'} + +puppet_module: 'neutron' +tags: [resource/neutron, resource/neutron_plugins_ovs] +version: 1.0.0 diff --git a/resources/neutron_puppet/meta.yaml b/resources/neutron_puppet/meta.yaml index 28d7921c..79d3b0ad 100644 --- a/resources/neutron_puppet/meta.yaml +++ b/resources/neutron_puppet/meta.yaml @@ -156,8 +156,8 @@ input: schema: int value: 0 use_ssl: - schema: str - value: '' + schema: bool + value: false cert_file: schema: str value: @@ -185,5 +185,5 @@ input: value: {repository: 'https://github.com/openstack/puppet-neutron', branch: '5.1.0'} puppet_module: 'neutron' -tags: [] +tags: [resource/neutron] version: 1.0.0 diff --git a/resources/neutron_server_puppet/meta.yaml b/resources/neutron_server_puppet/meta.yaml index 3779a2ff..29cc844c 100644 --- a/resources/neutron_server_puppet/meta.yaml +++ b/resources/neutron_server_puppet/meta.yaml @@ -147,5 +147,5 @@ input: value: {repository: 'https://github.com/openstack/puppet-neutron', branch: '5.1.0'} puppet_module: 'neutron' -tags: [] +tags: [resource/neutron, resource/neutron_service, resource/neutron_server, resource/neutron_api] version: 1.0.0