2819cb391b
Import TripleO CI environments from tripleo-ci into THT for some reasons: 1) THT is branched while tripleo-ci is not. Having them here would allow to make scenarios able to evolve over the releases without adding more scenarios. 2) Help our developers to run TripleO CI scenarios themselves from THT by exposing the templates here. The whole discussion is here: http://lists.openstack.org/pipermail/openstack-dev/2016-November/107816.html Change-Id: I3527a64c0c8f56ca77115d32849fa23fe710112d
175 lines
4.7 KiB
YAML
175 lines
4.7 KiB
YAML
heat_template_version: 2013-05-23
|
|
|
|
description: >
|
|
HOT template to created resources deployed by scenario001.
|
|
parameters:
|
|
key_name:
|
|
type: string
|
|
description: Name of keypair to assign to servers
|
|
default: 'pingtest_key'
|
|
image:
|
|
type: string
|
|
description: Name of image to use for servers
|
|
default: 'pingtest_image'
|
|
public_net_name:
|
|
type: string
|
|
default: 'nova'
|
|
description: >
|
|
ID or name of public network for which floating IP addresses will be allocated
|
|
private_net_name:
|
|
type: string
|
|
description: Name of private network to be created
|
|
default: 'default-net'
|
|
private_net_cidr:
|
|
type: string
|
|
description: Private network address (CIDR notation)
|
|
default: '192.168.2.0/24'
|
|
private_net_gateway:
|
|
type: string
|
|
description: Private network gateway address
|
|
default: '192.168.2.1'
|
|
private_net_pool_start:
|
|
type: string
|
|
description: Start of private network IP address allocation pool
|
|
default: '192.168.2.100'
|
|
private_net_pool_end:
|
|
type: string
|
|
default: '192.168.2.200'
|
|
description: End of private network IP address allocation pool
|
|
|
|
resources:
|
|
|
|
key_pair:
|
|
type: OS::Nova::KeyPair
|
|
properties:
|
|
save_private_key: true
|
|
name: {get_param: key_name }
|
|
|
|
private_net:
|
|
type: OS::Neutron::Net
|
|
properties:
|
|
name: { get_param: private_net_name }
|
|
|
|
private_subnet:
|
|
type: OS::Neutron::Subnet
|
|
properties:
|
|
network_id: { get_resource: private_net }
|
|
cidr: { get_param: private_net_cidr }
|
|
gateway_ip: { get_param: private_net_gateway }
|
|
allocation_pools:
|
|
- start: { get_param: private_net_pool_start }
|
|
end: { get_param: private_net_pool_end }
|
|
|
|
router:
|
|
type: OS::Neutron::Router
|
|
properties:
|
|
external_gateway_info:
|
|
network: { get_param: public_net_name }
|
|
|
|
router_interface:
|
|
type: OS::Neutron::RouterInterface
|
|
properties:
|
|
router_id: { get_resource: router }
|
|
subnet_id: { get_resource: private_subnet }
|
|
|
|
server1:
|
|
type: OS::Nova::Server
|
|
properties:
|
|
name: Server1
|
|
flavor: { get_resource: test_flavor }
|
|
image: { get_param: image }
|
|
key_name: { get_resource: key_pair }
|
|
networks:
|
|
- port: { get_resource: server1_port }
|
|
|
|
server1_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 }]
|
|
|
|
server1_floating_ip:
|
|
type: OS::Neutron::FloatingIP
|
|
# TODO: investigate why we need this depends_on and if we could
|
|
# replace it by router_id with get_resource: router_interface
|
|
depends_on: router_interface
|
|
properties:
|
|
floating_network: { get_param: public_net_name }
|
|
port_id: { get_resource: server1_port }
|
|
|
|
server_security_group:
|
|
type: OS::Neutron::SecurityGroup
|
|
properties:
|
|
description: Add security group rules for server
|
|
name: pingtest-security-group
|
|
rules:
|
|
- remote_ip_prefix: 0.0.0.0/0
|
|
protocol: tcp
|
|
port_range_min: 22
|
|
port_range_max: 22
|
|
- remote_ip_prefix: 0.0.0.0/0
|
|
protocol: icmp
|
|
|
|
test_flavor:
|
|
type: OS::Nova::Flavor
|
|
properties:
|
|
ram: 512
|
|
vcpus: 1
|
|
|
|
gnocchi_res_alarm:
|
|
type: OS::Aodh::GnocchiResourcesAlarm
|
|
properties:
|
|
description: Do stuff with gnocchi
|
|
metric: cpu_util
|
|
aggregation_method: mean
|
|
granularity: 60
|
|
evaluation_periods: 1
|
|
threshold: 50
|
|
alarm_actions: []
|
|
resource_type: instance
|
|
resource_id: { get_resource: server1 }
|
|
comparison_operator: gt
|
|
|
|
asg:
|
|
type: OS::Heat::AutoScalingGroup
|
|
properties:
|
|
max_size: 5
|
|
min_size: 1
|
|
resource:
|
|
type: OS::Heat::RandomString
|
|
|
|
scaleup_policy:
|
|
type: OS::Heat::ScalingPolicy
|
|
properties:
|
|
adjustment_type: change_in_capacity
|
|
auto_scaling_group_id: {get_resource: asg}
|
|
cooldown: 0
|
|
scaling_adjustment: 1
|
|
|
|
alarm:
|
|
type: OS::Aodh::Alarm
|
|
properties:
|
|
description: Scale-up if the average CPU > 50% for 1 minute
|
|
meter_name: test_meter
|
|
statistic: count
|
|
comparison_operator: ge
|
|
threshold: 1
|
|
period: 60
|
|
evaluation_periods: 1
|
|
alarm_actions:
|
|
- {get_attr: [scaleup_policy, alarm_url]}
|
|
matching_metadata:
|
|
metadata.metering.stack_id: {get_param: "OS::stack_id"}
|
|
|
|
outputs:
|
|
server1_private_ip:
|
|
description: IP address of server1 in private network
|
|
value: { get_attr: [ server1, first_address ] }
|
|
server1_public_ip:
|
|
description: Floating IP address of server1 in public network
|
|
value: { get_attr: [ server1_floating_ip, floating_ip_address ] }
|
|
asg_size:
|
|
value: {get_attr: [asg, current_size]}
|