🌐 AWS and Terraform in Action: Build Your First IIS Web Server on EC2

WHAT TO KNOW - Sep 7 - - Dev Community

<!DOCTYPE html>





AWS and Terraform in Action: Build Your First IIS Web Server on EC2

<br> body {<br> font-family: Arial, sans-serif;<br> margin: 0;<br> padding: 20px;<br> }</p> <div class="highlight"><pre class="highlight plaintext"><code> h1, h2, h3 { color: #333; } code { background-color: #f5f5f5; padding: 2px 5px; font-family: monospace; } pre { background-color: #f5f5f5; padding: 10px; border-radius: 4px; } img { max-width: 100%; height: auto; margin-bottom: 10px; } </code></pre></div> <p>



AWS and Terraform in Action: Build Your First IIS Web Server on EC2



Introduction



In today's dynamic world, deploying and managing web applications efficiently is crucial. Amazon Web Services (AWS) provides a powerful and scalable platform, while Terraform offers a robust infrastructure-as-code (IaC) solution for automating deployments. This article will guide you through building your first IIS web server on EC2 using Terraform, demonstrating the synergy between these two technologies.



This tutorial will equip you with the knowledge to:


  • Understand the benefits of using AWS and Terraform for infrastructure automation.
  • Set up an EC2 instance with Windows Server 2019 and configure IIS.
  • Deploy a simple website and test its accessibility.
  • Leverage Terraform to manage your infrastructure resources.


Prerequisites


Before we start, ensure you have the following:


Key Concepts



Amazon Web Services (AWS)



AWS is a comprehensive cloud computing platform offering a wide range of services, including compute, storage, networking, databases, and more. EC2, the Elastic Compute Cloud, provides virtual servers called instances where you can run your applications.


AWS Architecture Diagram


Terraform



Terraform is an open-source IaC tool that allows you to define your infrastructure as code, using a declarative language called HCL (HashiCorp Configuration Language). You define the desired state of your infrastructure, and Terraform manages the creation, configuration, and update of your resources.


Terraform Architecture Diagram


IIS (Internet Information Services)



IIS is a web server application developed by Microsoft. It is commonly used to host websites, web applications, and web services on Windows operating systems.



Building Your IIS Web Server with Terraform


  1. Create a Terraform Configuration File

Start by creating a new directory for your project and a file named main.tf. This will contain your Terraform configuration.


# main.tf

Configure AWS Provider

provider "aws" {
region = "us-east-1" # Replace with your desired region
}

Create Security Group

resource "aws_security_group" "web_server_sg" {
name = "web_server_sg"
vpc_id = "vpc-xxxxxxxxxxxxx" # Replace with your VPC ID

ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}

egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}

Create EC2 Instance

resource "aws_instance" "web_server" {
ami = "ami-0d5d9d885c9800c6f" # Replace with your desired Windows AMI ID
instance_type = "t2.micro" # Choose an appropriate instance type
key_name = "your_key_pair_name" # Replace with your existing key pair name
security_groups = [aws_security_group.web_server_sg.id]
user_data = <



This configuration does the following:


  • Defines the AWS provider with the desired region.
  • Creates a security group that allows inbound traffic on port 80 (HTTP) from anywhere.
  • Provisions an EC2 instance with a chosen AMI (Amazon Machine Image), instance type, and security group.
  • Includes a user data script that will run on the instance after it starts. This script will configure IIS and other necessary settings.
  • Outputs the public IP address of the instance.

  1. Create a User Data Script

Create a PowerShell script named install_iis.ps1 within the same directory as your Terraform configuration. This script will be used to configure IIS on the instance.


# install_iis.ps1
# Install IIS and create a simple website
Install-WindowsFeature Web-Server
New-Website -Name MyWebsite -Port 80 -PhysicalPath "C:\inetpub\wwwroot"

This script installs the IIS Web Server role on the instance and creates a website named "MyWebsite" in the default wwwroot folder.

  • Initialize Terraform

    Navigate to your project directory in the command line and initialize Terraform.

    
    terraform init
    
    

    This command downloads the necessary plugins and prepares your environment.


  • Plan and Apply Terraform

    Next, run the plan command to see what resources Terraform will create.

    
    terraform plan
    
    

    Review the plan output, and if everything looks correct, apply the changes to create the resources.

    
    terraform apply
    
    

    Terraform will provision your EC2 instance, configure the security group, and execute the user data script, installing IIS.


  • Access Your IIS Web Server

    Once the deployment completes, you can access your web server by opening the public IP address displayed in the Terraform output.

    IIS Default Website

    You should see the default IIS welcome page, indicating that your IIS web server is successfully running.


  • Deploy a Simple Website

    To deploy a simple website, you can create an HTML file named index.html in the wwwroot folder on your EC2 instance. You can achieve this by using tools like WinSCP or SSH and SCP to copy the file over or use the AWS Systems Manager to upload the file.

    
    <!DOCTYPE html>






  • My Website





    Hello from my IIS Web Server!













    After uploading the file, refresh your browser on the public IP address of your EC2 instance. You should see the content of your index.html file displayed.






    Conclusion





    By following this guide, you have successfully built your first IIS web server on EC2 using Terraform. This approach offers several benefits, including:





    • Infrastructure as Code (IaC):

      Terraform's declarative syntax allows you to manage your infrastructure as code, making deployments repeatable and consistent.


    • Automation:

      Terraform automates the creation and configuration of your resources, saving time and effort.


    • Scalability:

      AWS and Terraform provide a scalable platform for your web server, allowing you to adjust resources based on your needs.


    • Version Control:

      You can store your Terraform code in version control systems like Git, enabling you to track changes and roll back to previous configurations.




    This is a basic example. You can further enhance your web server setup by implementing features like:





    • Load Balancing:

      Use AWS Application Load Balancers to distribute traffic across multiple instances for improved performance and reliability.


    • Auto Scaling:

      Configure auto-scaling groups to automatically scale your instances up or down based on demand.


    • Monitoring and Logging:

      Use AWS CloudWatch to monitor your web server's health and performance, and integrate with logging services like CloudTrail.


    • Database Integration:

      Connect your web application to a database like Amazon RDS or DynamoDB.




    Experiment with these advanced features to build more sophisticated and robust web applications on AWS using the power of Terraform.




    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    Terabox Video Player