28 个实时 Terraform 面试问题和答案

这里有 28 个实时 Terraform 面试问题和答案,其中包含面试中经常问到的重要命令的列表和解释。

云技术使用的兴起为 DevOps 领域带来了很多机会。 未来,云技术将成为面试题的共同话题,而云和基础设施即代码的基础知识,IAC 工具将成为 DevOps 角色的必备。

目录

什么是 Terraform?

地形 是每个云工程师使用的最流行的 IAC 工具之一。 它允许我们在人类可读的配置文件中定义云和本地资源,从而以编程方式配置这些资源。 Terraform 最显着的特点是,与大多数 IAC 工具不同,它不限于单个云提供商。 您可以使用 Terraform 在多个云平台上同时运行您的应用程序。

如果您想知道 terraform 支持哪些技术,这里有一个小列表:

要在 DevOps 工程师、云架构师、开发人员或管理员的职业生涯中继续前进,您将不得不面对 Terraform 面试问题。 我们编制了一份顶级 terraform 面试问题列表,可以帮助您增强对 Terraform 的了解。

一般 Terraform 面试问题和答案

#1。 你对 Terraform 的理解是什么?

Terraform 是一个开源 IAC 工具,由 哈希公司. 它用于在多个云平台上创建、更新、删除和版本化您的基础架构。

#2。 为 DevOps 选择 Terraform 的原因是什么?

使用 Terraform 供应基础设施不会留下人为错误的余地,从而提高云和本地基础设施的质量、一致性和效率。 Terraform 使用 HCL 语言,它与 JSON 非常相似,易于学习和使用。 与 Cloudformation for AWS 等云提供商提供的其他 IAC 工具不同,我们可以同时将 Terraform 与多个云平台一起使用。 这避免了学习多种 IAC 工具的需要,并扩大了协作范围。

#3。 Terraform 是如何工作的?

Terraform 使用称为 Terraform 提供程序的插件与云平台上的 API 交互并提供我们的资源。 作为最终用户,terraform 工作流程包含三个步骤。

编写:将基础设施编写为代码。

计划:在应用之前预览 Terraform 将进行的更改。

应用:配置基础架构并应用更改。

#4。 Terraform 云是什么意思?

Terraform Cloud 是针对 Terraform 工作流程优化的远程环境。 它提供了工作空间和状态锁定等功能,允许大团队中的人员进行协作。

#5。 您对 Terraform 中的状态有何理解?

作为 IAC 工具,terraform 应该知道其管理下的配置和基础设施的当前状态。 Terraform 将此信息存储在称为状态文件的文件中。

#6。 Terraform 状态有什么好处?

Terraform 状态允许 Terraform 将现实世界的资源映射到您的配置,跟踪元数据,并在规划复杂基础设施的更改时提高性能。 它是 Terraform 的关键组件。

#7。 您如何理解 Terraform 后端?

Terraform 后端是存储 Terraform 状态快照的平台。 默认情况下,Terraform 使用名为 local 的后端将状态存储为磁盘上的本地文件。 所有其他支持的后端都是某种远程存储服务。

#8。 Terraform 中的提供者是什么?

Terraform 中的提供程序是允许 Terraform 与云提供程序、SaaS 提供程序和其他 API 交互的插件。 例如,如果我们计划使用 Terraform 在 AWS 上配置基础设施,我们将需要在我们的配置文件中声明一个 AWS 提供商。

  如何在 DoorDash 上获得免费食物和送货服务

#9。 谁维护 Terraform 提供者?

提供程序与 Terraform 本身分开分发。 作为 Terraform 用户,任何人都可以开发自己的提供程序。 Hashicorp 明确维护了一些标准提供程序。

#10。 什么是哨兵?

哨兵 是一种策略即代码工具,用于强制执行 Terraform 部署的资源的标准配置。 组织可以将其用于合规性和治理目的。

#11。 您如何理解 Terraform 中的模块?

Terraform 模块是多个资源的标准容器,这些资源一起用于供应和配置资源。 例如,您可以为您的组织创建一个“VPC 模块”,用于配置标准 VPC 和其他资源,如子网和 Internet 网关。 模块可以通过公共模块注册表公开共享,也可以通过私有模块注册表私下共享。

#12。 在 terraform 中使用模块有什么好处?

Terraform 模块允许我们在资源集的顶部创建逻辑抽象。 使用模块允许我们维护和重用资源的标准配置。 它们可以进行版本控制并与您的团队成员共享,以标准方式配置资源。

#13。 什么是私有模块注册表?

私有模块注册表 Terraform Cloud 功能允许我们在整个组织中共享 Terraform 模块。

高级 Terraform 面试问题和答案

#14。 我们如何将数据从一个模块导出到另一个模块?

我们可以通过在模块配置文件中定义输出块来从模块中导出数据。 然后可以将该数据作为参数传输到目标模块。

#13。 如何在 Terraform 中定义依赖关系?

