diff --git a/docs/calico.md b/docs/calico.md
index 04fca73bc192c20c9b06b83564bc3b43654547b5..2d60c96ac5ba01543a676fc8e0d072830689bfca 100644
--- a/docs/calico.md
+++ b/docs/calico.md
@@ -248,3 +248,15 @@ calico_node_extra_envs:
 neutron  security-group-rule-create  --protocol 4  --direction egress  k8s-a0tp4t
 neutron  security-group-rule-create  --protocol 4  --direction igress  k8s-a0tp4t
 ```
+
+### Optional : Use Calico CNI host-local IPAM plugin
+
+Calico currently supports two types of CNI IPAM plugins, `host-local` and `calico-ipam` (default).
+
+To allow Calico to determine the subnet to use from the Kubernetes API based on the `Node.podCIDR` field, enable the following setting.
+
+```yml
+calico_ipam_host_local: true
+```
+
+Refer to Project Calico section [Using host-local IPAM](https://docs.projectcalico.org/reference/cni-plugin/configuration#using-host-local-ipam) for further information.
diff --git a/inventory/sample/group_vars/k8s-cluster/k8s-net-calico.yml b/inventory/sample/group_vars/k8s-cluster/k8s-net-calico.yml
index 003072ab206c2cf1b38f27b8cff2eee58d469d90..2c70129e54a428cc9c234c380502738c457e5f94 100644
--- a/inventory/sample/group_vars/k8s-cluster/k8s-net-calico.yml
+++ b/inventory/sample/group_vars/k8s-cluster/k8s-net-calico.yml
@@ -8,6 +8,9 @@
 # Enables Internet connectivity from containers
 # nat_outgoing: true
 
+# Enables Calico CNI "host-local" IPAM plugin
+# calico_ipam_host_local: true
+
 # add default ippool name
 # calico_pool_name: "default-pool"
 
diff --git a/roles/network_plugin/calico/templates/cni-calico.conflist.j2 b/roles/network_plugin/calico/templates/cni-calico.conflist.j2
index 642f4e944f9a7658276ca9423554f3798d5dcfa5..47c72aafa9138a2dc94972e83b6482efea8a5c3b 100644
--- a/roles/network_plugin/calico/templates/cni-calico.conflist.j2
+++ b/roles/network_plugin/calico/templates/cni-calico.conflist.j2
@@ -9,9 +9,9 @@
 {% else %}
 {% if cloud_provider is defined %}
       "nodename": "{{ calico_kubelet_name.stdout }}",
-    {% else %}
+{% else %}
       "nodename": "{{ calico_baremetal_nodename }}",
-    {% endif %}
+{% endif %}
 {% endif %}
       "type": "calico",
       "log_level": "info",
@@ -22,7 +22,7 @@
       "etcd_key_file": "{{ calico_cert_dir }}/key.pem",
       "etcd_ca_cert_file": "{{ calico_cert_dir }}/ca_cert.crt",
 {% endif %}
-{% if calico_datastore == "kdd" and calico_version is version('v3.6.0', '<') %}
+{% if calico_ipam_host_local is defined %}
       "ipam": {
         "type": "host-local",
         "subnet": "usePodCidr"
@@ -47,18 +47,18 @@
       "policy": {
         "type": "k8s"
       },
-{%- endif %}
+{% endif %}
 {% if calico_mtu is defined and calico_mtu is number %}
       "mtu": {{ calico_mtu }},
-{%- endif %}
+{% endif %}
       "kubernetes": {
         "kubeconfig": "{% if calico_version is version('v3.3.0', '>=') %}__KUBECONFIG_FILEPATH__{% else %}{{ kube_config_dir }}/node-kubeconfig.yaml{% endif %}"
       }
     },
     {
       "type":"portmap",
-      "capabilities":{
-        "portMappings":true
+      "capabilities": {
+        "portMappings": true
       }
     }
   ]