summaryrefslogtreecommitdiff
path: root/TerraformCloud/AWS_terraform_ansible_single_vyos_instance-main/Terraform/vyos.tf
diff options
context:
space:
mode:
Diffstat (limited to 'TerraformCloud/AWS_terraform_ansible_single_vyos_instance-main/Terraform/vyos.tf')
-rw-r--r--TerraformCloud/AWS_terraform_ansible_single_vyos_instance-main/Terraform/vyos.tf87
1 files changed, 87 insertions, 0 deletions
diff --git a/TerraformCloud/AWS_terraform_ansible_single_vyos_instance-main/Terraform/vyos.tf b/TerraformCloud/AWS_terraform_ansible_single_vyos_instance-main/Terraform/vyos.tf
new file mode 100644
index 0000000..8940ab5
--- /dev/null
+++ b/TerraformCloud/AWS_terraform_ansible_single_vyos_instance-main/Terraform/vyos.tf
@@ -0,0 +1,87 @@
+terraform {
+ required_providers {
+ aws = {
+ source = "hashicorp/aws"
+ version = "~> 5.0"
+ }
+ }
+}
+
+provider "aws" {
+ access_key = var.access
+ secret_key = var.secret
+ region = var.region
+}
+
+variable "region" {
+ default = "us-east-1"
+ description = "AWS Region"
+}
+
+variable "ami" {
+ default = "ami-**************" # ami image please enter your details
+ description = "Amazon Machine Image ID for VyOS"
+}
+
+variable "type" {
+ default = "t2.micro"
+ description = "Size of VM"
+}
+
+# my resource for VyOS
+
+resource "aws_instance" "myVyOSec2" {
+ ami = var.ami
+ key_name = "mykeyname" # Please enter your details
+ security_groups = ["my_sg"] # Please enter your details
+ instance_type = var.type
+ tags = {
+ name = "VyOS System"
+ }
+}
+
+output "my_IP"{
+value = aws_instance.myVyOSec2.public_ip
+}
+
+
+#IP of aws instance copied to a file ip.txt in local system Terraform
+
+resource "local_file" "ip" {
+ content = aws_instance.myVyOSec2.public_ip
+ filename = "ip.txt"
+}
+
+#connecting to the Ansible control node using SSH connection
+
+resource "null_resource" "SSHconnection1" {
+depends_on = [aws_instance.myVyOSec2]
+connection {
+ type = "ssh"
+ user = "root"
+ password = var.password
+ host = var.host
+}
+#copying the ip.txt file to the Ansible control node from local system
+ provisioner "file" {
+ source = "ip.txt"
+ destination = "/root/aws/ip.txt" # The folder of your Ansible project
+ }
+}
+
+resource "null_resource" "SSHconnection2" {
+depends_on = [aws_instance.myVyOSec2]
+connection {
+ type = "ssh"
+ user = "root"
+ password = var.password
+ host = var.host
+}
+#command to run Ansible playbook on remote Linux OS
+provisioner "remote-exec" {
+ inline = [
+ "cd /root/aws/",
+ "ansible-playbook instance.yml"
+]
+}
+}