diff options
| author | Kenny Woodson <kwoodson@redhat.com> | 2015-10-29 11:14:51 -0400 | 
|---|---|---|
| committer | Kenny Woodson <kwoodson@redhat.com> | 2015-10-29 11:14:51 -0400 | 
| commit | 9bbaa824da5e1a049cdec1a6523c3841d713386c (patch) | |
| tree | 93e80f1577ad0f2f5f8931b493c50cd9aa657c77 /playbooks/gce/openshift-cluster | |
| parent | 15df494fb781dd1509854eeb366e981930b52c22 (diff) | |
| parent | 16d1bce0be2f8c3942489630adcb7030aecadc55 (diff) | |
| download | openshift-9bbaa824da5e1a049cdec1a6523c3841d713386c.tar.gz openshift-9bbaa824da5e1a049cdec1a6523c3841d713386c.tar.bz2 openshift-9bbaa824da5e1a049cdec1a6523c3841d713386c.tar.xz openshift-9bbaa824da5e1a049cdec1a6523c3841d713386c.zip  | |
Merge pull request #763 from openshift/master
Merge master into prod.
Diffstat (limited to 'playbooks/gce/openshift-cluster')
| -rw-r--r-- | playbooks/gce/openshift-cluster/config.yml | 41 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/join_node.yml | 49 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/launch.yml | 47 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/list.yml | 4 | ||||
| l--------- | playbooks/gce/openshift-cluster/lookup_plugins | 1 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/tasks/launch_instances.yml | 31 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/terminate.yml | 64 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/update.yml | 4 | ||||
| -rw-r--r-- | playbooks/gce/openshift-cluster/vars.yml | 8 | 
9 files changed, 178 insertions, 71 deletions
diff --git a/playbooks/gce/openshift-cluster/config.yml b/playbooks/gce/openshift-cluster/config.yml index 8c320dbd2..6ca4f7395 100644 --- a/playbooks/gce/openshift-cluster/config.yml +++ b/playbooks/gce/openshift-cluster/config.yml @@ -1,38 +1,29 @@  ---  # TODO: fix firewall related bug with GCE and origin, since GCE is overriding  # /etc/sysconfig/iptables -- name: Populate oo_masters_to_config host group -  hosts: localhost + +- hosts: localhost    gather_facts: no    vars_files:    - vars.yml    tasks: -  - name: Evaluate oo_masters_to_config -    add_host: -      name: "{{ item }}" -      groups: oo_masters_to_config -      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}" -      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups["tag_env-host-type-{{ cluster_id }}-openshift-master"] | default([]) -  - name: Evaluate oo_nodes_to_config -    add_host: -      name: "{{ item }}" -      groups: oo_nodes_to_config -      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}" -      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups["tag_env-host-type-{{ cluster_id }}-openshift-node"] | default([]) -  - name: Evaluate oo_first_master -    add_host: -      name: "{{ groups['tag_env-host-type-' ~ cluster_id ~ '-openshift-master'][0] }}" -      groups: oo_first_master -      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}" -      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    when: "'tag_env-host-type-{{ cluster_id }}-openshift-master' in groups" +  - set_fact: +      g_ssh_user_tmp: "{{ deployment_vars[deployment_type].ssh_user }}" +      g_sudo_tmp: "{{ deployment_vars[deployment_type].sudo }}" +      use_sdn: "{{ do_we_use_openshift_sdn }}" +      sdn_plugin: "{{ sdn_network_plugin }}"  - include: ../../common/openshift-cluster/config.yml    vars: +    g_etcd_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-etcd' }}" +    g_masters_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-master' }}" +    g_nodes_group: "{{ 'tag_env-host-type-' ~ cluster_id ~ '-openshift-node' }}" +    g_ssh_user: "{{ hostvars.localhost.g_ssh_user_tmp }}" +    g_sudo: "{{ hostvars.localhost.g_sudo_tmp }}" +    g_nodeonmaster: true      openshift_cluster_id: "{{ cluster_id }}" -    openshift_debug_level: 4 +    openshift_debug_level: 2      openshift_deployment_type: "{{ deployment_type }}" -    openshift_first_master: "{{ groups.oo_first_master.0 }}"      openshift_hostname: "{{ gce_private_ip }}" +    openshift_use_openshift_sdn: "{{ hostvars.localhost.use_sdn  }}" +    os_sdn_network_plugin_name: "{{ hostvars.localhost.sdn_plugin }}" diff --git a/playbooks/gce/openshift-cluster/join_node.yml b/playbooks/gce/openshift-cluster/join_node.yml new file mode 100644 index 000000000..0dfa3e9d7 --- /dev/null +++ b/playbooks/gce/openshift-cluster/join_node.yml @@ -0,0 +1,49 @@ +--- +- name: Populate oo_hosts_to_update group +  hosts: localhost +  gather_facts: no +  vars_files: +  - vars.yml +  tasks: +  - name: Evaluate oo_hosts_to_update +    add_host: +      name: "{{ node_ip }}" +      groups: oo_hosts_to_update +      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}" +      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" + +- include: ../../common/openshift-cluster/update_repos_and_packages.yml + +- name: Populate oo_masters_to_config host group +  hosts: localhost +  gather_facts: no +  vars_files: +  - vars.yml +  tasks: +  - name: Evaluate oo_nodes_to_config +    add_host: +      name: "{{ node_ip }}" +      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}" +      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" +      groups: oo_nodes_to_config + +  - name: Evaluate oo_first_master +    add_host: +      name: "{{ groups['tag_env-host-type-' ~ cluster_id ~ '-openshift-master'][0] }}" +      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}" +      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" +      groups: oo_first_master +    when: "'tag_env-host-type-{{ cluster_id }}-openshift-master' in groups" + +#- include: config.yml +- include: ../../common/openshift-node/config.yml +  vars: +    openshift_cluster_id: "{{ cluster_id }}" +    openshift_debug_level: 4 +    openshift_deployment_type: "{{ deployment_type }}" +    openshift_hostname: "{{ ansible_default_ipv4.address }}" +    openshift_use_openshift_sdn: true +    openshift_node_labels: "{{ lookup('oo_option', 'openshift_node_labels') }} " +    os_sdn_network_plugin_name: "redhat/openshift-ovs-subnet" +    osn_cluster_dns_domain: "{{ hostvars[groups.oo_first_master.0].openshift.dns.domain }}" +    osn_cluster_dns_ip: "{{ hostvars[groups.oo_first_master.0].openshift.dns.ip }}" diff --git a/playbooks/gce/openshift-cluster/launch.yml b/playbooks/gce/openshift-cluster/launch.yml index 35737f03d..c22b897d5 100644 --- a/playbooks/gce/openshift-cluster/launch.yml +++ b/playbooks/gce/openshift-cluster/launch.yml @@ -15,30 +15,47 @@        instances: "{{ master_names }}"        cluster: "{{ cluster_id }}"        type: "{{ k8s_type }}" +      g_sub_host_type: "default"    - include: ../../common/openshift-cluster/set_node_launch_facts_tasks.yml +    vars: +      type: "compute" +      count: "{{ num_nodes }}"    - include: tasks/launch_instances.yml      vars:        instances: "{{ node_names }}"        cluster: "{{ cluster_id }}"        type: "{{ k8s_type }}" +      g_sub_host_type: "{{ sub_host_type }}" -  - set_fact: -      a_master: "{{ master_names[0] }}" -  - add_host: name={{ a_master }} groups=service_master - -- include: update.yml +  - include: ../../common/openshift-cluster/set_node_launch_facts_tasks.yml +    vars: +      type: "infra" +      count: "{{ num_infra }}" +  - include: tasks/launch_instances.yml +    vars: +      instances: "{{ node_names }}" +      cluster: "{{ cluster_id }}" +      type: "{{ k8s_type }}" +      g_sub_host_type: "{{ sub_host_type }}" -- name: Deploy OpenShift Services -  hosts: service_master -  connection: ssh -  gather_facts: yes -  roles: -  - openshift_registry -  - openshift_router +  - add_host: +      name: "{{ master_names.0 }}" +      groups: service_master +    when: master_names is defined and master_names.0 is defined -- include: ../../common/openshift-cluster/create_services.yml -  vars: -     g_svc_master: "{{ service_master }}" +- include: update.yml +# +#- name: Deploy OpenShift Services +#  hosts: service_master +#  connection: ssh +#  gather_facts: yes +#  roles: +#  - openshift_registry +#  - openshift_router +# +#- include: ../../common/openshift-cluster/create_services.yml +#  vars: +#     g_svc_master: "{{ service_master }}"  - include: list.yml diff --git a/playbooks/gce/openshift-cluster/list.yml b/playbooks/gce/openshift-cluster/list.yml index 5ba0f5a48..53b2b9a5e 100644 --- a/playbooks/gce/openshift-cluster/list.yml +++ b/playbooks/gce/openshift-cluster/list.yml @@ -14,11 +14,11 @@        groups: oo_list_hosts        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups[scratch_group] | default([]) | difference(['localhost']) | difference(groups.status_terminated) +    with_items: groups[scratch_group] | default([], true) | difference(['localhost']) | difference(groups.status_terminated | default([], true))  - name: List instance(s)    hosts: oo_list_hosts    gather_facts: no    tasks:    - debug: -      msg: "public ip:{{ hostvars[inventory_hostname].gce_public_ip }} private ip:{{ hostvars[inventory_hostname].gce_private_ip }}" +      msg: "private ip:{{ hostvars[inventory_hostname].gce_private_ip }}" diff --git a/playbooks/gce/openshift-cluster/lookup_plugins b/playbooks/gce/openshift-cluster/lookup_plugins new file mode 120000 index 000000000..ac79701db --- /dev/null +++ b/playbooks/gce/openshift-cluster/lookup_plugins @@ -0,0 +1 @@ +../../../lookup_plugins
\ No newline at end of file diff --git a/playbooks/gce/openshift-cluster/tasks/launch_instances.yml b/playbooks/gce/openshift-cluster/tasks/launch_instances.yml index 9a9848f05..c428cb465 100644 --- a/playbooks/gce/openshift-cluster/tasks/launch_instances.yml +++ b/playbooks/gce/openshift-cluster/tasks/launch_instances.yml @@ -10,13 +10,33 @@      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') }}" +    zone: "{{ lookup('env', 'zone') }}" +    network: "{{ lookup('env', 'network') }}" +# unsupported in 1.9.+ +    #service_account_permissions: "datastore,logging-write"      tags:        - created-by-{{ lookup('env', 'LOGNAME') |default(cluster, true) }}        - env-{{ cluster }}        - host-type-{{ type }} +      - sub-host-type-{{ g_sub_host_type }}        - env-host-type-{{ cluster }}-openshift-{{ type }} +  when: instances |length > 0    register: gce +- set_fact: +    node_label: +      # There doesn't seem to be a way to get the region directly, so parse it out of the zone. +      region: "{{ gce.zone | regex_replace('^(.*)-.*$', '\\\\1') }}" +      type: "{{ g_sub_host_type }}" +  when: instances |length > 0 and type == "node" + +- set_fact: +    node_label: +      # There doesn't seem to be a way to get the region directly, so parse it out of the zone. +      region: "{{ gce.zone | regex_replace('^(.*)-.*$', '\\\\1') }}" +      type: "{{ type }}" +  when: instances |length > 0 and type != "node" +  - name: Add new instances to groups and set variables needed    add_host:      hostname: "{{ item.name }}" @@ -26,16 +46,17 @@      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 +    openshift_node_labels: "{{ node_label }}" +  with_items: gce.instance_data | default([], true)  - name: Wait for ssh    wait_for: port=22 host={{ item.public_ip }} -  with_items: gce.instance_data +  with_items: gce.instance_data | default([], true)  - name: Wait for user setup    command: "ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null {{ hostvars[item.name].ansible_ssh_user }}@{{ item.public_ip }} echo {{ hostvars[item.name].ansible_ssh_user }} user is setup"    register: result    until: result.rc == 0 -  retries: 20 -  delay: 10 -  with_items: gce.instance_data +  retries: 30 +  delay: 5 +  with_items: gce.instance_data | default([], true) diff --git a/playbooks/gce/openshift-cluster/terminate.yml b/playbooks/gce/openshift-cluster/terminate.yml index abe6a4c95..e20e0a8bc 100644 --- a/playbooks/gce/openshift-cluster/terminate.yml +++ b/playbooks/gce/openshift-cluster/terminate.yml @@ -1,34 +1,58 @@  ---  - name: Terminate instance(s)    hosts: localhost +  connection: local    gather_facts: no    vars_files:    - vars.yml    tasks: -  - set_fact: scratch_group=tag_env-host-type-{{ cluster_id }}-openshift-node +  - set_fact: scratch_group=tag_env-{{ cluster_id }}    - add_host:        name: "{{ item }}" -      groups: oo_nodes_to_terminate +      groups: oo_hosts_to_terminate        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups[scratch_group] | default([]) | difference(['localhost']) | difference(groups.status_terminated) +    with_items: groups[scratch_group] | default([], true) | difference(['localhost']) | difference(groups.status_terminated | default([], true)) -  - set_fact: scratch_group=tag_env-host-type-{{ cluster_id }}-openshift-master -  - add_host: -      name: "{{ item }}" -      groups: oo_masters_to_terminate -      ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}" -      ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups[scratch_group] | default([]) | difference(['localhost']) | difference(groups.status_terminated) +- name: Unsubscribe VMs +  hosts: oo_hosts_to_terminate +  vars_files: +  - vars.yml +  roles: +  - role: rhel_unsubscribe +    when: deployment_type == "enterprise" and +          ansible_distribution == "RedHat" and +          lookup('oo_option', 'rhel_skip_subscription') | default(rhsub_skip, True) | +            default('no', True) | lower in ['no', 'false'] + +- name: Terminate instances(s) +  hosts: localhost +  connection: local +  gather_facts: no +  vars_files: +  - vars.yml +  tasks: -- include: ../openshift-node/terminate.yml -  vars: -    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') }}" +    - name: Terminate instances that were previously launched +      local_action: +        module: gce +        state: 'absent' +        name: "{{ item }}" +        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') }}" +        zone: "{{ lookup('env', 'zone') }}" +      with_items: groups['oo_hosts_to_terminate'] | default([], true) +      when: item is defined -- include: ../openshift-master/terminate.yml -  vars: -    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-node/terminate.yml +#  vars: +#    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: +#    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/update.yml b/playbooks/gce/openshift-cluster/update.yml index 9ebf39a13..8096aa654 100644 --- a/playbooks/gce/openshift-cluster/update.yml +++ b/playbooks/gce/openshift-cluster/update.yml @@ -11,7 +11,9 @@        groups: oo_hosts_to_update        ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"        ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}" -    with_items: groups["tag_env-host-type-{{ cluster_id }}-openshift-master"] | union(groups["tag_env-host-type-{{ cluster_id }}-openshift-node"]) | default([]) +    with_items: (groups["tag_env-host-type-{{ cluster_id }}-openshift-master"] | default([])) +                | union(groups["tag_env-host-type-{{ cluster_id }}-openshift-node"] | default([])) +                | union(groups["tag_env-host-type-{{ cluster_id }}-openshift-etcd"] | default([]))  - include: ../../common/openshift-cluster/update_repos_and_packages.yml diff --git a/playbooks/gce/openshift-cluster/vars.yml b/playbooks/gce/openshift-cluster/vars.yml index ae33083b9..6de007807 100644 --- a/playbooks/gce/openshift-cluster/vars.yml +++ b/playbooks/gce/openshift-cluster/vars.yml @@ -1,8 +1,11 @@  --- +do_we_use_openshift_sdn: true +sdn_network_plugin: redhat/openshift-ovs-subnet  +# os_sdn_network_plugin_name can be ovssubnet or multitenant, see https://docs.openshift.org/latest/architecture/additional_concepts/sdn.html#ovssubnet-plugin-operation  deployment_vars:    origin: -    image: centos-7 -    ssh_user: +    image: preinstalled-slave-50g-v5 +    ssh_user: root      sudo: yes    online:      image: libra-rhel7 @@ -12,4 +15,3 @@ deployment_vars:      image: rhel-7      ssh_user:      sudo: yes -  | 
