Skip to content

Instantly share code, notes, and snippets.

@detiber
Created May 31, 2017 15:59
Show Gist options
  • Save detiber/a20184ea8f524f20bbb9d5d91148ffb5 to your computer and use it in GitHub Desktop.
Save detiber/a20184ea8f524f20bbb9d5d91148ffb5 to your computer and use it in GitHub Desktop.
GCE Instance provisioning
---
- hosts: localhost
vars_prompt:
- name: creds_file
prompt: "GCE Credentials File:"
default: "{{ lookup('env', 'GCE_CREDS_FILE') | default '~/gce-credentials.json' }}"
- name: service_account
prompt: "GCE Service Account:"
default: "{{ lookup('env', GCE_SERVICE_ACCOUNT) | default(none) }}"
- name: project_id
prompt: "GCE Project ID:"
default: "{{ lookup('env', GCE_PROJECT_ID) | default(none) }}"
- name: federation_id
prompt: "Federation ID:"
vars:
cluster_ids:
- east
- central
- west
cluster_zones:
east: us-east1-b
central: us-central1-a
west: us-west1-a
tasks:
- gce_net:
name: default
credentials_file: "{{ creds_file }}"
service_account_email: "{{ service_account }}"
project_id: "{{ project_id }}"
fwname: "{{ federation_id }}-host"
allowed: 'tcp:22,10250,8443,30000-32767;udp:30000-32767;icmp'
src_range: ['0.0.0.0/0']
target_tags: "federation-{{ federation_id }}"
state: present
- gce:
name: "{{ federation_id }}-{{ item }}"
credentials_file: "{{ creds_file }}"
service_account_email: "{{ service_account }}"
service_account_permissions:
- storage-ro
- compute-rw
- monitoring
- logging-write
- 'https://www.googleapis.com/auth/ndev.clouddns.readwrite'
project_id: "{{ project_id }}"
image: centos-7
state: present
zone: "{{ cluster_zones[item] }}"
tags: "federation-{{ federation_id }},cluster-{{ federation_id }}-{{ item }},{{ federation_id }}-{{ item }},host-type-master,host-type-node"
with_items:
- "{{ cluster_ids }}"
register: gce
- name: Wait for SSH for instances
wait_for:
delay: 1
host: "{{ item.instance_data.0.public_ip }}"
port: 22
state: started
timeout: 30
with_items: "{{ gce.results }}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment