介绍
Terraform 是由 HashiCorp 创建的一个开源的基础设施即代码(Infrastructure as Code, IaC)工具。它允许你使用一种高级的配置文件语言来定义和配置数据中心基础设施。
在这个 Lab 中,你将学习如何在 Ubuntu 22.04 系统上安装 Terraform。我们将遵循 HashiCorp 的官方指南,该指南涉及添加 HashiCorp GPG 密钥和官方软件包仓库。这种方法确保你可以使用标准的 apt 包管理器轻松安装和更新 Terraform。
更新系统并安装 gnupg 和 software-properties-common 包
在这一步中,你将更新系统的包列表并安装必要的先决条件包。这是确保你的系统是最新的,并且拥有管理新软件源所需的工具的关键第一步。
首先,更新 apt 包索引。此命令从所有已配置的源下载包信息。
sudo apt-get update
接下来,安装 gnupg、software-properties-common 和 wget。
gnupg用于验证 HashiCorp 仓库的 GPG 签名。software-properties-common提供了用于管理软件源的有用脚本。wget是一个用于从互联网下载文件的工具,我们将用它来获取 GPG 密钥。
执行以下命令来安装这些包:
sudo apt-get install -y gnupg software-properties-common wget
你将看到 apt 下载和安装包及其依赖项的输出。成功的安装将以没有错误信息结束。
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...
Setting up gnupg ([version]) ...
Setting up software-properties-common ([version]) ...
...
现在先决条件已安装,你已准备好添加 HashiCorp GPG 密钥。
使用 wget 和 gpg --dearmor 下载并安装 HashiCorp GPG 密钥
在这一步中,你将下载 HashiCorp GPG 密钥并将其添加到系统的密钥环(keyring)中。此密钥将由 apt 用于验证你从 HashiCorp 仓库下载的包是真实的且未被篡改。
我们将使用一个将 wget、gpg 和 tee 链接起来的单一命令来完成此操作。
wget -O- ...从 URL 下载密钥并将其输出到标准输出(standard output)。gpg --dearmor从标准输入处理密钥,并将其转换为apt所期望的二进制格式。sudo tee ...从标准输入获取二进制密钥,并将其写入文件/usr/share/keyrings/hashicorp-archive-keyring.gpg。我们使用带sudo的tee是因为此目录需要 root 权限才能写入。
安装 HashiCorp 的 GPG 密钥。
wget -O- https://apt.releases.hashicorp.com/gpg \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null
如果命令成功,它将在将密钥写入指定文件的同时,把密钥的二进制内容输出到你的终端。你可能会看到一串不可读的字符;这是正常的。
--[timestamp]-- https://apt.releases.hashicorp.com/gpg
Resolving apt.releases.hashicorp.com (apt.releases.hashicorp.com)... [server IPs]
Connecting to apt.releases.hashicorp.com (apt.releases.hashicorp.com)|[IP]|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: [size] ([size_human]) [binary/octet-stream]
Saving to: 'STDOUT'
- 100%[===================>] [size] --.-KB/s in 0s
[timestamp] ([speed]) - written to stdout [[size]/[size]]
... (binary output from gpg) ...
密钥现在已存储在你的系统上,可供 apt 使用了。
使用 gpg --fingerprint 验证 HashiCorp GPG 密钥指纹
在这一步中,你将验证刚刚下载的 GPG 密钥的指纹(fingerprint)。这是一个重要的安全实践,用于确认你拥有来自 HashiCorp 的正确、官方密钥,而不是恶意密钥。
你可以使用 gpg 命令显示密钥的指纹,并将其指向我们在上一步中创建的密钥环文件。
运行以下命令:
gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint
该命令将显示密钥详情,包括其指纹。
/usr/share/keyrings/hashicorp-archive-keyring.gpg
-------------------------------------------------
pub rsa4096 [creation_date] [SC] [expires: [expiry_date]]
[FINGERPRINT]
uid [ unknown] HashiCorp Security (HashiCorp Package Signing) <security+packaging@hashicorp.com>
sub rsa4096 [creation_date] [S] [expires: [expiry_date]]
你应该验证 pub 密钥指纹是否与 HashiCorp 公布的指纹相匹配。指纹应该是一个 40 个字符的十六进制字符串。由于输出与预期的指纹匹配,你可以确信你拥有正确的密钥。
将 HashiCorp 仓库添加到 apt 源并更新 apt
在这一步中,你将把官方 HashiCorp 仓库添加到系统的 apt 来源(sources)列表中。这会告诉包管理器(package manager)去哪里查找 Terraform 包。
将官方 HashiCorp 仓库添加到你的系统。
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
此命令不应产生任何输出。现在新的仓库已添加,你必须再次更新 apt 包列表,以便它能识别来自 HashiCorp 源的可用包。
sudo apt update
在输出中,你应该会看到一行指示 apt 正在从 https://apt.releases.hashicorp.com 获取包。
Hit:1 http://[mirror]/ubuntu jammy InRelease
Hit:2 http://[mirror]/ubuntu jammy-updates InRelease
Hit:3 http://[mirror]/ubuntu jammy-backports InRelease
Hit:4 http://[mirror]/ubuntu jammy-security InRelease
Get:5 https://apt.releases.hashicorp.com jammy InRelease [[size] kB]
Get:6 https://apt.releases.hashicorp.com jammy/main amd64 Packages [[size] kB]
Fetched [total] kB in [time] ([speed] kB/s)
Reading package lists... Done
你的系统现在已配置为从官方 HashiCorp 仓库安装软件。
使用 apt-get install terraform 安装 Terraform 包
在最后一步中,你将安装 Terraform。在配置好 GPG 密钥和仓库之后,你现在可以使用标准的 apt-get install 命令了。apt 将自动在 HashiCorp 仓库中找到 Terraform 包,验证其签名,并进行安装。
运行以下命令来安装 Terraform:
sudo apt-get install terraform
apt 会向你显示将要安装的包,并请求确认。由于我们处于非交互式环境(non-interactive environment),安装将自动进行。
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
terraform
[upgrade_info]
Need to get [size] MB of archives.
After this operation, [disk_space] MB of additional disk space will be used.
Get:1 https://apt.releases.hashicorp.com jammy/main amd64 terraform amd64 [version]-1 [[size] MB]
...
Setting up terraform ([version]-1) ...
安装完成后,你可以通过检查其版本来验证 Terraform 是否已正确安装。
terraform -v
此命令应打印已安装的 Terraform 版本。
Terraform v[version]
on linux_amd64
恭喜!你已在系统上成功安装了 Terraform。
总结
在此实验(Lab)中,你已通过官方 HashiCorp 包仓库在 Ubuntu 系统上成功安装了 Terraform。
你学会了如何:
- 更新你的系统并安装
gnupg和wget等先决条件包(prerequisite packages)。 - 下载并添加官方 HashiCorp GPG 密钥,以确保包的真实性(authenticity)。
- 验证 GPG 密钥的指纹(fingerprint)作为一种安全措施。
- 将 HashiCorp
apt仓库添加到系统的软件源(software sources)中。 - 使用
apt-get命令安装 Terraform 包。 - 通过检查 Terraform 版本来验证安装。
通过遵循这些步骤,你已经设置了一个干净且易于管理的 Terraform 安装,将来可以使用标准的系统命令轻松进行更新。



