RHEL BasedRocky Linux

How To Install Terraform on Rocky Linux 10

Install Terraform on Rocky Linux 10

Infrastructure automation has become a cornerstone of modern IT operations, and Terraform stands at the forefront of this revolution. As an open-source Infrastructure as Code (IaC) tool developed by HashiCorp, Terraform enables system administrators and DevOps engineers to define, provision, and manage infrastructure through declarative configuration files. This comprehensive guide walks through the complete installation process of Terraform on Rocky Linux 10, providing detailed steps, troubleshooting tips, and best practices to get your infrastructure automation journey started.

Rocky Linux 10, a community-driven enterprise operating system, provides an excellent foundation for running Terraform. Its stability, security features, and RHEL compatibility make it an ideal choice for production environments where infrastructure automation is critical.

What is Terraform?

Terraform is HashiCorp’s flagship Infrastructure as Code solution that revolutionizes how teams build and manage technology infrastructure. Unlike traditional manual provisioning methods that require clicking through multiple web consoles or executing numerous commands, Terraform allows you to define your entire infrastructure in human-readable configuration files.

The tool uses HashiCorp Configuration Language (HCL), a declarative language designed specifically for defining infrastructure resources. This approach means you describe what you want your infrastructure to look like, and Terraform figures out how to create it. The software supports hundreds of providers including AWS, Azure, Google Cloud Platform, VMware, and countless other platforms.

One fundamental advantage of Terraform over imperative approaches is its ability to maintain state. Terraform tracks every resource it creates, allowing it to update or destroy infrastructure intelligently without affecting unmanaged resources. This state management capability makes infrastructure changes predictable and safe.

Benefits of Using Terraform

Automation and Efficiency

Terraform dramatically reduces the time required to deploy infrastructure from hours or days to mere minutes. Manual provisioning tasks that involve repetitive clicking and configuration are replaced with a single command execution. This automation eliminates human errors that commonly occur during manual deployments.

Consistency Across Environments

Creating identical infrastructure across development, staging, and production environments becomes trivial with Terraform. The same configuration files can be used across multiple environments, ensuring consistency and reducing environment-specific bugs. Teams no longer struggle with “it works on my machine” problems caused by infrastructure discrepancies.

Version Control and Collaboration

Infrastructure code lives in Git repositories alongside application code, enabling the same collaborative workflows developers use daily. Every infrastructure change is tracked, reviewed, and can be rolled back if needed. Multiple team members can contribute to infrastructure development simultaneously, with merge conflicts resolved just like application code.

Reusability Through Modules

Terraform modules enable teams to create reusable infrastructure components that can be shared across projects and organizations. A well-designed module for a web application stack can be reused dozens of times, dramatically reducing development time for new projects.

Multi-Cloud Flexibility

Organizations avoid vendor lock-in by using Terraform’s provider-agnostic approach. The same tool and workflow manage resources across AWS, Azure, Google Cloud, and on-premises infrastructure. This flexibility provides negotiating power with cloud vendors and enables sophisticated multi-cloud architectures.

Cost Optimization

Infrastructure as Code enables precise control over resource provisioning and deprovisioning. Development and testing environments can be created on-demand and destroyed when not needed, significantly reducing cloud costs. Terraform’s planning feature shows exactly what changes will occur before applying them, preventing costly mistakes.

Documentation and Transparency

Terraform configurations serve as living documentation of your infrastructure. New team members can read configuration files to understand the complete infrastructure setup without navigating through multiple cloud consoles. This transparency improves auditing, compliance, and knowledge transfer.

Prerequisites

Before installing Terraform on Rocky Linux 10, ensure your system meets the following requirements:

  • A fresh or existing Rocky Linux 10 installation (minimal, server, or workstation edition)
  • Root access or a user account with sudo privileges configured
  • Active internet connection for downloading packages and repositories
  • At least 512MB of available RAM (1GB or more recommended for production use)
  • 1 CPU core minimum (2 or more cores recommended)
  • Basic familiarity with Linux command-line operations
  • A text editor installed (nano, vim, or vi are typically pre-installed)
  • Updated system packages to ensure compatibility

These requirements are modest, making Terraform accessible even on small virtual machines or minimal cloud instances.

Step 1: Update Your Rocky Linux 10 System

