跳至主要内容

命令:apply

tofu apply 命令执行 OpenTofu 计划中提出的操作。

用法

用法:tofu apply [选项] [计划文件]

自动计划模式

当您运行 tofu apply 而不传递保存的计划文件时,OpenTofu 会自动创建一个新的执行计划,就像您运行了 tofu plan 一样,提示您批准该计划,并采取指示的操作。您可以使用所有 计划模式计划选项 来定制 OpenTofu 如何创建计划。

您可以传递 -auto-approve 选项来指示 OpenTofu 在不询问确认的情况下应用计划。

保存的计划模式

当您将 保存的计划文件 传递给 tofu apply 时,OpenTofu 会采取保存的计划中的操作,而不会提示您确认。当在自动化中运行 OpenTofu 时,您可能希望使用此两步工作流程。

使用 tofu show 在应用保存的计划文件之前检查它。

使用保存的计划时,您无法指定任何其他计划模式或选项。这些选项仅影响 OpenTofu 关于采取哪些操作的决定,并且计划文件包含这些决定的最终结果。

计划选项

没有保存的计划文件,tofu apply 支持 tofu plan 提供的所有计划模式和计划选项。

  • 计划模式 这些包括 -destroy,它会创建一个销毁所有远程对象的计划,以及 -refresh-only,它会创建一个更新 OpenTofu 状态和根模块输出值的计划。
  • 计划选项 这些包括指定 OpenTofu 应该替换哪些资源实例、设置 OpenTofu 输入变量等。

应用选项

以下选项会更改 apply 命令执行和报告 apply 操作的方式。

  • -auto-approve - 在应用之前跳过对计划的交互式批准。当您传递以前保存的计划文件时,此选项将被忽略,因为 OpenTofu 认为您传递计划文件即表示批准,因此在这种情况下永远不会提示。

  • -compact-warnings - 以简洁的形式显示任何警告消息,其中仅包含摘要消息,除非警告消息伴随至少一个错误,在这种情况下,警告文本可能对错误提供有用的上下文。

  • -input=false - 禁用 OpenTofu 的所有交互式提示。请注意,这也阻止 OpenTofu 提示您交互式批准计划,因此 OpenTofu 会保守地假定您不希望应用计划,导致操作失败。

  • -json - 启用 机器可读的 JSON UI 输出。这意味着 -input=false,因此配置必须没有未分配的变量值才能继续。要启用此标志,您还必须启用 -auto-approve 标志或指定以前保存的计划。

  • -lock=false - 在操作期间不保持状态锁。如果其他人可能同时对同一工作区运行命令,这将很危险。

  • -lock-timeout=DURATION - 除非使用 -lock=false 禁用锁定,否则指示 OpenTofu 在返回错误之前尝试获取锁一段时间。持续时间语法是数字后跟一个时间单位字母,例如“3s”表示三秒。

  • -no-color - 禁用输出中的终端格式化序列。如果您在 OpenTofu 的输出将由无法解释终端格式化的系统呈现的环境中运行,请使用此选项。

  • -parallelism=n - 当 OpenTofu 遍历图 时,限制并发操作的数量。默认为 10。

  • 所有 规划模式规划选项 适用于 tofu plan - 自定义 OpenTofu 将如何创建计划。仅在您运行 tofu apply 且没有保存的计划文件时可用。

对于使用 local 后端 的配置,tofu apply 也接受旧版选项 -state-state-out-backup

环境变量

您可以使用 环境变量 进一步自定义 apply 命令的行为。例如,TF_STATE_PERSIST_INTERVAL 环境变量允许指定状态持久化之间的间隔。

传递不同的配置目录

如果您的工作流程依赖于覆盖根模块目录,请使用 -chdir 全局选项,它适用于所有命令,并使 OpenTofu 在给定目录中一致地查找所有它通常在当前工作目录中读取或写入的文件。