October 2, 2023

10 OpenTofu Commands

Ryan Fee

OpenTofu (OTF) is a leading infrastructure as code (IaC) tool, enabling DevOps engineers to define and provision infrastructure resources efficiently. It simplifies the process of managing infrastructure by treating it as code. To get started with OpenTofu, you need to know some basic commands. In this blog post, we'll explore ten essential OpenTofu commands that every DevOps engineer should be familiar with.

  • tofu init: before you can start working with OTF in a project directory, you need to initialize it using tofu init. This command downloads the necessary providers and modules defined in your configuration files, ensuring that your environment is properly set up.
  • tofu plan: use tofu plan to generate an execution plan. OTF will analyze your configuration files, compare them to your existing infrastructure (if any), and display a summary of what changes will be made when you apply the configuration. This step helps you understand the impact of your changes before actually making them.
  • tofu apply: once you're satisfied with the execution plan, you can apply your changes using tofu apply. This command creates or updates the resources specified in your configuration files. OTF will prompt you to confirm the changes before proceeding.
  • tofu destroy: if you want to remove the infrastructure you've created, use tofu destroy. It will destroy all resources defined in your configuration files, so be cautious when running this command in a production environment.
  • tofu validate: to check the syntax and validity of your OTF configuration files, run tofu validate. This command helps catch any syntax errors or configuration issues before attempting to apply changes.
  • tofu fmt: maintaining consistent code style is essential in collaborative projects. tofu fmt automatically formats your configuration files according to OTF’s conventions, making them more readable and consistent.
  • tofu state: managing OTF’s state files is crucial for tracking resource state and dependencies. The tofu state command provides various subcommands (e.g., list, show, mv) to interact with and manage the state.
  • tofu import: if you have existing resources that you want to manage with OTF, you can use tofu import to bring them under OTF control. This command helps you define OTF resources based on the existing infrastructure.
  • tofu workspace: allows you to manage multiple environments (e.g., development, staging, production) within the same configuration. tofu workspace lets you create, select, and delete workspaces, making it easier to manage infrastructure for different stages.
  • tofu output: use tofu output to display the values of output variables defined in your OTF configuration. This is especially useful for retrieving information about resources created by OTF, such as IP addresses or DNS names.

These ten basic OTF commands lay the foundation for efficiently managing your infrastructure as code. As you become more familiar with OTF, you'll discover additional commands and advanced features that can further streamline your DevOps workflow. Remember to use these commands cautiously, especially in production environments, and always keep your OTF configurations versioned and well-documented.

Note: While this blog references Terraform, everything mentioned in here also applies to OpenTofu. New to OpenTofu? It is a fork of Terraform 1.5.7 as a result of the license change from MPL to BUSL by HashiCorp. OpenTofu is an open-source alternative to Terraform that is governed by the Linux Foundation. All features available in Terraform 1.5.7 or earlier are also available in OpenTofu. Find out the history of OpenTofu here.

Start using the Terraform platform of the future.

A screenshot of the modules page in the Scalr Platform