diff options
Diffstat (limited to 'playbooks/gce/openshift-cluster')
| l--------- | playbooks/gce/openshift-cluster/filter_plugins | 1 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/launch.yml | 63 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/launch_instances.yml | 39 | ||||
| l--------- | playbooks/gce/openshift-cluster/roles | 1 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/terminate.yml | 20 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/vars.yml | 1 | 
6 files changed, 125 insertions, 0 deletions
diff --git a/playbooks/gce/openshift-cluster/filter_plugins b/playbooks/gce/openshift-cluster/filter_plugins new file mode 120000 index 000000000..99a95e4ca --- /dev/null +++ b/playbooks/gce/openshift-cluster/filter_plugins @@ -0,0 +1 @@ +../../../filter_plugins
\ No newline at end of file diff --git a/playbooks/gce/openshift-cluster/launch.yml b/playbooks/gce/openshift-cluster/launch.yml new file mode 100644 index 000000000..889d92d40 --- /dev/null +++ b/playbooks/gce/openshift-cluster/launch.yml @@ -0,0 +1,63 @@ +--- +- name: Launch instance(s) +  hosts: localhost +  connection: local +  gather_facts: no +  vars_files: +      - vars.yml +  tasks: +    - set_fact: k8s_type="master" + +    - name: Generate master instance names(s) +      set_fact: scratch={{ cluster_id }}-{{ k8s_type }}-{{ '%05x' |format( 1048576 |random) }} +      register: master_names_output +      with_sequence: start=1 end={{ masters }} + +    # These set_fact's cannot be combined +    - set_fact: +        master_names_string: "{% for item in master_names_output.results %}{{ item.ansible_facts.scratch }} {% endfor %}" + +    - set_fact: +        master_names: "{{ master_names_string.strip().split(' ') }}" + +    - include: launch_instances.yml +      vars: +        instances: "{{ master_names }}" +        cluster: "{{ cluster_id }}" +        type: "{{ k8s_type }}" +        group_name: "tag_env-host-type-{{ cluster_id }}-openshift-master" + +    - set_fact: k8s_type="node" + +    - name: Generate node instance names(s) +      set_fact: scratch={{ cluster_id }}-{{ k8s_type }}-{{ '%05x' |format( 1048576 |random) }} +      register: node_names_output +      with_sequence: start=1 end={{ nodes }} + +    # These set_fact's cannot be combined +    - set_fact: +        node_names_string: "{% for item in node_names_output.results %}{{ item.ansible_facts.scratch }} {% endfor %}" + +    - set_fact: +        node_names: "{{ node_names_string.strip().split(' ') }}" + +    - include: launch_instances.yml +      vars: +        instances: "{{ node_names }}" +        cluster: "{{ cluster_id }}" +        type: "{{ k8s_type }}" + +- hosts: "tag_env-{{ cluster_id }}" +  roles: +  - openshift_repos +  - os_update_latest + +- include: ../openshift-master/config.yml +  vars: +    oo_host_group_exp: "groups[\"tag_env-host-type-{{ cluster_id }}-openshift-master\"]" +    oo_env: "{{ cluster_id }}" + +- include: ../openshift-node/config.yml +  vars: +    oo_host_group_exp: "groups[\"tag_env-host-type-{{ cluster_id }}-openshift-node\"]" +    oo_env: "{{ cluster_id }}" diff --git a/playbooks/gce/openshift-cluster/launch_instances.yml b/playbooks/gce/openshift-cluster/launch_instances.yml new file mode 100644 index 000000000..20e31d990 --- /dev/null +++ b/playbooks/gce/openshift-cluster/launch_instances.yml @@ -0,0 +1,39 @@ + +- set_fact: +    machine_type: "{{ lookup('env', 'gce_machine_type') |default('n1-standard-1', true) }}" +    machine_image: "{{ lookup('env', 'gce_machine_image') |default('libra-rhel7', true) }}" + +- name: Launch instance(s) +  gce: +    instance_names: "{{ instances }}" +    machine_type: "{{ machine_type }}" +    image: "{{ machine_image }}" +    service_account_email: "{{ lookup('env', 'gce_service_account_email_address') }}" +    pem_file: "{{ lookup('env', 'gce_service_account_pem_file_path') }}" +    project_id: "{{ lookup('env', 'gce_project_id') }}" +    tags: +      - "created-by-{{ lookup('env', 'LOGNAME') |default(cluster, true) }}" +      - "env-{{ cluster }}" +      - "host-type-{{ type }}" +      - "env-host-type-{{ cluster }}-openshift-{{ type }}" +  register: gce + +- name: Add new instances public IPs +  add_host: +    hostname: "{{ item.name }}" +    ansible_ssh_host: "{{ item.public_ip }}" +    groups: "{{ item.tags | oo_prepend_strings_in_list('tag_') | join(',') }}" +    gce_public_ip: "{{ item.public_ip }}" +  with_items: gce.instance_data + +- name: Wait for ssh +  wait_for: "port=22 host={{ item.public_ip }}" +  with_items: gce.instance_data + +- name: Wait for root user setup +  command: "ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null root@{{ item.public_ip }} echo root user is setup" +  register: result +  until: result.rc == 0 +  retries: 20 +  delay: 10 +  with_items: gce.instance_data diff --git a/playbooks/gce/openshift-cluster/roles b/playbooks/gce/openshift-cluster/roles new file mode 120000 index 000000000..20c4c58cf --- /dev/null +++ b/playbooks/gce/openshift-cluster/roles @@ -0,0 +1 @@ +../../../roles
\ No newline at end of file diff --git a/playbooks/gce/openshift-cluster/terminate.yml b/playbooks/gce/openshift-cluster/terminate.yml new file mode 100644 index 000000000..0281ae953 --- /dev/null +++ b/playbooks/gce/openshift-cluster/terminate.yml @@ -0,0 +1,20 @@ +--- +- name: Terminate instance(s) +  hosts: localhost + +  vars_files: +    - vars.yml + +- include: ../openshift-node/terminate.yml +  vars: +    oo_host_group_exp: 'groups["tag_env-host-type-{{ cluster_id }}-openshift-node"]' +    gce_service_account_email: "{{ lookup('env', 'gce_service_account_email_address') }}" +    gce_pem_file: "{{ lookup('env', 'gce_service_account_pem_file_path') }}" +    gce_project_id: "{{ lookup('env', 'gce_project_id') }}" + +- include: ../openshift-master/terminate.yml +  vars: +    oo_host_group_exp: 'groups["tag_env-host-type-{{ cluster_id }}-openshift-master"]' +    gce_service_account_email: "{{ lookup('env', 'gce_service_account_email_address') }}" +    gce_pem_file: "{{ lookup('env', 'gce_service_account_pem_file_path') }}" +    gce_project_id: "{{ lookup('env', 'gce_project_id') }}" diff --git a/playbooks/gce/openshift-cluster/vars.yml b/playbooks/gce/openshift-cluster/vars.yml new file mode 100644 index 000000000..ed97d539c --- /dev/null +++ b/playbooks/gce/openshift-cluster/vars.yml @@ -0,0 +1 @@ +---  | 
