diff options
Diffstat (limited to 'playbooks/gce')
| -rw-r--r-- | playbooks/gce/openshift-cluster/launch.yml | 9 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/launch_instances.yml | 7 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/list.yml | 17 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/update.yml | 13 | ||||
| -rw-r--r-- | playbooks/gce/openshift-master/config.yml | 6 | ||||
| -rw-r--r-- | playbooks/gce/openshift-master/launch.yml | 12 | ||||
| -rw-r--r-- | playbooks/gce/openshift-master/terminate.yml | 16 | ||||
| -rw-r--r-- | playbooks/gce/openshift-master/vars.yml | 1 | ||||
| -rw-r--r-- | playbooks/gce/openshift-node/config.yml | 94 | ||||
| -rw-r--r-- | playbooks/gce/openshift-node/launch.yml | 22 | ||||
| -rw-r--r-- | playbooks/gce/openshift-node/terminate.yml | 16 | ||||
| -rw-r--r-- | playbooks/gce/openshift-node/vars.yml | 1 | 
12 files changed, 109 insertions, 105 deletions
| diff --git a/playbooks/gce/openshift-cluster/launch.yml b/playbooks/gce/openshift-cluster/launch.yml index 889d92d40..14cdd2537 100644 --- a/playbooks/gce/openshift-cluster/launch.yml +++ b/playbooks/gce/openshift-cluster/launch.yml @@ -11,7 +11,7 @@      - 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 }} +      with_sequence: start=1 end={{ num_masters }}      # These set_fact's cannot be combined      - set_fact: @@ -25,14 +25,13 @@          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 }} +      with_sequence: start=1 end={{ num_nodes }}      # These set_fact's cannot be combined      - set_fact: @@ -55,9 +54,9 @@  - 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 }}" + +- include: list.yml diff --git a/playbooks/gce/openshift-cluster/launch_instances.yml b/playbooks/gce/openshift-cluster/launch_instances.yml index 20e31d990..b4f33bd87 100644 --- a/playbooks/gce/openshift-cluster/launch_instances.yml +++ b/playbooks/gce/openshift-cluster/launch_instances.yml @@ -1,3 +1,7 @@ +--- +# TODO: when we are ready to go to ansible 1.9+ support only, we can update to +# the gce task to use the disk_auto_delete parameter to avoid having to delete +# the disk as a separate step on termination  - set_fact:      machine_type: "{{ lookup('env', 'gce_machine_type') |default('n1-standard-1', true) }}" @@ -18,12 +22,13 @@        - "env-host-type-{{ cluster }}-openshift-{{ type }}"    register: gce -- name: Add new instances public IPs +- name: Add new instances to groups and set variables needed    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 }}" +    gce_private_ip: "{{ item.private_ip }}"    with_items: gce.instance_data  - name: Wait for ssh diff --git a/playbooks/gce/openshift-cluster/list.yml b/playbooks/gce/openshift-cluster/list.yml new file mode 100644 index 000000000..1124b0ea3 --- /dev/null +++ b/playbooks/gce/openshift-cluster/list.yml @@ -0,0 +1,17 @@ +--- +- name: Generate oo_list_hosts group +  hosts: localhost +  gather_facts: no +  tasks: +  - set_fact: scratch_group=tag_env-{{ cluster_id }} +    when: cluster_id != '' +  - set_fact: scratch_group=all +    when: scratch_group is not defined +  - add_host: name={{ item }} groups=oo_list_hosts +    with_items: groups[scratch_group] | difference(['localhost']) | difference(groups.status_terminated) + +- name: List Hosts +  hosts: oo_list_hosts +  gather_facts: no +  tasks: +  - debug: msg="public:{{hostvars[inventory_hostname].gce_public_ip}} private:{{hostvars[inventory_hostname].gce_private_ip}}" diff --git a/playbooks/gce/openshift-cluster/update.yml b/playbooks/gce/openshift-cluster/update.yml new file mode 100644 index 000000000..973e4c3ef --- /dev/null +++ b/playbooks/gce/openshift-cluster/update.yml @@ -0,0 +1,13 @@ +--- +- 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\"]" + +- include: ../openshift-node/config.yml +  vars: +    oo_host_group_exp: "groups[\"tag_env-host-type-{{ cluster_id }}-openshift-node\"]" diff --git a/playbooks/gce/openshift-master/config.yml b/playbooks/gce/openshift-master/config.yml index e405e2fb4..857da0763 100644 --- a/playbooks/gce/openshift-master/config.yml +++ b/playbooks/gce/openshift-master/config.yml @@ -1,3 +1,4 @@ +---  - name: master/config.yml, populate oo_masters_to_config host group if needed    hosts: localhost    gather_facts: no @@ -7,11 +8,10 @@      with_items: "{{ oo_host_group_exp | default('') }}"      when: oo_host_group_exp is defined -- name: Gather facts for nodes in {{ oo_env }} -  hosts: "tag_env-host-type-{{ oo_env }}-openshift-node" -  - name: "Configure instances"    hosts: oo_masters_to_config +  vars: +    openshift_hostname: "{{ gce_private_ip }}"    vars_files:    - vars.yml    roles: diff --git a/playbooks/gce/openshift-master/launch.yml b/playbooks/gce/openshift-master/launch.yml index 3512274cc..287596002 100644 --- a/playbooks/gce/openshift-master/launch.yml +++ b/playbooks/gce/openshift-master/launch.yml @@ -1,4 +1,8 @@  --- +# TODO: when we are ready to go to ansible 1.9+ support only, we can update to +# the gce task to use the disk_auto_delete parameter to avoid having to delete +# the disk as a separate step on termination +  - name: Launch instance(s)    hosts: localhost    connection: local @@ -25,15 +29,17 @@        register: gce      - name: Add new instances public IPs to oo_masters_to_config -      add_host: "hostname={{ item.name }} ansible_ssh_host={{ item.public_ip }} groupname=oo_masters_to_config" +      add_host: +        hostname: "{{ item.name }}" +        ansible_ssh_host: "{{ item.public_ip }}" +        groupname: oo_masters_to_config +        gce_private_ip: "{{ item.private_ip }}"        with_items: gce.instance_data      - name: Wait for ssh        wait_for: "port=22 host={{ item.public_ip }}"        with_items: gce.instance_data -    - debug: var=gce -      - 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 diff --git a/playbooks/gce/openshift-master/terminate.yml b/playbooks/gce/openshift-master/terminate.yml index 9e027cf41..8319774f8 100644 --- a/playbooks/gce/openshift-master/terminate.yml +++ b/playbooks/gce/openshift-master/terminate.yml @@ -1,17 +1,13 @@ -- name: "populate oo_hosts_to_terminate host group if needed" +--- +- name: Populate oo_masters_to_terminate host group if needed    hosts: localhost    gather_facts: no    tasks: -    - debug: var=oo_host_group_exp -      - name: Evaluate oo_host_group_exp if it's set -      add_host: "name={{ item }} groups=oo_hosts_to_terminate" +      add_host: "name={{ item }} groups=oo_masters_to_terminate"        with_items: "{{ oo_host_group_exp | default('') }}"        when: oo_host_group_exp is defined -    - debug: msg="{{ groups['oo_hosts_to_terminate'] }}" - -  - name: Terminate master instances    hosts: localhost    connection: local @@ -23,12 +19,10 @@          pem_file: "{{ gce_pem_file }}"          project_id: "{{ gce_project_id }}"          state: 'absent' -        instance_names: "{{ groups['oo_hosts_to_terminate'] }}" -        disks: "{{ groups['oo_hosts_to_terminate'] }}" +        instance_names: "{{ groups['oo_masters_to_terminate'] }}" +        disks: "{{ groups['oo_masters_to_terminate'] }}"        register: gce -    - debug: var=gce -      - name: Remove disks of instances        gce_pd:          service_account_email: "{{ gce_service_account_email }}" diff --git a/playbooks/gce/openshift-master/vars.yml b/playbooks/gce/openshift-master/vars.yml index fb5f4ea42..c196b2fca 100644 --- a/playbooks/gce/openshift-master/vars.yml +++ b/playbooks/gce/openshift-master/vars.yml @@ -1,2 +1,3 @@  ---  openshift_debug_level: 4 +openshift_cluster_id: "{{ cluster_id }}" diff --git a/playbooks/gce/openshift-node/config.yml b/playbooks/gce/openshift-node/config.yml index e0d074572..771cc3a94 100644 --- a/playbooks/gce/openshift-node/config.yml +++ b/playbooks/gce/openshift-node/config.yml @@ -1,3 +1,4 @@ +---  - name: node/config.yml, populate oo_nodes_to_config host group if needed    hosts: localhost    gather_facts: no @@ -6,50 +7,42 @@      add_host: "name={{ item }} groups=oo_nodes_to_config"      with_items: "{{ oo_host_group_exp | default('') }}"      when: oo_host_group_exp is defined -  - name: Find masters for env -    add_host: "name={{ item }} groups=oo_masters_for_node_config" -    with_items: groups['tag_env-host-type-' + oo_env + '-openshift-master'] +  - add_host: +      name: "{{ groups['tag_env-host-type-' ~ cluster_id ~ '-openshift-master'][0] }}" +      groups: oo_first_master +    when: oo_host_group_exp is defined -- name: Gather facts for masters in {{ oo_env }} -  hosts: tag_env-host-type-{{ oo_env }}-openshift-master -  tasks: -  - set_fact: -      openshift_master_ip: "{{ openshift_ip }}" -      openshift_master_api_url: "{{ openshift_api_url }}" -      openshift_master_webui_url: "{{ openshift_webui_url }}" -      openshift_master_hostname: "{{ openshift_hostname }}" -      openshift_master_public_ip: "{{ openshift_public_ip }}" -      openshift_master_api_public_url: "{{ openshift_api_public_url }}" -      openshift_master_webui_public_url: "{{ openshift_webui_public_url }}" -      openshift_master_public_hostnames: "{{ openshift_public_hostname }}" -- name: Gather facts for hosts to configure -  hosts: tag_env-host-type-{{ oo_env }}-openshift-node +- name: Gather and set facts for hosts to configure +  hosts: oo_nodes_to_config +  roles: +  - openshift_facts    tasks: -  - set_fact: -      openshift_node_hostname: "{{ openshift_hostname }}" -      openshift_node_name: "{{ openshift_hostname }}" -      openshift_node_cpu: "{{ openshift_node_cpu if openshift_node_cpu else ansible_processor_cores }}" -      openshift_node_memory: "{{ openshift_node_memory if openshift_node_memory else (ansible_memtotal_mb|int * 1024 * 1024 * 0.75)|int }}" -      openshift_node_pod_cidr: "{{ openshift_node_pod_cidr if openshift_node_pod_cidr else None }}" -      openshift_node_host_ip: "{{ openshift_ip }}" -      openshift_node_labels: "{{ openshift_node_labels if openshift_node_labels else {} }}" -      openshift_node_annotations: "{{ openshift_node_annotations if openshift_node_annotations else {} }}" +  # Since the master is registering the nodes before they are configured, we +  # need to make sure to set the node properties beforehand if we do not want +  # the defaults +  - openshift_facts: +      role: "{{ item.role }}" +      local_facts: "{{ item.local_facts }}" +    with_items: +    - role: common +      local_facts: +        hostname: "{{ gce_private_ip }}" +    - role: node +      local_facts: +        external_id: "{{ openshift_node_external_id | default(None) }}" +        resources_cpu: "{{ openshfit_node_resources_cpu | default(None) }}" +        resources_memory: "{{ openshfit_node_resources_memory | default(None) }}" +        pod_cidr: "{{ openshfit_node_pod_cidr | default(None) }}" +        labels: "{{ openshfit_node_labels | default(None) }}" +        annotations: "{{ openshfit_node_annotations | default(None) }}" +  - name: Register nodes -  hosts: tag_env-host-type-{{ oo_env }}-openshift-master[0] +  hosts: oo_first_master    vars: -    openshift_node_group: tag_env-host-type-{{ oo_env }}-openshift-node      openshift_nodes: "{{ hostvars -          | oo_select_keys(groups[openshift_node_group]) }}" -    openshift_master_group: tag_env-host-type-{{ oo_env }}-openshift-master -    openshift_master_urls: "{{ hostvars -          | oo_select_keys(groups[openshift_master_group]) -          | oo_collect(attribute='openshift_master_api_url') }}" -    openshift_master_public_urls: "{{ hostvars -          | oo_select_keys(groups[openshift_master_group]) -          | oo_collect(attribute='openshift_master_api_public_url') }}" -  pre_tasks: +          | oo_select_keys(groups['oo_nodes_to_config']) }}"    roles:    - openshift_register_nodes    tasks: @@ -64,28 +57,14 @@        src: /var/lib/openshift/openshift.local.certificates        dest: "{{ mktemp.stdout }}" -# TODO: sync generated certs between masters -#  - name: Configure instances    hosts: oo_nodes_to_config    vars_files:    - vars.yml    vars: -    openshift_master_group: tag_env-host-type-{{ oo_env }}-openshift-master -    openshift_master_ips: "{{ hostvars -          | oo_select_keys(groups[openshift_master_group]) -          | oo_collect(attribute='openshift_master_ip') }}" -    openshift_master_hostnames: "{{ hostvars -          | oo_select_keys(groups[openshift_master_group]) -          | oo_collect(attribute='openshift_master_hostname') }}" -    openshift_master_public_ips: "{{ hostvars -          | oo_select_keys(groups[openshift_master_group]) -          | oo_collect(attribute='openshift_master_public_ip') }}" -    openshift_master_public_hostnames: "{{ hostvars -          | oo_select_keys(groups[openshift_master_group]) -          | oo_collect(attribute='openshift_master_public_hostname') }}" +    sync_tmpdir: "{{ hostvars[groups['oo_first_master'][0]].mktemp.stdout }}"      cert_parent_rel_path: openshift.local.certificates -    cert_rel_path: "{{ cert_parent_rel_path }}/node-{{ openshift_node_name }}" +    cert_rel_path: "{{ cert_parent_rel_path }}/node-{{ openshift.common.hostname }}"      cert_base_path: /var/lib/openshift      cert_parent_path: "{{ cert_base_path }}/{{ cert_parent_rel_path }}"      cert_path: "{{ cert_base_path }}/{{ cert_rel_path }}" @@ -98,11 +77,9 @@      - "{{ cert_path }}"      - "{{ cert_parent_path }}/ca" -  # TODO: only sync to a node if it's certs have been updated    # TODO: notify restart openshift-node and/or restart openshift-sdn-node,    # possibly test service started time against certificate/config file    # timestamps in openshift-node or openshift-sdn-node to trigger notify -  # TODO: also copy ca cert: /var/lib/openshift/openshift.local.certificates/ca/cert.crt    - name: Sync certs to nodes      synchronize:        checksum: yes @@ -111,12 +88,13 @@        owner: no        group: no      with_items: -    - src: "{{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }}/{{ cert_rel_path }}" +    - src: "{{ sync_tmpdir }}/{{ cert_rel_path }}"        dest: "{{ cert_parent_path }}" -    - src: "{{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }}/{{ cert_parent_rel_path }}/ca/cert.crt" +    - src: "{{ sync_tmpdir }}/{{ cert_parent_rel_path }}/ca/cert.crt"        dest: "{{ cert_parent_path }}/ca/cert.crt" -  - local_action: file name={{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }} state=absent +  - local_action: file name={{ sync_tmpdir }} state=absent      run_once: true    roles:      - openshift_node      - os_env_extras +    - os_env_extras_node diff --git a/playbooks/gce/openshift-node/launch.yml b/playbooks/gce/openshift-node/launch.yml index ca2914d8a..73d0478ab 100644 --- a/playbooks/gce/openshift-node/launch.yml +++ b/playbooks/gce/openshift-node/launch.yml @@ -1,4 +1,8 @@  --- +# TODO: when we are ready to go to ansible 1.9+ support only, we can update to +# the gce task to use the disk_auto_delete parameter to avoid having to delete +# the disk as a separate step on termination +  - name: Launch instance(s)    hosts: localhost    connection: local @@ -25,15 +29,17 @@        register: gce      - name: Add new instances public IPs to oo_nodes_to_config -      add_host: "hostname={{ item.name }} ansible_ssh_host={{ item.public_ip }} groupname=oo_nodes_to_config" +      add_host: +        hostname: "{{ item.name }}" +        ansible_ssh_host: "{{ item.public_ip }}" +        groupname: oo_nodes_to_config +        gce_private_ip: "{{ item.private_ip }}"        with_items: gce.instance_data      - name: Wait for ssh        wait_for: "port=22 host={{ item.public_ip }}"        with_items: gce.instance_data -    - debug: var=gce -      - 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 @@ -45,13 +51,3 @@  # Apply the configs, separate so that just the configs can be run by themselves  - include: config.yml - -# Always bounce service to pick up new credentials -#- name: "Restart instances" -#  hosts: oo_nodes_to_config -#  connection: ssh -#  user: root -#  tasks: -#    - debug: var=groups.oo_nodes_to_config -#    - name: Restart OpenShift -#      service: name=openshift-node enabled=yes state=restarted diff --git a/playbooks/gce/openshift-node/terminate.yml b/playbooks/gce/openshift-node/terminate.yml index 9aa8a48c1..7d71dfcab 100644 --- a/playbooks/gce/openshift-node/terminate.yml +++ b/playbooks/gce/openshift-node/terminate.yml @@ -1,17 +1,13 @@ -- name: "populate oo_hosts_to_terminate host group if needed" +--- +- name: Populate oo_nodes_to_terminate host group if needed    hosts: localhost    gather_facts: no    tasks: -    - debug: var=oo_host_group_exp -      - name: Evaluate oo_host_group_exp if it's set -      add_host: "name={{ item }} groups=oo_hosts_to_terminate" +      add_host: "name={{ item }} groups=oo_nodes_to_terminate"        with_items: "{{ oo_host_group_exp | default('') }}"        when: oo_host_group_exp is defined -    - debug: msg="{{ groups['oo_hosts_to_terminate'] }}" - -  - name: Terminate node instances    hosts: localhost    connection: local @@ -23,12 +19,10 @@          pem_file: "{{ gce_pem_file }}"          project_id: "{{ gce_project_id }}"          state: 'absent' -        instance_names: "{{ groups['oo_hosts_to_terminate'] }}" -        disks: "{{ groups['oo_hosts_to_terminate'] }}" +        instance_names: "{{ groups['oo_nodes_to_terminate'] }}" +        disks: "{{ groups['oo_nodes_to_terminate'] }}"        register: gce -    - debug: var=gce -      - name: Remove disks of instances        gce_pd:          service_account_email: "{{ gce_service_account_email }}" diff --git a/playbooks/gce/openshift-node/vars.yml b/playbooks/gce/openshift-node/vars.yml index fb5f4ea42..c196b2fca 100644 --- a/playbooks/gce/openshift-node/vars.yml +++ b/playbooks/gce/openshift-node/vars.yml @@ -1,2 +1,3 @@  ---  openshift_debug_level: 4 +openshift_cluster_id: "{{ cluster_id }}" | 
