From ec2255764a0879bb0b1d86fc4336a27d8b0ee8c3 Mon Sep 17 00:00:00 2001
From: jwfang <54740235@qq.com>
Date: Mon, 26 Jun 2017 17:29:12 +0800
Subject: [PATCH] docker_dns_servers_strict to control docker_dns_servers rtrim

---
 inventory/group_vars/all.yml         | 3 +++
 roles/docker/defaults/main.yml       | 2 ++
 roles/docker/tasks/set_facts_dns.yml | 9 +++++++--
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/inventory/group_vars/all.yml b/inventory/group_vars/all.yml
index 6388ca7af..a30055367 100644
--- a/inventory/group_vars/all.yml
+++ b/inventory/group_vars/all.yml
@@ -83,6 +83,9 @@ bin_dir: /usr/local/bin
 ## Please note that overlay2 is only supported on newer kernels
 #docker_storage_options: -s overlay2
 
+# Uncomment this if you have more than 3 nameservers, then we'll only use the first 3.
+#docker_dns_servers_strict: false
+
 ## Default packages to install within the cluster, f.e:
 #kpm_packages:
 #  - name: kube-system/grafana
diff --git a/roles/docker/defaults/main.yml b/roles/docker/defaults/main.yml
index c771953ff..e262d908a 100644
--- a/roles/docker/defaults/main.yml
+++ b/roles/docker/defaults/main.yml
@@ -8,3 +8,5 @@ docker_repo_key_info:
 
 docker_repo_info:
   repos:
+
+docker_dns_servers_strict: yes
diff --git a/roles/docker/tasks/set_facts_dns.yml b/roles/docker/tasks/set_facts_dns.yml
index f17c1bde2..64a09bff2 100644
--- a/roles/docker/tasks/set_facts_dns.yml
+++ b/roles/docker/tasks/set_facts_dns.yml
@@ -52,8 +52,13 @@
 
 - name: check number of nameservers
   fail:
-    msg: "Too many nameservers"
-  when: docker_dns_servers|length > 3
+    msg: "Too many nameservers. You can relax this check by set docker_dns_servers_strict=no and we will only use the first 3."
+  when: docker_dns_servers|length > 3 and docker_dns_servers_strict|bool
+
+- name: rtrim number of nameservers to 3
+  set_fact:
+    docker_dns_servers: "{{ docker_dns_servers[0:3] }}"
+  when: docker_dns_servers|length > 3 and not docker_dns_servers_strict|bool
 
 - name: check number of search domains
   fail:
-- 
GitLab