web-dev-qa-db-ja.com

それらを破壊せずにTerraformを使用してEC2インスタンスを再起動する方法

Terraformを使用して作成したAWS EC2インスタンスをどのように停止して再起動できるようにしていますか。それをする方法はありますか?

6
Subbu

たとえば、コメントに制限がありますので、_local-exec_を使用して答えとして投稿する。

AWS-CLIを使用して_aws configure | aws configure --profile test_を既に設定しているとします。

インスタンスを再起動するための完全な例、VPC SG ID、サブネット、およびキー名などの変更

_provider "aws" {
  region              = "us-west-2"
  profile             = "test"
}

resource "aws_instance" "ec2" {
  AMI                         = "AMI-0f2176987ee50226e"
  instance_type               = "t2.micro"
  associate_public_ip_address = false
  subnet_id                   = "subnet-45454566645"
  vpc_security_group_ids      = ["sg-45454545454"]
  key_name                    = "mytest-ec2key"
  tags = {
    Name = "Test EC2 Instance"
  }
}
resource "null_resource" "reboo_instance" {

  provisioner "local-exec" {
    on_failure  = "fail"
    interpreter = ["/bin/bash", "-c"]
    command     = <<EOT
        echo -e "\x1B[31m Warning! Restarting instance having id ${aws_instance.ec2.id}.................. \x1B[0m"
        # aws ec2 reboot-instances --instance-ids ${aws_instance.ec2.id} --profile test
        # To stop instance
        aws ec2 stop-instances --instance-ids ${aws_instance.ec2.id} --profile test
        echo "***************************************Rebooted****************************************************"
     EOT
  }
#   this setting will trigger script every time,change it something needed
  triggers = {
    always_run = "${timestamp()}"
  }


}
_

_terraform apply_を実行する

作成したら、後で再起動したり、電話をかけるだけで停止してください。

_terraform apply -target null_resource.reboo_instance_

ログを見てください

enter image description here

1
Adiii