$ cat <<EOF > $HOME/templates/autoscaling/vnf/template.yaml
heat_template_version: wallaby
description: Example auto scale group, policy and alarm
resources:
scaleup_group:
type: OS::Heat::AutoScalingGroup
properties:
max_size: 3
min_size: 1
#desired_capacity: 1
resource:
type: OS::Nova::Server::VNF
properties:
metadata: {"metering.server_group": {get_param: "OS::stack_id"}}
scaleup_policy:
type: OS::Heat::ScalingPolicy
properties:
adjustment_type: change_in_capacity
auto_scaling_group_id: { get_resource: scaleup_group }
cooldown: 60
scaling_adjustment: 1
scaledown_policy:
type: OS::Heat::ScalingPolicy
properties:
adjustment_type: change_in_capacity
auto_scaling_group_id: { get_resource: scaleup_group }
cooldown: 60
scaling_adjustment: -1
cpu_alarm_high:
type: OS::Aodh::GnocchiAggregationByResourcesAlarm
properties:
description: Scale up instance if CPU > 50%
metric: cpu
aggregation_method: rate:mean
granularity: 60
evaluation_periods: 3
threshold: 60000000000.0
resource_type: instance
comparison_operator: gt
alarm_actions:
- str_replace:
template: trust+url
params:
url: {get_attr: [scaleup_policy, signal_url]}
query:
list_join:
- ''
- - {'=': {server_group: {get_param: "OS::stack_id"}}}
cpu_alarm_low:
type: OS::Aodh::GnocchiAggregationByResourcesAlarm
properties:
description: Scale down instance if CPU < 20%
metric: cpu
aggregation_method: rate:mean
granularity: 60
evaluation_periods: 3
threshold: 24000000000.0
resource_type: instance
comparison_operator: lt
alarm_actions:
- str_replace:
template: trust+url
params:
url: {get_attr: [scaledown_policy, signal_url]}
query:
list_join:
- ''
- - {'=': {server_group: {get_param: "OS::stack_id"}}}
outputs:
scaleup_policy_signal_url:
value: {get_attr: [scaleup_policy, alarm_url]}
scaledown_policy_signal_url:
value: {get_attr: [scaledown_policy, alarm_url]}
EOF
$ cat <<EOF > $HOME/templates/autoscaling/vnf/template.yaml
heat_template_version: wallaby
description: Example auto scale group, policy and alarm
resources:
scaleup_group:
type: OS::Heat::AutoScalingGroup
properties:
max_size: 3
min_size: 1
resource:
type: OS::Nova::Server::VNF
properties:
metadata: {"metering.server_group": {get_param: "OS::stack_id"}}
scaleup_policy:
type: OS::Heat::ScalingPolicy
properties:
adjustment_type: change_in_capacity
auto_scaling_group_id: { get_resource: scaleup_group }
cooldown: 60
scaling_adjustment: 1
scaledown_policy:
type: OS::Heat::ScalingPolicy
properties:
adjustment_type: change_in_capacity
auto_scaling_group_id: { get_resource: scaleup_group }
cooldown: 60
scaling_adjustment: -1
cpu_alarm_high:
type: OS::Aodh::GnocchiAggregationByResourcesAlarm
properties:
description: Scale up instance if CPU > 50%
metric: cpu
aggregation_method: rate:mean
granularity: 60
evaluation_periods: 3
threshold: 60000000000.0
resource_type: instance
comparison_operator: gt
alarm_actions:
- str_replace:
template: trust+url
params:
url: {get_attr: [scaleup_policy, signal_url]}
query:
list_join:
- ''
- - {'=': {server_group: {get_param: "OS::stack_id"}}}
cpu_alarm_low:
type: OS::Aodh::GnocchiAggregationByResourcesAlarm
properties:
description: Scale down instance if CPU < 20%
metric: cpu
aggregation_method: rate:mean
granularity: 60
evaluation_periods: 3
threshold: 24000000000.0
resource_type: instance
comparison_operator: lt
alarm_actions:
- str_replace:
template: trust+url
params:
url: {get_attr: [scaledown_policy, signal_url]}
query:
list_join:
- ''
- - {'=': {server_group: {get_param: "OS::stack_id"}}}
outputs:
scaleup_policy_signal_url:
value: {get_attr: [scaleup_policy, alarm_url]}
scaledown_policy_signal_url:
value: {get_attr: [scaledown_policy, alarm_url]}
EOF
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow