Terraform needs to be told which provider to be used in the automation, hence we need to give the provider name with source and version. For Docker, we can use this block of code in your main.tf
Blocks and Resources in Terraform
Terraform block
Task-01
- Create a Terraform script with Blocks and Resources
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 2.21.0"
}
}
}
Note: kreuzwerker/docker, is shorthand for registry.terraform.io/kreuzwerker/docker.
Provider Block
The provider block configures the specified provider, in this case, docker. A provider is a plugin that Terraform uses to create and manage your resources.
provider "docker" {}
Resource
Use resource blocks to define components of your infrastructure. A resource might be a physical or virtual component such as a Docker container, or it can be a logical resource such as a Heroku application.
Resource blocks have two strings before the block: the resource type and the resource name. In this example, the first resource type is docker_image and the name is Nginx.
Task-02
- Create a resource Block for an nginx docker image
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = false
}
- Create a resource Block for running a docker container for nginx
resource "docker_container" "nginx" {
image = docker_image.nginx.latest
name = "tutorial"
ports {
internal = 80
external = 80
}
}
Note: In case Docker is not installed
sudo apt-get install
docker.io
sudo docker ps
sudo chown $USER /var/run/docker.sock
The command terraform init
is used to initialize a Terraform working directory.
terraform init
The terraform plan
command is used to create an execution plan. It analyzes your Terraform configuration and compares it to the current state of your infrastructure to determine what changes need to be made. It doesn't actually apply any changes; it simply outlines what actions Terraform will take when you apply the configuration.
terraform plan
The terraform apply
command is used to apply the changes defined in your Terraform configuration to your infrastructure.
terraform apply
Use the below command to view the docker container that was created:
docker ps
Now, navigate to the public IP to view the nginx welcome page