From 265daf6b65206fc17ad35e682640477d08efbc43 Mon Sep 17 00:00:00 2001
From: Devan Goodwin <dgoodwin@redhat.com>
Date: Mon, 30 May 2016 11:52:48 -0300
Subject: Refactor openshift_version behavior.

Very early in playbooks we must init the openshift_version for each
host. First we determine it for the master, logic now is pushed into the
openshift_docker role which we run only on first master via
openshift_cli. Facts are reloaded leaving us with a first master with
openshift.common.version fact we can then re-use on all other hosts. The
correct version of docker should be installed as well.

We then set openshift_version for all other hosts by re-using the master
fact.
---
 playbooks/common/openshift-master/config.yml | 86 +++-------------------------
 1 file changed, 8 insertions(+), 78 deletions(-)

(limited to 'playbooks/common/openshift-master')

diff --git a/playbooks/common/openshift-master/config.yml b/playbooks/common/openshift-master/config.yml
index 1812ccd1f..c39af9c40 100644
--- a/playbooks/common/openshift-master/config.yml
+++ b/playbooks/common/openshift-master/config.yml
@@ -167,45 +167,10 @@
   - debug: var=openshift.common
   - debug: var=openshift_image_tag
   - debug: var=openshift_release
-  - name: Determine version to configure if containerized and release specified
-    set_fact:
-      openshift_version: "{{ openshift_release }}"
-    when: openshift.common.is_containerized | bool and openshift_release is defined
-# TODO: what should we do for rpm installs and openshift_release here?
-  - name: Determine container version to configure when openshift_image_tag specified
-    set_fact:
-      openshift_version: "{{ openshift_image_tag.split('v',1)[1] }}"
-    when: openshift.common.is_containerized | bool and openshift_image_tag is defined
-  - name: Determine rpm version to configure when openshift_pkg_version specified
-    set_fact:
-      # Expects a leading "-" in inventory, strip it off here, and ignore a trailing release,
-      # openshift_version should always just be "3.2" or "3.2.0.44"
-      openshift_version: "{{ openshift_pkg_version[1:].split('-')[0] }}"
-    when: not openshift.common.is_containerized | bool and openshift_pkg_version is defined
-  - name: Use openshift.common.version fact as version to configure if already installed
-    set_fact:
-      openshift_version: "{{ openshift.common.version }}"
-    when: openshift.common.version is defined
   - debug: var=openshift_version
   roles:
   - openshift_docker
 
-# Re-use pre-existing version fact if present, if not use the first master's
-# openshift_version calculated above.
-- name: Determine openshift_version to configure on remaining masters
-  hosts: oo_masters_to_config[1:]
-  any_errors_fatal: true
-  tasks:
-  - set_fact:
-      openshift_version: "{{ hostvars[groups.oo_first_master.0].openshift_version }}"
-    when: openshift.common.version is not defined
-  - set_fact:
-      openshift_version: "{{ openshift.common.version }}"
-    when: openshift.common.version is defined
-  - debug: var=openshift_version
-  post_tasks:
-  - fail:
-
 - name: Determine if master certificates need to be generated
   hosts: oo_first_master:oo_masters_to_config
   tasks:
@@ -387,54 +352,19 @@
     with_items: openshift_master_named_certificates
     when: named_certs_specified | bool
 
-- name: Configure first master instance
-  hosts: oo_first_master
+- name: Configure masters
+  hosts: oo_masters_to_config
   any_errors_fatal: true
   serial: 1
   vars:
     sync_tmpdir: "{{ hostvars.localhost.g_master_mktemp.stdout }}"
-    openshift_master_ha: "{{ openshift.master.ha }}"
-    openshift_master_count: "{{ openshift.master.master_count }}"
-    openshift_master_session_auth_secrets: "{{ hostvars[groups.oo_first_master.0].openshift.master.session_auth_secrets }}"
-    openshift_master_session_encryption_secrets: "{{ hostvars[groups.oo_first_master.0].openshift.master.session_encryption_secrets }}"
-    openshift_docker_hosted_registry_network: "{{ hostvars[groups.oo_first_master.0].openshift.common.portal_net }}"
-    openshift_no_proxy_internal_hostnames: "{{ hostvars | oo_select_keys(groups['oo_nodes_to_config']
-                                                    | union(groups['oo_masters_to_config'])
-                                                    | union(groups['oo_etcd_to_config'] | default([])))
-                                                | oo_collect('openshift.common.hostname') | default([]) | join (',')
-                                                }}"
-    when: "{{ (openshift_http_proxy is defined or openshift_https_proxy is defined) and
-            openshift_generate_no_proxy_hosts | default(True) | bool }}"
-  pre_tasks:
-  - name: Ensure certificate directory exists
-    file:
-      path: "{{ openshift.common.config_base }}/master"
-      state: directory
-    when: master_certs_missing | bool and 'oo_first_master' not in group_names
-  - name: Unarchive the tarball on the master
-    unarchive:
-      src: "{{ sync_tmpdir }}/{{ master_cert_subdir }}.tgz"
-      dest: "{{ master_cert_config_dir }}"
-    when: master_certs_missing | bool and 'oo_first_master' not in group_names
-  - debug: var=openshift_version
-  roles:
-  - openshift_master
-  - role: nickhammond.logrotate
-  - role: nuage_master
-    when: openshift.common.use_nuage | bool
-  post_tasks:
-  - name: Create group for deployment type
-    group_by: key=oo_masters_deployment_type_{{ openshift.common.deployment_type }}
-    changed_when: False
 
-# TODO: This is a copy paste of the oo_first_master, how do we reconcile the code but change openshift_version?
-- name: Configure remaining master instances
-  hosts: oo_masters_to_config[1:]
-  any_errors_fatal: true
-  serial: 1
-  vars:
-    sync_tmpdir: "{{ hostvars.localhost.g_master_mktemp.stdout }}"
-    openshift_version: "{{ oo_first_master.openshift.common.version.split('-')[0] }}"
+    # Do not pass a version if this is first master. (openshift_docker will sort it out)
+    # For subsequent masters we pass either pre-existing version for the master (if already installed),
+    # otherwise the first master version.
+    openshift_version: "{{ openshift.common.version if openshift.common.version is defined else oo_first_master.openshift.common.version.split('-')[0] }}"
+    when: inventory_hostname != groups.oo_first_master.0
+
     openshift_master_ha: "{{ openshift.master.ha }}"
     openshift_master_count: "{{ openshift.master.master_count }}"
     openshift_master_session_auth_secrets: "{{ hostvars[groups.oo_first_master.0].openshift.master.session_auth_secrets }}"
-- 
cgit v1.2.3