![Rabi Mishra](/assets/img/avatar_default.png)
This change adds some outputs based on path based nested attribute access using `outputs_list` and `outputs`. Change-Id: I3ab0c0ec1156fbb1a7ebbf51f520d584faa726b7
107 lines
3.5 KiB
YAML
107 lines
3.5 KiB
YAML
heat_template_version: 2014-10-16
|
|
|
|
description: >
|
|
This is a very simple template that illustrates the basic features
|
|
of OS::Heat::AutoScalingGroup when the scaled resource is an
|
|
OS::Nova::Server. By virtue of its simplicity this example should
|
|
be usable in many contexts. In particular, this example does not
|
|
require Neutron nor a load balancer nor any particular support for
|
|
software in the VMs. In fact, the VMs in this example do not
|
|
actually do anything. This example does no automatic scaling, but
|
|
does discuss manual scaling.
|
|
For a more complete example, see autoscaling.yaml.
|
|
|
|
parameters:
|
|
key_name:
|
|
type: string
|
|
description: Name of an existing key pair to use for the instances
|
|
constraints:
|
|
- custom_constraint: nova.keypair
|
|
description: Must name a public key (pair) known to Nova
|
|
flavor:
|
|
type: string
|
|
description: Flavor for the instances to be created
|
|
default: m1.small
|
|
constraints:
|
|
- custom_constraint: nova.flavor
|
|
description: Must be a flavor known to Nova
|
|
image:
|
|
type: string
|
|
description: >
|
|
Name or ID of the image to use for the instances.
|
|
You can get the default from
|
|
http://cloud.fedoraproject.org/fedora-20.x86_64.qcow2
|
|
There is also
|
|
http://cloud.fedoraproject.org/fedora-20.i386.qcow2
|
|
Any image should work since this template
|
|
does not ask the VMs to do anything.
|
|
constraints:
|
|
- custom_constraint: glance.image
|
|
description: Must identify an image known to Glance
|
|
network:
|
|
type: string
|
|
description: The network for the VM
|
|
default: private
|
|
|
|
resources:
|
|
asg:
|
|
type: OS::Heat::AutoScalingGroup
|
|
properties:
|
|
resource:
|
|
type: OS::Nova::Server
|
|
properties:
|
|
key_name: { get_param: key_name }
|
|
image: { get_param: image }
|
|
flavor: { get_param: flavor }
|
|
networks: [{network: {get_param: network} }]
|
|
min_size: 1
|
|
desired_capacity: 3
|
|
max_size: 10
|
|
|
|
scale_up_policy:
|
|
type: OS::Heat::ScalingPolicy
|
|
properties:
|
|
adjustment_type: change_in_capacity
|
|
auto_scaling_group_id: {get_resource: asg}
|
|
cooldown: 60
|
|
scaling_adjustment: 1
|
|
|
|
scale_down_policy:
|
|
type: OS::Heat::ScalingPolicy
|
|
properties:
|
|
adjustment_type: change_in_capacity
|
|
auto_scaling_group_id: {get_resource: asg}
|
|
cooldown: 60
|
|
scaling_adjustment: '-1'
|
|
|
|
outputs:
|
|
scale_up_url:
|
|
description: >
|
|
This URL is the webhook to scale up the group. You can invoke
|
|
the scale-up operation by doing an HTTP POST to this URL; no
|
|
body nor extra headers are needed.
|
|
value: {get_attr: [scale_up_policy, alarm_url]}
|
|
scale_dn_url:
|
|
description: >
|
|
This URL is the webhook to scale down the group. You can invoke
|
|
the scale-down operation by doing an HTTP POST to this URL; no
|
|
body nor extra headers are needed.
|
|
value: {get_attr: [scale_down_policy, alarm_url]}
|
|
asg_size:
|
|
description: >
|
|
This is the current size of the auto scaling group.
|
|
value: {get_attr: [asg, current_size]}
|
|
server_list:
|
|
description: >
|
|
This is a list of server names that are part of the group.
|
|
value: {get_attr: [asg, outputs_list, name]}
|
|
networks:
|
|
description: >
|
|
This is a map of server resources and their networks.
|
|
value: {get_attr: [asg, outputs, networks]}
|
|
server_ips:
|
|
description: >
|
|
This is a list of first ip addresses of the servers in the group
|
|
for a specified network.
|
|
value: {get_attr: [asg, outputs_list, networks, {get_param: network}, 0]}
|