System updates are crucial before installing new software packages. Updates ensure all existing packages have the latest security patches and bug fixes, reducing the likelihood of conflicts during Terraform installation.

Open your terminal and execute the following command to check for available updates:

sudo dnf check-update

This command queries the configured repositories and displays available package updates without installing them. Review the output to see what updates are pending.

Next, apply all available updates by running:

sudo dnf update -y

The -y flag automatically answers “yes” to all prompts, allowing the update process to complete without interruption. The update process may take several minutes depending on your internet connection speed and the number of packages requiring updates.

If kernel updates are installed, consider rebooting your system to ensure you’re running the latest kernel version:

sudo reboot

After the system restarts, reconnect via SSH or your terminal to proceed with the installation.

Step 2: Install Required Dependencies

Rocky Linux requires specific packages to manage third-party repositories effectively. The dnf-plugins-core package provides essential plugins for the DNF package manager, including the ability to add and manage additional repositories.

Install the required dependencies with this command:

sudo dnf install -y dnf-plugins-core

This package enables the dnf config-manager utility, which you’ll use in the next step to add HashiCorp’s official repository. The installation completes quickly since it’s a small package.

Verify the installation succeeded by checking if the config-manager subcommand is available:

dnf config-manager --help

You should see usage information for the config-manager tool, confirming it’s ready for use.

Step 3: Add HashiCorp Official Repository

HashiCorp maintains official package repositories for RHEL-based distributions, providing the recommended method for installing Terraform. Using the official repository offers several advantages over manual binary downloads: automatic updates through your package manager, GPG signature verification for security, and simplified installation commands.

Add the HashiCorp repository to your Rocky Linux 10 system:

sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

This command downloads the repository configuration file from HashiCorp’s servers and saves it to /etc/yum.repos.d/hashicorp.repo. The repository configuration contains information about package locations, GPG keys for signature verification, and other metadata.

Verify the repository was added successfully:

sudo dnf repolist

Look for “hashicorp” in the output list of enabled repositories. You should see an entry similar to “hashicorp – HashiCorp Stable – x86_64” confirming the repository is active.

Optionally, view the repository configuration:

cat /etc/yum.repos.d/hashicorp.repo

This displays the repository details including the base URL, GPG key location, and enabled status.

Step 4: Install Terraform on Rocky Linux 10

With the HashiCorp repository configured, installing Terraform becomes a straightforward single-command operation. The DNF package manager handles dependency resolution and installation automatically.

Execute the installation command:

sudo dnf install -y terraform

The package manager queries the HashiCorp repository, downloads the Terraform package and any required dependencies, then installs them on your system. The installation typically completes in under a minute, though download time varies based on your internet connection speed.

During installation, you’ll see output indicating package downloads, dependency checks, and installation progress. The process installs the Terraform binary to /usr/bin/terraform, making it available system-wide.

Once installation completes, the terraform command becomes available to all system users.

Step 5: Verify Terraform Installation

Verification confirms Terraform installed correctly and is accessible from your command line. Multiple verification methods ensure complete functionality.

Check the installed Terraform version:

terraform --version

This displays output similar to “Terraform v1.x.x on linux_amd64”, confirming both installation success and the specific version installed. The version number helps you determine compatibility with specific providers and modules.

Display Terraform’s help information:

terraform --help

This command shows all available Terraform commands and their descriptions. Familiarize yourself with these commands as they form the foundation of Terraform operations.

Verify the binary location:

which terraform

This should return /usr/bin/terraform, confirming the binary is in your system PATH. If this command returns nothing, there’s a PATH configuration issue.

Test basic functionality by checking command completion:

terraform -help

The help flag works with or without double dashes, showing Terraform is responding correctly to commands.

Understanding Terraform Command Structure

Terraform operates through a suite of subcommands, each serving specific purposes in the infrastructure management lifecycle. Understanding these commands is essential for effective Terraform use.

Core Commands

terraform init initializes a working directory containing Terraform configuration files. This command downloads provider plugins, initializes backend configuration, and prepares the directory for other Terraform operations. Always run this command first when working with a new configuration.

terraform plan creates an execution plan showing what actions Terraform will take to reach the desired state defined in configuration files. This preview capability prevents surprises by showing exactly what will be created, modified, or destroyed before making any changes.

terraform apply executes the planned actions to create, update, or delete infrastructure resources. This command first displays a plan and requests confirmation before proceeding, providing a safety checkpoint.

