mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
5.6 KiB
YAML
173 lines
5.6 KiB
YAML
# GCP Cross Region Load Balancer integration test
|
|
# https://cloud.google.com/compute/docs/load-balancing/http/cross-region-example
|
|
######
|
|
# ============================================================
|
|
- name: Create Instance template
|
|
# ============================================================
|
|
gce_instance_template:
|
|
service_account_email: "{{ service_account_email }}"
|
|
credentials_file: "{{ credentials_file }}"
|
|
project_id: "{{ project_id }}"
|
|
name: "{{ instance_template }}"
|
|
image: rhel-7-v20170426
|
|
state: "present"
|
|
tags:
|
|
- http-server
|
|
metadata:
|
|
startup-script: |
|
|
#!/bin/bash
|
|
yum install -y httpd curl
|
|
systemctl start httpd
|
|
zone=$(curl -sv -H "Metadata-flavor: Google" http://metadata/computeMetadata/v1/instance/zone)
|
|
host=$(curl -sv -H "Metadata-flavor: Google" http://metadata/computeMetadata/v1/instance/name)
|
|
echo "${host}-${zone}" > /var/www/html/index.html
|
|
# ============================================================
|
|
- name: Create MIG one
|
|
# ============================================================
|
|
gce_mig:
|
|
service_account_email: "{{ service_account_email }}"
|
|
credentials_file: "{{ credentials_file }}"
|
|
project_id: "{{ project_id }}"
|
|
name: "{{ mig_one }}"
|
|
zone: "{{ mig_one_zone }}"
|
|
state: "present"
|
|
size: 1
|
|
autoscaling:
|
|
enabled: yes
|
|
name: "{{ mig_one }}"
|
|
policy:
|
|
min_instances: 1
|
|
max_instances: 3
|
|
cool_down_period: 60
|
|
cpu_utilization:
|
|
target: 0.6
|
|
template: "{{ instance_template }}"
|
|
named_ports:
|
|
- name: "{{ http_port_name }}"
|
|
port: "{{ http_port }}"
|
|
# ============================================================
|
|
- name: Create MIG two
|
|
# ============================================================
|
|
gce_mig:
|
|
service_account_email: "{{ service_account_email }}"
|
|
credentials_file: "{{ credentials_file }}"
|
|
project_id: "{{ project_id }}"
|
|
name: "{{ mig_two }}"
|
|
zone: "{{ mig_two_zone }}"
|
|
state: "present"
|
|
size: 1
|
|
autoscaling:
|
|
enabled: yes
|
|
name: "{{ mig_two }}"
|
|
policy:
|
|
min_instances: 1
|
|
max_instances: 3
|
|
cool_down_period: 60
|
|
cpu_utilization:
|
|
target: 0.6
|
|
template: "{{ instance_template }}"
|
|
named_ports:
|
|
- name: "{{ http_port_name }}"
|
|
port: "{{ http_port }}"
|
|
# ============================================================
|
|
- name: Create Healthcheck
|
|
# ============================================================
|
|
gcp_healthcheck:
|
|
service_account_email: "{{ service_account_email }}"
|
|
credentials_file: "{{ credentials_file }}"
|
|
project_id: "{{ project_id }}"
|
|
healthcheck_name: "{{ bes_healthcheck }}"
|
|
healthcheck_type: "HTTP"
|
|
state: "present"
|
|
# ============================================================
|
|
- name: Create Backend Service
|
|
# ============================================================
|
|
gcp_backend_service:
|
|
service_account_email: "{{ service_account_email }}"
|
|
credentials_file: "{{ credentials_file }}"
|
|
project_id: "{{ project_id }}"
|
|
backend_service_name: "{{ bes }}"
|
|
backends:
|
|
- instance_group: "{{ mig_one }}"
|
|
balancing_mode: RATE
|
|
max_rate_per_instance: 10.00
|
|
- instance_group: "{{ mig_two }}"
|
|
healthchecks:
|
|
- "{{ bes_healthcheck }}"
|
|
port_name: "{{ http_port_name }}"
|
|
protocol: HTTP
|
|
timeout: 60
|
|
state: "present"
|
|
register: result
|
|
- name: "assert backend service present"
|
|
assert:
|
|
that:
|
|
- 'result.state == "present"'
|
|
# ============================================================
|
|
- name: Create URLMap
|
|
# ============================================================
|
|
gcp_url_map:
|
|
service_account_email: "{{ service_account_email }}"
|
|
credentials_file: "{{ credentials_file }}"
|
|
project_id: "{{ project_id }}"
|
|
url_map_name: "{{ urlmap }}"
|
|
default_service: "{{ bes }}"
|
|
state: "present"
|
|
register: result
|
|
- name: "assert urlmap present"
|
|
assert:
|
|
that:
|
|
- 'result.state == "present"'
|
|
- pause: seconds=10
|
|
# ============================================================
|
|
- name: Create TargetHTTPProxy
|
|
# ============================================================
|
|
gcp_target_proxy:
|
|
service_account_email: "{{ service_account_email }}"
|
|
credentials_file: "{{ credentials_file }}"
|
|
project_id: "{{ project_id }}"
|
|
target_proxy_name: "{{ targethttpproxy }}"
|
|
target_proxy_type: "HTTP"
|
|
url_map_name: "{{ urlmap }}"
|
|
state: "present"
|
|
register: result
|
|
- name: "assert targethttpproxy present"
|
|
assert:
|
|
that:
|
|
- 'result.state == "present"'
|
|
|
|
# ============================================================
|
|
- name: Create Static Address
|
|
# ============================================================
|
|
gce_eip:
|
|
service_account_email: "{{ service_account_email }}"
|
|
credentials_file: "{{ credentials_file }}"
|
|
project_id: "{{ project_id }}"
|
|
name: "{{ external_address_name }}"
|
|
region: global
|
|
state: "present"
|
|
register: result
|
|
- name: "assert static address present"
|
|
assert:
|
|
that:
|
|
- 'result.state == "present"'
|
|
|
|
# ============================================================
|
|
- name: Create Global Forwarding Rule
|
|
# ============================================================
|
|
gcp_forwarding_rule:
|
|
service_account_email: "{{ service_account_email }}"
|
|
credentials_file: "{{ credentials_file }}"
|
|
project_id: "{{ project_id }}"
|
|
forwarding_rule_name: "{{ gfr }}"
|
|
region: global
|
|
target: "{{ targethttpproxy }}"
|
|
address: "{{ external_address_name }}"
|
|
port_range: 80
|
|
state: "present"
|
|
register: result
|
|
- name: "assert gfr present"
|
|
assert:
|
|
that:
|
|
- 'result.state == "present"'
|