DEV Community

Cover image for Set Up Terraform in your Jenkins Docker Container
Paschal Ogu
Paschal Ogu

Posted on • Originally published at blog.paschalogu.com

 

Set Up Terraform in your Jenkins Docker Container

Organizations can automate their infrastructure as code (IaC) and streamline deployment processes by configuring a continuous integration and continuous development (CI/CD) pipeline to integrate Terraform within their Jenkins Docker container.

Terms:

Jenkins is an automation server widely used to automate various aspects of software development, including building, testing, and deploying applications.

Docker is an open-source platform that enables developers to build, deploy, run, update and manage applications in a container.

Containers are isolated environments that package an application and its dependencies together, allowing it to run consistently across different computing environments.

Terraform is a declarative open-source “Infrastructure as Code” tool, created by HashiCorp that enables the definition of on-prem and cloud resources in human-readable configuration files that can be versioned, reused, and shared as code.

In this artcle, we are going to set up terraform in a jenkins server that runs on a docker container. Let's get into it 🧑🏽‍💻

Step 1: Pull and start the Jenkins Docker container:

The Jenkins server used in this project was installed using the documentation. See more

docker run -d -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 --restart=on-failure jenkins/jenkins:lts-jdk11
Enter fullscreen mode Exit fullscreen mode

Step 2: Install Terraform on your Docker Container

To install terraform on the container, find your Jenkins container ID and log into the container as root user:

docker ps
docker exec -u 0 -it <container_id> /bin/bash
Enter fullscreen mode Exit fullscreen mode

Change Directory to /usr/bin directory

cd /usr/bin
Enter fullscreen mode Exit fullscreen mode

As the root user, install terraform in the docker container: Reference the official documentation for the installation guide.

wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
Enter fullscreen mode Exit fullscreen mode

💡 If sudo and wget above are not found, they can be installed by running the below commands:

apt-get install sudo
apt-get install wget
Enter fullscreen mode Exit fullscreen mode

Confirm that terraform has been installed by running the command to view its version:

terraform --version
Enter fullscreen mode Exit fullscreen mode

Step 3: Install Terraform Plugin

From your Jenkins dashboard navigate to Manage Jenkins >> Manage Plugins and select the Available tab. Locate this plugin by searching for Terraform and clicking on install.

Terraform-plugin

After installation of this plugin, ensure that it is enabled.

Step 4: Configure Terraform Path

Navigate to Jenkins UI and update the path to the terraform installation path:

Dashboard >> Manage Jenkins >> Global Tool Configuration >> Scroll down to Terraform and click on Terraform Installations.

Type in the installation path >> uncheck the install automatically >> apply changes and save.

Terraform-Installation

That's it! You are now ready to write a CI/CD pipeline script to integrate terraform to automate infrastructure as code (IaC) in your Jenkins Docker container.

💡 This article was first published at blog.paschalogu.com. If you found it useful, follow me on Twitter and also on LinkedIn.

Top comments (1)

Collapse
 
Sloan, the sloth mascot
Comment deleted

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.