--- /dev/null
+### Cloud Controller:
+
+# General Neutron stuff
+# Configures everything in neutron.conf
+class { 'neutron':
+ verbose => true,
+ allow_overlapping_ips => true,
+ rabbit_password => 'password',
+ rabbit_user => 'guest',
+ rabbit_host => 'localhost',
+ service_plugins => ['metering']
+}
+
+# The API server talks to keystone for authorisation
+class { 'neutron::server':
+ keystone_password => 'password',
+ connection => 'mysql://neutron:password@192.168.1.1/neutron',
+}
+
+# Configure nova notifications system
+class { 'neutron::server::notifications':
+ nova_admin_tenant_name => 'admin',
+ nova_admin_password => 'secrete',
+}
+
+# Various agents
+class { 'neutron::agents::dhcp': }
+class { 'neutron::agents::l3': }
+class { 'neutron::agents::lbaas': }
+class { 'neutron::agents::vpnaas': }
+class { 'neutron::agents::metering': }
+
+# This plugin configures Neutron for OVS on the server
+# Agent
+class { 'neutron::agents::ovs':
+ local_ip => '192.168.1.1',
+ enable_tunneling => true,
+}
+
+# Plugin
+class { 'neutron::plugins::ovs':
+ tenant_network_type => 'gre',
+}
+
+# ml2 plugin with vxlan as ml2 driver and ovs as mechanism driver
+class { 'neutron::plugins::ml2':
+ type_drivers => ['vxlan'],
+ tenant_network_types => ['vxlan'],
+ vxlan_group => '239.1.1.1',
+ mechanism_drivers => ['openvswitch'],
+ vni_ranges => ['0:300']
+}
+
+### Compute Nodes:
+# Generally, any machine with a neutron element running on it talks
+# over Rabbit and needs to know if overlapping IPs (namespaces) are in use
+class { 'neutron':
+ allow_overlapping_ips => true,
+ rabbit_password => 'password',
+ rabbit_user => 'guest',
+ rabbit_host => 'localhost',
+}
+
+# The agent/plugin combo also needs installed on clients
+# Agent
+class { 'neutron::agents::ovs':
+ local_ip => '192.168.1.11',
+ enable_tunneling => true,
+}
+
+# Plugin
+class { 'neutron::plugins::ovs':
+ tenant_network_type => 'gre',
+}