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

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

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

目录

什么是 Terraform?

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

  在 RHEL 8 上寻找 Traceroute? 尝试跟踪路径

如果您想知道 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 的关键组件。

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

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

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

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

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

#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 工作。