我捆绑了多种方法来获取terraform中的azurerm_kubernetes_cluster虚拟机列表,但没有成功。这里有许多可能的元素:https://www.terraform.io/docs/providers/azurerm/d/kubernetes_cluster.html,但其中没有一些元素可以接缝,以获取VM的列表。有办法吗?
答案 0 :(得分:0)
好的,我通过子网找到了方法。要使用这种方法,您需要使用已知的子网通过高级网络创建Kubernetes集群。
第一部分从子网中获取ip_configurations并以丑陋的方式提取网络接口名称。
data "null_data_source" "all_kubernetes_nic_name" {
count = "${length(azurerm_subnet.kubernetes.ip_configurations)}"
inputs {
nic = "${element(split("/", azurerm_subnet.kubernetes.ip_configurations[count.index]), 8)}"
}
}
因为每个kubernetes节点都需要获取IP地址数量,所以我需要在上一个列表中进行区分。
data "null_data_source" "kubernetes_nic_name" {
count = "${length(distinct(data.null_data_source.all_kubernetes_nic_name.*.outputs.nic))}"
inputs {
nic = "${element(distinct(data.null_data_source.all_kubernetes_nic_name.*.outputs.nic), count.index)}"
}
}
然后,很容易获得对kubernetes集群中每个节点的网络接口的准确引用。注意resource_group_name
是直接从群集对象中提取的。
data "azurerm_network_interface" "kubernetes_nic" {
count = "${length(data.null_data_source.kubernetes_nic_name.*.outputs.nic)}"
name = "${data.null_data_source.kubernetes_nic_name.*.outputs.nic[count.index]}"
resource_group_name = "${azurerm_kubernetes_cluster.cluster.node_resource_group}"
}