# 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"'