From e3caff833c9c5e5019ed94f7775c05e426e8336c Mon Sep 17 00:00:00 2001
From: Sergey <s.bondarev@southbridge.ru>
Date: Mon, 18 Jan 2021 10:53:43 +0300
Subject: [PATCH] Add prompt to upgrade node or delay before upgrade (#7168)

* Add prompt to upgrade node or delay before upgrade

* add docs
---
 docs/upgrades.md                            |  5 +++++
 roles/upgrade/pre-upgrade/defaults/main.yml |  3 +++
 roles/upgrade/pre-upgrade/tasks/main.yml    | 15 +++++++++++++++
 3 files changed, 23 insertions(+)

diff --git a/docs/upgrades.md b/docs/upgrades.md
index b42dd69d0..385480576 100644
--- a/docs/upgrades.md
+++ b/docs/upgrades.md
@@ -56,6 +56,11 @@ Client Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0", GitCommi
 Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0+coreos.0", GitCommit:"8031716957d697332f9234ddf85febb07ac6c3e3", GitTreeState:"clean", BuildDate:"2017-03-29T04:33:09Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}
 ```
 
+If you want to manually control the upgrade procedure, you can use the variables `upgrade_node_confirm` or `upgrade_node_pause_seconds`:
+
+`upgrade_node_confirm: true` - waiting to confirmation to upgrade next node
+`upgrade_node_pause_seconds: 60` - pause 60 seconds before upgrade next node
+
 ## Multiple upgrades
 
 :warning: [Do not skip releases when upgrading--upgrade by one tag at a time.](https://github.com/kubernetes-sigs/kubespray/issues/3849#issuecomment-451386515) :warning:
diff --git a/roles/upgrade/pre-upgrade/defaults/main.yml b/roles/upgrade/pre-upgrade/defaults/main.yml
index bb381cbde..0179ebbc6 100644
--- a/roles/upgrade/pre-upgrade/defaults/main.yml
+++ b/roles/upgrade/pre-upgrade/defaults/main.yml
@@ -3,3 +3,6 @@ drain_grace_period: 300
 drain_timeout: 360s
 drain_pod_selector: ""
 drain_nodes: true
+
+upgrade_node_confirm: false
+upgrade_node_pause_seconds: 0
diff --git a/roles/upgrade/pre-upgrade/tasks/main.yml b/roles/upgrade/pre-upgrade/tasks/main.yml
index 5be402f95..18f44470a 100644
--- a/roles/upgrade/pre-upgrade/tasks/main.yml
+++ b/roles/upgrade/pre-upgrade/tasks/main.yml
@@ -1,4 +1,19 @@
 ---
+# Wait for upgrade
+- name: Confirm node upgrade
+  pause:
+    echo: yes
+    prompt: "Ready to upgrade node ?"
+  when:
+    - upgrade_node_confirm
+
+- name: Wait before upgrade node
+  pause:
+    seconds: "{{ upgrade_node_pause_seconds }}"
+  when:
+    - not upgrade_node_confirm
+    - upgrade_node_pause_seconds != 0
+
 # Node Ready: type = ready, status = True
 # Node NotReady: type = ready, status = Unknown
 - name: See if node is in ready state
-- 
GitLab