From 676985466835002e747426434fd75581471da949 Mon Sep 17 00:00:00 2001
From: Scott Dodson <sdodson@redhat.com>
Date: Fri, 9 Dec 2016 11:24:59 -0500
Subject: [upgrades] Upgrade etcd by default

---
 .../common/openshift-cluster/upgrades/etcd/backup.yml     | 12 ++++++++----
 playbooks/common/openshift-cluster/upgrades/etcd/main.yml | 15 +++++++++++----
 .../openshift-cluster/upgrades/upgrade_control_plane.yml  |  5 ++---
 3 files changed, 21 insertions(+), 11 deletions(-)

(limited to 'playbooks/common/openshift-cluster/upgrades')

diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml b/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml
index cfb273b82..691961382 100644
--- a/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml
+++ b/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml
@@ -41,11 +41,15 @@
         {{ avail_disk.stdout }} Kb available.
     when: (embedded_etcd | bool) and (etcd_disk_usage.stdout|int > avail_disk.stdout|int)
 
-  # for non containerized etcd is already installed, don't touch it, but for containerized
-  # but not atomic always get the latest
-  - name: Install latest text for containerized but not atomic
+  # TODO - Refactor containerized backup to use etcd_container to backup the data so we don't rely on
+  # the host's etcdctl binary which may be of a different version.
+
+  # for non containerized and non embedded we should have the correct version of etcd installed already
+  # For embedded we need to use the latest because OCP 3.3 uses a version of etcd that can only be backed
+  # up with etcd-3.x
+  - name: Install latest etcd for containerized or embedded
     package: name=etcd state=latest
-    when: not openshift.common.is_atomic | bool and openshift.common.is_containerized
+    when: ( openshift.common.is_containerized and not openshift.common.is_atomic ) or embedded_etcd | bool
 
   - name: Generate etcd backup
     command: >
diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/main.yml b/playbooks/common/openshift-cluster/upgrades/etcd/main.yml
index c67cf282f..62ea1fe48 100644
--- a/playbooks/common/openshift-cluster/upgrades/etcd/main.yml
+++ b/playbooks/common/openshift-cluster/upgrades/etcd/main.yml
@@ -9,24 +9,30 @@
   tags:
   - always
 
+# We use two groups one for hosts we're upgrading which doesn't include embedded etcd
+# The other for backing up which includes the embedded etcd host, there's no need to
+# upgrade embedded etcd that just happens when the master is updated.
 - name: Evaluate additional groups for upgrade
   hosts: localhost
   connection: local
   become: no
   tasks:
-  - fail:
-      msg: 'The etcd upgrade playbook does not support upgrading embedded etcd, simply run the normal playbooks and etcd will be upgraded when your master is updated.'
-    when:  "{{ groups.oo_etcd_to_config | default([]) | length == 0 }}"
   - name: Evaluate etcd_hosts_to_upgrade
     add_host:
       name: "{{ item }}"
-      groups: etcd_hosts_to_upgrade, etcd_hosts_to_backup
+      groups: etcd_hosts_to_upgrade
+    with_items: "{{ groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else [] }}"
+  - name: Evaluate etcd_hosts_to_backup
+    add_host:
+      name: "{{ item }}"
+      groups: etcd_hosts_to_backup
     with_items: "{{ groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else groups.oo_first_master }}"
 
 - name: Backup etcd before upgrading anything
   include: backup.yml
   vars:
     backup_tag: "pre-upgrade-"
+  when: openshift_upgrade_etcd_backup | default(true) | bool
 
 - name: Drop etcdctl profiles
   hosts: etcd_hosts_to_upgrade
@@ -125,3 +131,4 @@
   include: backup.yml
   vars:
     backup_tag: "post-3.0-"
+  when: openshift_upgrade_etcd_backup | default(true) | bool
diff --git a/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml
index dad80796c..474e6311e 100644
--- a/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml
+++ b/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml
@@ -27,9 +27,8 @@
         embedded_etcd: "{{ groups.oo_etcd_to_config | default([]) | length == 0 }}"
         debug_level: "{{ openshift_master_debug_level | default(openshift.common.debug_level | default(2)) }}"
 
-- name: Backup etcd
-  include: ./etcd/backup.yml
-  when: not openshift_upgrade_skip_etcd_backup | default(false) | bool
+- name: Upgrade and backup etcd
+  include: ./etcd/main.yml
 
 - name: Upgrade master packages
   hosts: oo_masters_to_config
-- 
cgit v1.2.3