terraform destroy removes all resources managed by the current Terraform configuration. Use this command carefully, as it permanently deletes infrastructure.

terraform validate checks configuration files for syntax errors and internal consistency. This lightweight command runs quickly and catches common mistakes before attempting to apply configurations.

terraform fmt automatically formats configuration files according to Terraform style conventions. This ensures consistent formatting across team members and projects.

terraform show displays human-readable output from state files or plan files. Use this to inspect current infrastructure state or review saved plans.

Creating Your First Terraform Configuration

Hands-on practice solidifies your understanding of Terraform concepts. Creating a simple test configuration demonstrates the complete Terraform workflow.

Create a dedicated directory for your test project:

mkdir ~/terraform-test
cd ~/terraform-test

This isolates your test configuration from other projects and keeps your home directory organized.

Create a basic configuration file using your preferred text editor:

nano main.tf

Add the following simple configuration that creates a local file:

terraform {
  required_version = ">= 1.0"
}

resource "local_file" "example" {
  filename = "${path.module}/example.txt"
  content  = "This is a test file created by Terraform on Rocky Linux 10!"
}

output "file_path" {
  value = local_file.example.filename
  description = "Path to the created file"
}

This configuration demonstrates fundamental Terraform concepts: version constraints, resource declarations, and output values. The local_file resource is ideal for testing since it doesn’t require cloud credentials or external services.

Save the file and exit your editor. Your first Terraform configuration is ready.

Initializing Terraform Working Directory

Before Terraform can work with configurations, it must initialize the working directory. Initialization downloads necessary provider plugins and prepares the environment.

Run the initialization command:

terraform init

Terraform performs several actions during initialization. First, it parses your configuration files to identify required providers. In this case, it detects the need for the “local” provider that manages local file resources. Terraform then downloads the latest compatible version of this provider from the Terraform Registry.

The command creates a .terraform directory in your working directory, storing downloaded provider plugins and other initialization data. It also generates a .terraform.lock.hcl file that records provider versions, ensuring consistency across team members and different environments.

Successful initialization displays output like:

Initializing provider plugins...
- Finding latest version of hashicorp/local...
- Installing hashicorp/local v2.x.x...
Terraform has been successfully initialized!

This confirmation message indicates you’re ready to proceed with planning and applying your configuration.

Validating Terraform Configuration

Configuration validation catches syntax errors and logical inconsistencies before attempting to apply changes. This quick check saves time by identifying problems early.

Validate your configuration:

terraform validate

For syntactically correct configurations, Terraform responds with “Success! The configuration is valid”. This confirms your HCL syntax is correct and resource references are valid.

If validation finds problems, it displays detailed error messages indicating the file, line number, and nature of the issue. Common errors include typos in resource names, incorrect attribute references, or missing required arguments.

Validation is fast and resource-free, making it ideal for integration into CI/CD pipelines. Many teams run terraform validate automatically on every code commit to catch errors before code review.

Planning and Applying Your Configuration

With a valid configuration, you’re ready to preview and apply your infrastructure changes.

Generate an execution plan:

terraform plan

Terraform analyzes your configuration, compares it to the current state (none exists yet), and shows what actions it will take. The output displays planned resource creations with a “+” symbol, indicating one local file will be created.

Apply the configuration:

terraform apply

Terraform displays the execution plan again and prompts for confirmation. Type “yes” to proceed. Terraform creates the file and updates its state tracking.

After successful application, check the created file:

cat example.txt

You’ll see the content defined in your configuration, confirming Terraform successfully created the resource.

Best Practices for Using Terraform on Rocky Linux

Keep Terraform Updated

Regularly update Terraform to access new features, provider updates, and security patches. The HashiCorp repository makes updates simple through your package manager:

sudo dnf update terraform

Review release notes before major version upgrades, as they may include breaking changes.

Use Version Control

Store all Terraform configurations in Git repositories. Commit configuration files, but never commit state files or sensitive credentials. Use .gitignore to exclude .terraform/ directories, *.tfstate files, and *.tfvars files containing secrets.

Implement Remote State

For team environments, configure remote state backends like Terraform Cloud, AWS S3, or Azure Blob Storage. Remote state enables collaboration, provides state locking to prevent conflicts, and keeps sensitive state data secure.

