summaryrefslogtreecommitdiffstats
path: root/asdc-controller/src/test/resources/resource-examples/autoscaling.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'asdc-controller/src/test/resources/resource-examples/autoscaling.yaml')
-rw-r--r--asdc-controller/src/test/resources/resource-examples/autoscaling.yaml216
1 files changed, 216 insertions, 0 deletions
diff --git a/asdc-controller/src/test/resources/resource-examples/autoscaling.yaml b/asdc-controller/src/test/resources/resource-examples/autoscaling.yaml
new file mode 100644
index 0000000000..88eabb736e
--- /dev/null
+++ b/asdc-controller/src/test/resources/resource-examples/autoscaling.yaml
@@ -0,0 +1,216 @@
+heat_template_version: 2013-05-23
+description: AutoScaling Wordpress
+parameters:
+ image:
+ type: string
+ description: Image used for servers
+ key:
+ type: string
+ description: SSH key to connect to the servers
+ flavor:
+ type: string
+ description: flavor used by the web servers
+ database_flavor:
+ type: string
+ description: flavor used by the db server
+ network:
+ type: string
+ description: Network used by the server
+ subnet_id:
+ type: string
+ description: subnet on which the load balancer will be located
+ database_name:
+ type: string
+ description: Name of the wordpress DB
+ default: wordpress
+ database_user:
+ type: string
+ description: Name of the wordpress user
+ default: wordpress
+ external_network_id:
+ type: string
+ description: UUID of a Neutron external network
+resources:
+ database_password:
+ type: OS::Heat::RandomString
+ database_root_password:
+ type: OS::Heat::RandomString
+ db:
+ type: OS::Nova::Server
+ properties:
+ flavor: {get_param: database_flavor}
+ image: {get_param: image}
+ key_name: {get_param: key}
+ networks: [{network: {get_param: network} }]
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ template: |
+ #!/bin/bash -v
+ yum -y install mariadb mariadb-server
+ systemctl enable mariadb.service
+ systemctl start mariadb.service
+ mysqladmin -u root password $db_rootpassword
+ cat << EOF | mysql -u root --password=$db_rootpassword
+ CREATE DATABASE $db_name;
+ GRANT ALL PRIVILEGES ON $db_name.* TO "$db_user"@"%"
+ IDENTIFIED BY "$db_password";
+ FLUSH PRIVILEGES;
+ EXIT
+ EOF
+ params:
+ $db_rootpassword: {get_attr: [database_root_password, value]}
+ $db_name: {get_param: database_name}
+ $db_user: {get_param: database_user}
+ $db_password: {get_attr: [database_password, value]}
+ asg:
+ type: OS::Heat::AutoScalingGroup
+ properties:
+ min_size: 1
+ max_size: 3
+ resource:
+ type: lb_server.yaml
+ properties:
+ flavor: {get_param: flavor}
+ image: {get_param: image}
+ key_name: {get_param: key}
+ network: {get_param: network}
+ pool_id: {get_resource: pool}
+ metadata: {"metering.stack": {get_param: "OS::stack_id"}}
+ user_data:
+ str_replace:
+ template: |
+ #!/bin/bash -v
+ yum -y install httpd wordpress
+ systemctl enable httpd.service
+ systemctl start httpd.service
+ setsebool -P httpd_can_network_connect_db=1
+
+ sed -i "/Deny from All/d" /etc/httpd/conf.d/wordpress.conf
+ sed -i "s/Require local/Require all granted/" /etc/httpd/conf.d/wordpress.conf
+ sed -i s/database_name_here/$db_name/ /etc/wordpress/wp-config.php
+ sed -i s/username_here/$db_user/ /etc/wordpress/wp-config.php
+ sed -i s/password_here/$db_password/ /etc/wordpress/wp-config.php
+ sed -i s/localhost/$db_host/ /etc/wordpress/wp-config.php
+
+ systemctl restart httpd.service
+ params:
+ $db_name: {get_param: database_name}
+ $db_user: {get_param: database_user}
+ $db_password: {get_attr: [database_password, value]}
+ $db_host: {get_attr: [db, first_address]}
+ web_server_scaleup_policy:
+ type: OS::Heat::ScalingPolicy
+ properties:
+ adjustment_type: change_in_capacity
+ auto_scaling_group_id: {get_resource: asg}
+ cooldown: 60
+ scaling_adjustment: 1
+ web_server_scaledown_policy:
+ type: OS::Heat::ScalingPolicy
+ properties:
+ adjustment_type: change_in_capacity
+ auto_scaling_group_id: {get_resource: asg}
+ cooldown: 60
+ scaling_adjustment: -1
+ cpu_alarm_high:
+ type: OS::Ceilometer::Alarm
+ properties:
+ description: Scale-up if the average CPU > 50% for 1 minute
+ meter_name: cpu_util
+ statistic: avg
+ period: 60
+ evaluation_periods: 1
+ threshold: 50
+ alarm_actions:
+ - {get_attr: [web_server_scaleup_policy, alarm_url]}
+ matching_metadata: {'metadata.user_metadata.stack': {get_param: "OS::stack_id"}}
+ comparison_operator: gt
+ cpu_alarm_low:
+ type: OS::Ceilometer::Alarm
+ properties:
+ description: Scale-down if the average CPU < 15% for 10 minutes
+ meter_name: cpu_util
+ statistic: avg
+ period: 600
+ evaluation_periods: 1
+ threshold: 15
+ alarm_actions:
+ - {get_attr: [web_server_scaledown_policy, alarm_url]}
+ matching_metadata: {'metadata.user_metadata.stack': {get_param: "OS::stack_id"}}
+ comparison_operator: lt
+ monitor:
+ type: OS::Neutron::HealthMonitor
+ properties:
+ type: TCP
+ delay: 5
+ max_retries: 5
+ timeout: 5
+ pool:
+ type: OS::Neutron::Pool
+ properties:
+ protocol: HTTP
+ monitors: [{get_resource: monitor}]
+ subnet_id: {get_param: subnet_id}
+ lb_method: ROUND_ROBIN
+ vip:
+ protocol_port: 80
+ lb:
+ type: OS::Neutron::LoadBalancer
+ properties:
+ protocol_port: 80
+ pool_id: {get_resource: pool}
+
+ # assign a floating ip address to the load balancer
+ # pool.
+ lb_floating:
+ type: OS::Neutron::FloatingIP
+ properties:
+ floating_network_id: {get_param: external_network_id}
+ port_id: {get_attr: [pool, vip, port_id]}
+
+ outputs:
+ scale_up_url:
+ description: >
+ This URL is the webhook to scale up the autoscaling 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: [web_server_scaleup_policy, alarm_url]}
+ scale_dn_url:
+ description: >
+ This URL is the webhook to scale down the autoscaling 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: [web_server_scaledown_policy, alarm_url]}
+ pool_ip_address:
+ value: {get_attr: [pool, vip, address]}
+ description: The IP address of the load balancing pool
+ website_url:
+ value:
+ str_replace:
+ template: http://host/wordpress/
+ params:
+ host: { get_attr: [lb_floating, floating_ip_address] }
+ description: >
+ This URL is the "external" URL that can be used to access the
+ Wordpress site.
+ ceilometer_query:
+ value:
+ str_replace:
+ template: >
+ ceilometer statistics -m cpu_util
+ -q metadata.user_metadata.stack=stackval -p 600 -a avg
+ params:
+ stackval: { get_param: "OS::stack_id" }
+ description: >
+ This is a Ceilometer query for statistics on the cpu_util meter
+ Samples about OS::Nova::Server instances in this stack. The -q
+ parameter selects Samples according to the subject's metadata.
+ When a VM's metadata includes an item of the form metering.X=Y,
+ the corresponding Ceilometer resource has a metadata item of the
+ form user_metadata.X=Y and samples about resources so tagged can
+ be queried with a Ceilometer query term of the form
+ metadata.user_metadata.X=Y. In this case the nested stacks give
+ their VMs metadata that is passed as a nested stack parameter,
+ and this stack passes a metadata of the form metering.stack=Y,
+ where Y is this stack's ID.