Terraform 具有内置的依赖管理。 Terraform 在资源之间有两种依赖关系——隐式依赖和显式依赖。

顾名思义,隐式依赖关系由 Terraform 自动检测。 这是在“资源 B”中使用“资源 A”的输出时。 Terraform 自动检测到只有在“资源 A”之后才需要创建“资源 B”

在两个资源内部相互依赖而不共享任何输出的情况下,可以指定显式依赖关系。 这可以通过使用配置块中的 depends_on 参数来完成。

#14。 Terraform 中的 Provisioner 是什么?

Provisioner 是 Terraform 资源,用于在资源创建或销毁过程中执行脚本。 Terraform 中有两种类型的 Provisioner:

  • local-exec:在运行 Terraform 的机器上调用脚本。
  • remote- exec:在远程资源创建后调用它的脚本。

Provisioner 仅用作 Terraform 中的最后手段。

#15。 Terraform 中的外部数据块是什么?

就像 local-exec 供应商一样,外部数据块可用于在运行 Terraform 的机器上运行脚本。 Provisioner 和外部数据块的区别在于,外部数据块中的脚本可以返回 JSON 格式的数据,而 Provisioner 不能返回任何输出。 需要注意的是,外部数据块也是最后的手段,如果有更好的选择,则不应使用。

#16。 使用 Terraform 云的两个人如何使用同一个工作目录创建两组不同的基础架构?

通过使用不同的工作区。 这些用户可以在两个单独的工作区中启动 Terraform 运行。 每个工作区都有自己的状态文件,因此只要资源不重叠,两个用户都可以使用相同的代码成功地配置两组不同的基础设施。

#17。 当多个工程师开始使用同一个状态文件部署基础设施时会发生什么?

Terraform 有一个非常重要的特性,叫做“状态锁定”。 此功能可确保在运行期间不对状态文件进行任何更改,并防止状态文件损坏。 请务必注意,并非所有 Terraform 后端都支持状态锁定功能。 如果需要此功能,您应该选择正确的后端。

  如何阻止手机的充电器电缆断裂

#18。 Terraform 中的空资源是什么?

terraform null 资源是一种像标准 terraform 资源块一样运行但不创建任何资源的配置。 这听起来像是一个奇怪且无用的资源,但它在各种情况下都可以用来解决 Terraform 中的限制。

#19。 如何在 Terraform 中使用具有不同配置的相同提供程序?

通过在提供程序块中使用别名参数。

#20。 您有一个没有资源的 Terraform 配置文件。 运行 terraform apply 命令时会发生什么?

Terraform 将销毁所有资源。 使用 terraform apply 命令启动空运行与启动 terraform destroy 运行完全相同。

#21。 如果资源在 terraform 中成功创建但在配置期间失败,会发生什么情况?

这是不太可能发生的情况,但是当这种情况发生时,资源会被标记为被污染,并且可以通过重新启动 terraform 运行来重新创建。

#22。 TF_LOG 变量的哪个值提供了最详细的日志记录?

TRACE 是最详细的,也是 TF_LOG 变量的默认值。

#23。 如何在 Terraform Management 下导入现有资源?

通过使用 terraform 导入命令。

#24。 哪个命令可以用来预览 terraform 执行计划?

terraform plan 命令生成 Terraform 将对基础设施所做的更改的执行计划。

#25。 哪个命令可用于协调 Terraform 状态与实际的现实世界基础设施?

terraform apply -refresh-only 命令用于协调 Terraform 状态与实际的现实世界基础设施。 它是 terraform refresh 命令的新替代方法,现已弃用。

#26。 使用 Terraform Cloud 时,可以使用哪个命令在工作空间之间切换?

terraform workspace select 命令用于选择不同的工作空间。

#27。 哪个命令用于对 terraform 配置文件执行语法验证?

terraform validate 命令用于验证配置是否在语法上有效且内部一致。

#28。 哪个命令用于在 Terraform 云中创建新工作空间?

terraform workspace new 命令用于创建新的工作空间。

其他一些用于技术面试的重要 terraform 命令。

  • terraform init:初始化远程后端; 下载配置中定义的提供程序和远程模块。
  • terraform init -upgrade:用于升级现有下载的提供程序。
  • terraform plan:生成基础设施创建或更新的执行计划。
  • terraform apply:在请求用户确认后创建或更新基础设施。
  • terraform apply –auto-approve:创建或更新基础设施; 跳过用户批准阶段。
  • terraform destroy:在请求用户确认后删除基础设施。
  • terraform destroy –auto-approve:删除基础设施; 跳过用户批准阶段。
  • terraform fmt:扫描当前目录以查找配置文件并根据 HCP 规范样式和格式对其进行格式化。
  • terraform fmt –recursive:扫描当前目录以及配置文件的子目录,并根据 HCP 规范样式和格式对其进行格式化。
  • terraform show:从状态或计划文件中提供人类可读的输出。

我希望以上信息可以帮助您获得 Terraform 工作。