| #Template for instances. |
| heat_template_version: 2017-02-24 |
| description: "template instantiating and configuring a single instance (any)" |
| parameters: |
| instance_name: |
| type: string |
| network: |
| type: string |
| subnet: |
| type: string |
| image_name: |
| type: string |
| flavor_name: |
| type: string |
| key_name: |
| type: string |
| notify_command: |
| type: string |
| security_group: |
| type: string |
| scheduler_hints: |
| type: json |
| default: {} |
| #Resources. |
| resources: |
| #This is the network port to attach instance to. |
| port: |
| type: OS::Neutron::Port |
| properties: |
| network: { get_param: network } |
| security_groups: [ { get_param: security_group } ] |
| fixed_ips: |
| - { subnet: { get_param: subnet }} |
| #cloudinit configuration stuff. |
| config: |
| type: OS::Heat::SoftwareConfig |
| properties: |
| config: |
| str_replace_strict: |
| template: { get_file: config.yaml } |
| params: |
| "%{NOTIFY_COMMAND}": { get_param: notify_command } |
| #Actual instance to create. |
| instance: |
| type: OS::Nova::Server |
| properties: |
| name: { get_param: instance_name } |
| image: { get_param: image_name } |
| flavor: { get_param: flavor_name } |
| key_name: { get_param: key_name } |
| networks: |
| - port: { get_resource: port } |
| user_data_format: SOFTWARE_CONFIG |
| user_data: { get_resource: config } |
| scheduler_hints: { get_param: scheduler_hints } |
| outputs: |
| OS::stack_id: |
| value: { get_resource: instance } |
| port_id: |
| value: { get_resource: port } |
| ip: |
| value: { get_attr: ["port", "fixed_ips", 0, "ip_address"] } |