Organize Code with Modules

Break complex infrastructures into reusable modules. Modules promote code reuse, simplify testing, and make infrastructure components shareable across teams and projects.

Secure Sensitive Data

Never hardcode credentials or sensitive values in configuration files. Use environment variables, encrypted variable files, or secret management systems like HashiCorp Vault. Terraform’s sensitive variable flag prevents values from appearing in logs and console output.

Regular Backups

Backup state files regularly, even when using remote backends. State files contain critical information about your infrastructure and are difficult to recreate if lost.

Code Review Process

Implement mandatory code reviews for all infrastructure changes. Use terraform plan output in pull requests to show reviewers exactly what changes will occur. This collaborative approach catches errors and spreads infrastructure knowledge across teams.

Common Terraform Use Cases

Cloud Infrastructure Provisioning

Terraform excels at provisioning virtual machines, storage accounts, networks, and load balancers across major cloud providers. Organizations use it to deploy complete application environments with a single command, replacing hours of manual console work.

Multi-Cloud Deployments

Enterprises leverage Terraform to manage infrastructure spanning multiple cloud providers. A single configuration might provision AWS for compute, Azure for databases, and Google Cloud for analytics, creating sophisticated hybrid architectures.

Container Orchestration

Teams use Terraform to provision and configure Kubernetes clusters, Docker hosts, and container registries. This ensures consistent container infrastructure across environments and simplifies cluster lifecycle management.

Network Infrastructure

Network teams automate VPC creation, subnet allocation, security group configuration, and routing table management. Terraform’s ability to manage complex dependencies makes network automation reliable and repeatable.

Database Management

Terraform provisions database servers, configures replication, manages backup policies, and handles database parameter tuning. This ensures database configurations match organizational standards and enables easy environment replication.

CI/CD Pipeline Infrastructure

DevOps teams use Terraform to create and maintain their continuous integration and deployment infrastructure. Jenkins servers, GitHub Actions runners, and artifact repositories are defined as code and version controlled.

Troubleshooting Common Installation Issues

Repository Connection Failures

If adding the HashiCorp repository fails, verify your internet connection and DNS resolution. Test connectivity to HashiCorp’s servers:

curl -I https://rpm.releases.hashicorp.com/

If this fails, check firewall rules and proxy configurations.

GPG Key Verification Errors

GPG key errors during installation indicate signature verification problems. Import the HashiCorp GPG key manually:

sudo rpm --import https://rpm.releases.hashicorp.com/gpg

Then retry the installation.

Package Dependency Conflicts

Dependency conflicts occur when required packages aren’t available or version conflicts exist. Update your system completely before installation:

sudo dnf clean all
sudo dnf update -y

This often resolves dependency issues.

Permission Denied Errors

If you encounter permission errors, verify you’re using sudo for installation commands. Check that your user account has sudo privileges:

sudo -l

This lists available sudo permissions for your account.

PATH Environment Issues

If the terraform command isn’t found after installation, verify it’s in your PATH:

echo $PATH | grep /usr/bin

The output should include /usr/bin where Terraform is installed. If missing, add it to your PATH in ~/.bashrc or ~/.bash_profile.

Repository Metadata Errors

Metadata corruption occasionally causes installation failures. Clean the DNF cache and regenerate metadata:

sudo dnf clean metadata
sudo dnf makecache

Then attempt installation again.

Updating Terraform on Rocky Linux 10

The HashiCorp repository enables seamless Terraform updates through your package manager. This approach ensures you always have access to the latest features and security patches.

Check for available Terraform updates:

sudo dnf check-update terraform

This displays whether a newer version is available without installing it.

Update Terraform to the latest version:

sudo dnf update terraform -y

The package manager downloads and installs the new version, replacing the existing installation. After updating, verify the new version:

terraform version

Note that major version updates may introduce breaking changes. Review HashiCorp’s upgrade guides before updating production systems. Test new versions in development environments first to identify compatibility issues with existing configurations.

For organizations requiring specific Terraform versions, consider pinning the version in your deployment scripts or using version managers like tfenv.

Congratulations! You have successfully installed Terraform. Thanks for using this tutorial for installing Terraform open-source Infrastructure as Code (IaC) tool on your Rocky Linux 10 system. For additional help or useful information, we recommend you check the official Terraform website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button