What is WordPress ?

WordPress is a free, open-source website creation platform which requires access to database to store information. Therefore we need database to make WordPress accessible.

What is Amazon RDS ?

Amazon Relational Database Service (Amazon RDS) makes it easy to set up, operate, and scale a relational database in the cloud.

  • Here we will use Amazon RDS as database for WordPress application.

Getting Started

Step 1: Create an AWS EC2 instance.

provider "aws" {
    region = "ap-south-1"
    profile = "default"
}

resource "aws_instance" "wp" {
    ami = "ami-06a0b4e3b7eb7a300"
    key_name = "task-2" 
    instance_type = "t2.micro"


    tags = {
        Name = "Wordpress_db_task3"
          }
No alt text provided for this image

Step 2: Configure the instance with Apache Webserver. Download PHP application name “”WordPress””. As WordPress stores data at the backend in MySQL Database server. Therefore, we need to setup a my SQL server using AWS RDS service using Free Tier.

  • Terraform file which creates EC2 instance with WordPress installed in it. Contains commands which install WordPress application.
resource "aws_instance" "wp" {
    ami = "ami-06a0b4e3b7eb7a300"
    key_name = "task-2" 
    instance_type = "t2.micro"


    tags = {
        Name = "Wordpress_db_task3"
          }


connection {
    type = "ssh"
    user = "ec2-user"
    private_key = file("C:/Users/sujag/Downloads/task-2.pem")
    host = aws_instance.wp.public_ip   
    }


provisioner "remote-exec" {
    inline = [
        "sudo yum install httpd php php-mysqlnd php-json wget -y", 
        "sudo wget https://wordpress.org/latest.tar.gz",
        "tar -xzvf latest.tar.gz",
        "sudo mv wordpress/* /var/www/html/",
        "sudo chown -R apache.apache /var/www/html",
        "sudo setenforce 0",
        "sudo systemctl start httpd"
           ]
       }
}


output "wp_public_ip" {
    value = aws_instance.wp.public_ip
}
  • Terraform file which creates RDS database instance. RDS database instance is of db.t2.micro type and contains username and password as admin and redhat123 respectively stored in the respective variables.
  • You can change it by updating username and password parameter under aws_db_instance resource.
resource "aws_db_instance" "wp_db" {
  depends_on = [
    aws_instance.wp
  ]
  allocated_storage    = 10
  identifier = "wordpress-database"
  engine               = "mysql"
  engine_version       = "5.7"
  instance_class       = "db.t2.micro"
  name                 = "wordpress"
  username             = var.db_username
  password             = var.db_pass
  parameter_group_name = "default.mysql5.7"
  publicly_accessible = true
  skip_final_snapshot  = true
}


output "Endpoint_string" {
  value = aws_db_instance.wp_db.endpoint
}
No alt text provided for this image

Step 3: Provide the endpoint/connection string to the WordPress application to make it work.

The outputs will be known after the whole plan finishes successfully.

No alt text provided for this image

Step 4: Terraform init, plan and apply

No alt text provided for this image
No alt text provided for this image
No alt text provided for this image
No alt text provided for this image
No alt text provided for this image
No alt text provided for this image

RESULTS

No alt text provided for this image
  • Give Database Name – wordpress (Created in RDS instance)
  • Give Username – admin (If you have not changed)
  • Give Password – redhat123 (If you have not changed)
  • Give Database Host – Endpoint of RDS instance
No alt text provided for this image
  • Click on Submit button.
  • Then click Run the installation button.
  • Fill the required details and click on Install WordPress button.
No alt text provided for this image
  • Login using credentials just created.
No alt text provided for this image
  • Hurray – your WordPress application is working.
No alt text provided for this image
  • Now your WordPress application is using Amazon RDS as a backend