From f8ad44a99f0386ee662a91ffd23b389c6551c83a Mon Sep 17 00:00:00 2001
From: Vinayaka V Ladwa <vinayakladwa@gmail.com>
Date: Tue, 31 Mar 2020 22:42:40 +0530
Subject: [PATCH] Azure vmss - kubelet: failed to get instance ID from cloud
 provider: instance not found #5824 (#5855)

* kubernetes-sigs-kubespray #5824

Added support nodes which are part of Virtual Machine Scale Sets(VMSS)

* kubernetes-sigs-kubespray #5824

* kubernetes-sigs-kubespray #5824

Added comments and updatetd azure docs.

* kubernetes-sigs-kubespray #5824

Added supported values comments for "azure_vmtype" in azure.yml
---
 docs/azure.md                                                | 4 ++++
 inventory/sample/group_vars/all/azure.yml                    | 2 ++
 roles/kubernetes/node/defaults/main.yml                      | 2 ++
 .../node/tasks/cloud-credentials/azure-credential-check.yml  | 5 +++++
 .../node/templates/cloud-configs/azure-cloud-config.j2       | 1 +
 5 files changed, 14 insertions(+)

diff --git a/docs/azure.md b/docs/azure.md
index 3d9122b97..3aaa27f3a 100644
--- a/docs/azure.md
+++ b/docs/azure.md
@@ -27,6 +27,10 @@ The region your instances are located, can be something like `westeurope` or `we
 
 The name of the resource group your instances are in, can be retrieved via `azure group list`
 
+### azure\_vmtype
+
+The type of the vm. Supported values are `standard` or `vmss`. If vm is type of `Virtal Machines` then value is `standard`. If vm is part of `Virtaul Machine Scale Sets` then value is `vmss`
+
 ### azure\_vnet\_name
 
 The name of the virtual network your instances are in, can be retrieved via `azure network vnet list`
diff --git a/inventory/sample/group_vars/all/azure.yml b/inventory/sample/group_vars/all/azure.yml
index d6ddd6de7..8b0313fde 100644
--- a/inventory/sample/group_vars/all/azure.yml
+++ b/inventory/sample/group_vars/all/azure.yml
@@ -12,3 +12,5 @@
 # azure_vnet_name:
 # azure_vnet_resource_group:
 # azure_route_table_name:
+# supported values are 'standard' or 'vmss'
+# azure_vmtype: standard
diff --git a/roles/kubernetes/node/defaults/main.yml b/roles/kubernetes/node/defaults/main.yml
index 5dc5a8cd3..9ee1f23c8 100644
--- a/roles/kubernetes/node/defaults/main.yml
+++ b/roles/kubernetes/node/defaults/main.yml
@@ -141,6 +141,8 @@ vsphere_public_network: "{{ lookup('env', 'VSPHERE_PUBLIC_NETWORK')|default('')
 # azure_security_group_name:
 # azure_vnet_name:
 # azure_route_table_name:
+# supported values are 'standard' or 'vmss'
+# azure_vmtype: standard
 # Sku of Load Balancer and Public IP. Candidate values are: basic and standard.
 azure_loadbalancer_sku: basic
 # excludes master nodes from standard load balancer.
diff --git a/roles/kubernetes/node/tasks/cloud-credentials/azure-credential-check.yml b/roles/kubernetes/node/tasks/cloud-credentials/azure-credential-check.yml
index 41373eb30..f16a90b79 100644
--- a/roles/kubernetes/node/tasks/cloud-credentials/azure-credential-check.yml
+++ b/roles/kubernetes/node/tasks/cloud-credentials/azure-credential-check.yml
@@ -70,3 +70,8 @@
 - name: "check azure_use_instance_metadata is a bool"
   assert:
     that: azure_use_instance_metadata |type_debug == 'bool'
+
+- name: check azure_vmtype value
+  fail:
+    msg: "azure_vmtype is missing. Supported values are 'standard' or 'vmss'"
+  when: azure_vmtype is not defined or not azure_vmtype
diff --git a/roles/kubernetes/node/templates/cloud-configs/azure-cloud-config.j2 b/roles/kubernetes/node/templates/cloud-configs/azure-cloud-config.j2
index 22377aff9..9def9ea3b 100644
--- a/roles/kubernetes/node/templates/cloud-configs/azure-cloud-config.j2
+++ b/roles/kubernetes/node/templates/cloud-configs/azure-cloud-config.j2
@@ -10,6 +10,7 @@
   "vnetName": "{{ azure_vnet_name }}",
   "vnetResourceGroup": "{{ azure_vnet_resource_group }}",
   "routeTableName": "{{ azure_route_table_name }}",
+  "vmType": "{{ azure_vmtype }}",
 {% if azure_primary_availability_set_name is defined %}
   "primaryAvailabilitySetName": "{{ azure_primary_availability_set_name }}",
 {%endif%}
-- 
GitLab