heat_template_version: 2013-05-23 description: This Heat template creates a new Neutron network, a router to the external network and plugs instances into this new network. All instances are located in the same L2 domain. 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 # server_endpoint: # type: string # description: Server endpoint address dns_nameservers: type: comma_delimited_list description: DNS nameservers for the subnet resources: private_net: type: OS::Neutron::Net properties: name: {{ unique }}_net private_subnet: type: OS::Neutron::Subnet properties: network_id: { get_resource: private_net } cidr: 10.0.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: 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 } {{ agent.id }}_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } security_groups: [{ get_resource: server_security_group }] {% endfor %} outputs: {% for agent in agents.values() %} {{ agent.id }}_instance_name: value: { get_attr: [ {{ agent.id }}, instance_name ] } {{ agent.id }}_ip: value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [private_net, name] }, 0 ] } {% endfor %}