Skip to main content

Terraform sample project - create an EC2 web instance within AWS cloud

Contents of main project file - mainproject.tf


###############################################################
# A Mini project file to create a single instance using
# variables and paremeters listed in terraform.tfvars file.
# Please make sure that both files have correct extensions and
# live within same directory for terraform to run without any
# additional parameters. A typical execution plan will include
# following commands or steps;
# terraform init 
# terraform plan 
# terraform apply 
# terraform destroy
###############################################################
###############################################################
# Variables used in this script
###############################################################

variable "aws_access_key" {}
variable "aws_secret_key" {}
variable "aws_private_key_path" {}
variable "aws_key_name" {}
variable "aws_instance_ami" {}
variable "aws_region" {}
variable "aws_vpc_security_group_id_1" {}

###############################################################
# Providers list
###############################################################

provider "aws" {
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
region     = "${var.aws_region}"
}

###############################################################
# Resources to implement
###############################################################

resource "aws_instance" "web" {
ami           = "${var.aws_instance_ami}"  
instance_type = "t2.micro"
key_name        = "${var.aws_key_name}"
vpc_security_group_ids = ["${var.aws_vpc_security_group_id_1}"]

connection {
user        = "ec2-user"
private_key = "${file(var.aws_private_key_path)}"
}

provisioner "remote-exec" {
inline = [
"sudo yum update -y",
"sudo yum install httpd -y",
"sudo service httpd start",
"sudo chkconfig httpd on"
]
}
}

###############################################################
# Output data
###############################################################

output "aws_instance_public_dns" {
value = "${aws_instance.web.public_dns}"
}

###############################################################
# End of script
###############################################################

Contents of terraform.tfvars

###############################################################
# Basic Access Parameters and details 
###############################################################
aws_access_key = "AWSACCESSKEYHERE"
aws_secret_key = "AWSSECRETKEYHERE"
aws_private_key_path = "C:\\PATH\\TO\\KEYPAIR.PEM"
aws_key_name = "AWSKEYPAIRNAME"
aws_region = "AWSREGIONNAME"
aws_instance_ami = "AWSAMIID"
aws_vpc_security_group_id_1 = "AWSSECURITYGROUPID"
###############################################################
# End of Basic Access Parameters and details 
###############################################################

Popular posts from this blog

Useful website performance and load testing tools

http://tsung.erlang-projects.org/ http://httpd.apache.org/docs/2.0/programs/ab.html http://phantomjs.org/ https://developers.google.com/speed/pagespeed/ http://servermonitoringhq.com/blog/how_to_quickly_stress_test_a_web_server https://code.google.com/p/httperf/ http://loadimpact.com/ http://www.paessler.com/webstress http://loaduiweb.org/ http://en.wikipedia.org/wiki/Web_server_benchmarking http://en.wikipedia.org/wiki/Load_testing http://www.loadui.org/ http://www.loadtestingtool.com/index.shtml http://www.appdynamics.com/blog/devops/load-testing-tools-explained-the-server-side/

Copy files and folders using SCP with spaces in path

Copying data from one system to other with file or folder names that contain spaces in path can be achieved using this guide. In this case I am copying data from Macbook to Windows 10 computer. In order to copy the data easily it is better to use bash commands. Windows computer can support WSL (Windows subsystem for Linux) and you can run one of few linux distributions to use shell commands. I have Ubuntu set up within my Windows 10 using WSL. If you do not have WSL, you can set it up using my guide here . The copy can be performed in two ways: 1) Using SCP Source (MacOs) path: /home/Users/username/Documents/data extract from 2020/ First of all you add escape sequence to the path so it will become:  /home/Users/me/Documents/data\ extract\ from\ 2020/ . While this works on local system for SCP you'll have to double the escape sequences by replacing \ with \\, as below. Figure out your source computer IP address using "ifconfig" command. Now using scp command on target syst...

VMWare ESXi 6.5 HP Custom Image Upgrade to v6.5U3

I had been escaping the Unhandled Exception error every time I log into my ESXi standalone server running v6.5 on N54L and can't be upgraded to v6.7 due to process compatibility. I have finally found the HP Custom image updated to v6.5U3 which appeared to have the fix built into it. It was quite straightforward update using the l latest 6.5 HP image so as habit I am making notes here for myself and everyone else who may find it useful. First of all I downloaded HP Custom v6.5U3 image  by selecting Offline Bundle. I then placed it in my datastore e.g. ds001. Once copied I ran following command line after I was connected to ESXi using ssh. # esxcli software vib update -d /vmfs/volumes/ds001/VMware-ESXi-6.5.0-Update3-14990892-HPE-preGen9-650.U3.9.6.10.1-Dec2019-depot.zip This command took few seconds or may be minutes but confirmed that updates have been installed and will take effect after reboot. So I rebooted the host and it worked like magic. # reboot I did not place host in main...