diff options
Diffstat (limited to 'tools/os_deploy_tgen/templates/l3.hot')
-rw-r--r-- | tools/os_deploy_tgen/templates/l3.hot | 125 |
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 %} |