WordPress Application using Amazon RDS as a backend !!
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.
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"
??????????}
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.
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
}
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
}
Step 3: Provide the endpoint/connection string to the WordPress application to make it work.
The outputs will be known after the whole plan applies successfully.
Step 4: Terraform init, plan and apply
RESULTS
THANK YOU !