Question : Welcome to the terraform challenge series.
In this challenge we will implement a simple LAMP stack using terraform and docker.
Utilize /root/code/terraform-challenges/challenge2 directory to store your Terraform configuration files.
Inspect the requirements in detail by clicking on the icons of the interactive architecture diagram on the right and complete the tasks. Once done click on the Check button to validate your work.
1. Install terraform binary version=1.1.5 on iac-server
2. Docker provider has already been configured using kreuzwerker/docker provider.
provider.tf given at /root/code/terraform-challenges/challenge2php-httpd-image for building docker image with following specifications:Image name:
php-httpd:challengeBuild context:
lamp_stack/php_httpdLabels:
challenge: second
4. Create a terraform resource named mariadb-image for building docker image with following specifications:
Image name:
mariadb:challengeBuild context:
lamp_stack/custom_dbLabels:
challenge: second
5. Define a terraform resource phpmyadmin for docker container with following configurations:
Container Name:
db_dashboardImage Used:
phpmyadmin/phpmyadminHostname:
phpmyadminAttach the container to network
my_networkPublish a container's port(s) to the host:
Hostport:0.0.0.0:8081
containerPort:80Labels:
challenge: secondEstablish link based connectivity between
dbanddb_dashboardcontainers (Deprecated)Explicitly specify a dependency on
mariadbterraform resource
mariadb_volume creating a docker volume with name=mariadb-volumeSolution:
1. Check Terraform version and download the ZIP file and extract it
iac-server $ which terraform iac-server $ iac-server $ curl -L -o /tmp/terraform_1.1.5_linux_amd64.zip https://releases.hashicorp.com/terraform/1.1.5/terraform_1.1.5_linux_amd64.zip % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 17.8M 100 17.8M 0 0 47.3M 0 --:--:-- --:--:-- --:--:-- 47.1M iac-server $ iac-server $ ls /tmp systemd-private-5071cf89ade64486af492fb231f3fc6b-systemd-resolved.service-6WiyzM terraform_1.1.5_linux_amd64.zip iac-server $ iac-server $ unzip -d /usr/local/bin /tmp/terraform_1.1.5_linux_amd64.zip Archive: /tmp/terraform_1.1.5_linux_amd64.zip inflating: /usr/local/bin/terraform iac-server $ iac-server $ which terraform /usr/local/bin/terraform iac-server $ iac-server $ terraform --version Terraform v1.1.5 on linux_amd64 Your version of Terraform is out of date! The latest version is 1.6.6. You can update by downloading from https://www.terraform.io/downloads.html iac-server $ |
kreuzwerker/docker provider.provider.tf iac-server $ ls /root/code/terraform-challenges/challenge2/ lamp_stack provider.tf iac-server $ iac-server $ cat /root/code/terraform-challenges/challenge2/provider.tf terraform { required_providers { docker = { source = "kreuzwerker/docker" version = "2.16.0" } } } provider "docker" {} iac-server $ |
3. Create terraform resources
php-httpd-image , mariadbimage & phpmyadmin for docker container
Created TF files with all the parameters, Kindly clone repo or you can copy from GitLab
git clone https://gitlab.com/nb-tech-support/devops.git
iac-server $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6eebadf066e4 phpmyadmin/phpmyadmin "/docker-entrypoint.…" 23 seconds ago Up 12 seconds 0.0.0.0:8081->80/tcp db_dashboard 61a952f908f8 php-httpd:challenge "docker-php-entrypoi…" 23 seconds ago Up 8 seconds 0.0.0.0:80->80/tcp webserver b9128280a207 mariadb:challenge "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp db iac-server $ |
Happy Learning!!!!
0 Comments