aboutsummaryrefslogtreecommitdiffstats
path: root/tools/os_deploy_tgen/templates/l3.hot
diff options
context:
space:
mode:
Diffstat (limited to 'tools/os_deploy_tgen/templates/l3.hot')
-rw-r--r--tools/os_deploy_tgen/templates/l3.hot125
1 files changed, 125 insertions, 0 deletions
diff --git a/tools/os_deploy_tgen/templates/l3.hot b/tools/os_deploy_tgen/templates/l3.hot
new file mode 100644
index 00000000..4a5ea02c
--- /dev/null
+++ b/tools/os_deploy_tgen/templates/l3.hot
@@ -0,0 +1,125 @@
+heat_template_version: 2013-05-23
+
+description:
+ This Heat template creates a pair of networks plugged into the same router.
+ Master instances and slave instances are connected into different networks.
+
+parameters:
+ image:
+ type: string
+ description: Name of image to use for servers
+ flavor:
+ type: string
+ description: Flavor to use for servers
+ external_net:
+ type: string
+ description: ID or name of external network for which floating IP addresses will be allocated
+# server_endpoint:
+# type: string
+# description: Server endpoint address
+ dns_nameservers:
+ type: comma_delimited_list
+ description: DNS nameservers for the subnets
+
+resources:
+ east_private_net:
+ type: OS::Neutron::Net
+ properties:
+ name: {{ unique }}_net_east
+
+ east_private_subnet:
+ type: OS::Neutron::Subnet
+ properties:
+ network_id: { get_resource: east_private_net }
+ cidr: 10.1.0.0/16
+ dns_nameservers: { get_param: dns_nameservers }
+
+ router:
+ type: OS::Neutron::Router
+ properties:
+ external_gateway_info:
+ network: { get_param: external_net }
+
+ router_interface:
+ type: OS::Neutron::RouterInterface
+ properties:
+ router_id: { get_resource: router }
+ subnet_id: { get_resource: east_private_subnet }
+
+ west_private_net:
+ type: OS::Neutron::Net
+ properties:
+ name: {{ unique }}_net_west
+
+ west_private_subnet:
+ type: OS::Neutron::Subnet
+ properties:
+ network_id: { get_resource: west_private_net }
+ cidr: 10.2.0.0/16
+ dns_nameservers: { get_param: dns_nameservers }
+
+ router_interface_2:
+ type: OS::Neutron::RouterInterface
+ properties:
+ router_id: { get_resource: router }
+ subnet_id: { get_resource: west_private_subnet }
+
+ server_security_group:
+ type: OS::Neutron::SecurityGroup
+ properties:
+ rules: [
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: tcp,
+ port_range_min: 1,
+ port_range_max: 65535},
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: udp,
+ port_range_min: 1,
+ port_range_max: 65535},
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: icmp}]
+
+{% for agent in agents.values() %}
+
+ {{ agent.id }}:
+ type: OS::Nova::Server
+ properties:
+ name: {{ agent.id }}
+ image: { get_param: image }
+ flavor: { get_param: flavor }
+ availability_zone: "{{ agent.availability_zone }}"
+ networks:
+ - port: { get_resource: {{ agent.id }}_port }
+
+{% if agent.mode == 'master' %}
+ {{ agent.id }}_port:
+ type: OS::Neutron::Port
+ properties:
+ network_id: { get_resource: east_private_net }
+ fixed_ips:
+ - subnet_id: { get_resource: east_private_subnet }
+ security_groups: [{ get_resource: server_security_group }]
+{% else %}
+ {{ agent.id }}_port:
+ type: OS::Neutron::Port
+ properties:
+ network_id: { get_resource: west_private_net }
+ fixed_ips:
+ - subnet_id: { get_resource: west_private_subnet }
+ security_groups: [{ get_resource: server_security_group }]
+{% endif %}
+
+{% endfor %}
+
+outputs:
+{% for agent in agents.values() %}
+ {{ agent.id }}_instance_name:
+ value: { get_attr: [ {{ agent.id }}, instance_name ] }
+{% if agent.mode == 'master' %}
+ {{ agent.id }}_ip:
+ value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [east_private_net, name] }, 0 ] }
+{% else %}
+ {{ agent.id }}_ip:
+ value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [west_private_net, name] }, 0 ] }
+{% endif %}
+{% endfor %}