From 503ab0f72277f38e027e0cf6d7c39086c0611e4a Mon Sep 17 00:00:00 2001
From: Kenichi Omichi <ken1ohmichi@gmail.com>
Date: Tue, 29 Mar 2022 00:11:11 -0700
Subject: [PATCH] Run 0100-dhclient-hooks if dhcpclient is enabled (#8658)

If running Kubespray on static IP environments, a task was failed like:

  TASK [kubernetes/preinstall : Configure dhclient hooks for resolv.conf (RH-only)]
  fatal: [ak8s2]: FAILED! => {
    "changed": false, "checksum": "..",
    "msg": "Destination directory /etc/dhcp/dhclient.d does not exist"}

This adds a check for dhclientconffile for running 0100-dhclient-hooks to
run the task only if dhcpclient is enabled.
---
 roles/kubernetes/preinstall/tasks/0100-dhclient-hooks.yml      | 1 -
 roles/kubernetes/preinstall/tasks/0110-dhclient-hooks-undo.yml | 2 --
 roles/kubernetes/preinstall/tasks/main.yml                     | 2 ++
 3 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/roles/kubernetes/preinstall/tasks/0100-dhclient-hooks.yml b/roles/kubernetes/preinstall/tasks/0100-dhclient-hooks.yml
index f240d0fdf..50a62026d 100644
--- a/roles/kubernetes/preinstall/tasks/0100-dhclient-hooks.yml
+++ b/roles/kubernetes/preinstall/tasks/0100-dhclient-hooks.yml
@@ -13,7 +13,6 @@
     marker: "# Ansible entries {mark}"
     mode: 0644
   notify: Preinstall | propagate resolvconf to k8s components
-  when: dhclientconffile is defined
 
 - name: Configure dhclient hooks for resolv.conf (non-RH)
   template:
diff --git a/roles/kubernetes/preinstall/tasks/0110-dhclient-hooks-undo.yml b/roles/kubernetes/preinstall/tasks/0110-dhclient-hooks-undo.yml
index 0d38571ee..024e39f9f 100644
--- a/roles/kubernetes/preinstall/tasks/0110-dhclient-hooks-undo.yml
+++ b/roles/kubernetes/preinstall/tasks/0110-dhclient-hooks-undo.yml
@@ -9,12 +9,10 @@
     state: absent
     backup: yes
     marker: "# Ansible entries {mark}"
-  when: dhclientconffile is defined
   notify: Preinstall | propagate resolvconf to k8s components
 
 - name: Remove kubespray specific dhclient hook
   file:
     path: "{{ dhclienthookfile }}"
     state: absent
-  when: dhclienthookfile is defined
   notify: Preinstall | propagate resolvconf to k8s components
diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml
index 2429cd1ad..718f36092 100644
--- a/roles/kubernetes/preinstall/tasks/main.yml
+++ b/roles/kubernetes/preinstall/tasks/main.yml
@@ -77,6 +77,7 @@
   when:
     - dns_mode != 'none'
     - resolvconf_mode == 'host_resolvconf'
+    - dhclientconffile is defined
     - not ansible_os_family in ["Flatcar", "Flatcar Container Linux by Kinvolk"]
   tags:
     - bootstrap-os
@@ -86,6 +87,7 @@
   when:
     - dns_mode != 'none'
     - resolvconf_mode != 'host_resolvconf'
+    - dhclientconffile is defined
     - not ansible_os_family in ["Flatcar", "Flatcar Container Linux by Kinvolk"]
   tags:
     - bootstrap-os
-- 
GitLab