使用Terraform在ESXI上创建虚拟机

1. 前言

ESXi 是一种用于创建和管理虚拟机(VM)的系统管理程序。然而,手动创建和管理多个虚拟机可能非常耗时且容易出错。Terraform 是一个开源 IaC 工具,可以在 ESXi 中自动创建和管理虚拟机。在本教程中,我们将学习如何使用 Terraform 在 ESXi 中创建多个虚拟机。

2. 为什么使用 Terraform

Terraform 是一种基础设施即代码工具,允许您将基础设施定义为代码,可以在团队成员之间进行版本控制、审查和共享。使用 Terraform,您可以以一致和可复制的方式自动化创建和管理基础设施资源(包括 VM)的过程。Terraform 还提供了一种定义资源之间依赖关系的方法,以便可以按正确的顺序创建资源。

3. 前置条件

VMware ESXi 环境
Terraform 安装在您的本地机器上
Terraform 和 ESXi 的基本知识

4. 创建一个新的 Terraform 配置文件

使用 Terraform 在 ESXi 中创建虚拟机的第一步是创建一个新的 Terraform 配置文件。打开您最喜欢的文本编辑器,创建一个名为“main.tf”的新文件。

5. 配置 vSphere provider

vSphere provider 允许 Terraform 与 ESXi 进行交互。将以下代码添加到 main.tf 文件中

1
2
3
4
5
6
7
provider "vsphere" {
user = "your_vSphere_username"
password = "your_vSphere_password"
vsphere_server = "your_vSphere_server"

allow_unverified_ssl = true
}

记得将“your_vSphere_username”、“your_vSphere_password”和“your_vSpher_server”替换为 vSphere 帐户详细信息。
allow_unverified_ssl: 如何你的 esxi 服务器没有设置 ssl 证书, 这里需要设置为 false.

6. 创建新的虚拟机

将以下代码添加到 main.tf 文件以创建新的虚拟机:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

#Data Sources
data "vsphere_datacenter" "dc" {
name = "LukeLab"
}

data "vsphere_datastore" "datastore" {
name = "datastore1"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}

data "vsphere_resource_pool" "pool" {}

data "vsphere_network" "network" {
name = "VM Network"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}

resource "vsphere_virtual_machine" "example" {
name = "example-vm"
resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
datastore_id = "${data.vsphere_datastore.datastore.id}"
num_cpus = 2
memory = 2048
guest_id = "otherLinux64Guest"
network_interface {
network_id = "${data.vsphere_network.network.id}"
adapter_type = "vmxnet3"
}
disk {
label = "disk0"
size = 20
eagerly_scrub = false
thin_provisioned = true
}

wait_for_guest_net_timeout = 0
wait_for_guest_ip_timeout = 0
}

这里 datastore_id 和 resource_pool_id 采用查询 EXSI 的方式获得
将“example-vm”替换为您要为虚拟机命名的名称,将“VM Network”替换为要将虚拟机连接到的网络名。
由于初始创建 VM 没有安装 vmware tools,所以获取不到 ip 地址, 此处将 wait_for_guest_net_timeout 和 wait_for_guest_ip_timeout 都设置为 0

7. 初始化并应用 Terraform 配置

通过在终端中运行以下命令初始化 Terraform 配置:

1
terraform init

然后,通过运行以下命令应用 Terraform 配置:

1
terraform apply

Terraform 在 ESXi 中创建虚拟机之前,系统将提示您确认更改。键入“yes”,然后按回车键继续。

8. 验证虚拟机是否已创建

Terraform 完成应用配置后,您可以通过登录 vSphere 客户端并导航到“虚拟机”选项卡来验证虚拟机是否是在 ESXi 中创建的。

9. 总结

Terraform 是一个强大的工具,可以极大地简化创建和管理基础设施资源的过程。在本教程中,我们介绍了如何使用 Terraform 在 ESXi 中创建虚拟机。通过以下步骤,您现在应该对如何使用 Terraform 创建基础设施资源有了基本的了解。

10. 参考文档

Creating VM In ESXi Using Terraform: A Step-By-Step Guide

Use terraform to deploy a VM in EXSI