• 使用 terraform 创建EC2实例


    代码如下:

    provider "aws" {
      profile    = "default"
      region     = "ap-east-1"
    }
    
    resource "aws_instance" "example" {
      ami           = "ami-0e5c29e6c87a9644f"
      instance_type = "t3.medium"
    }
    

    执行计划

    执行plan 查看会创建什么资源

    ➜  ec2 git:(master) ✗ terraform plan
    
    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      # aws_instance.example will be created
      + resource "aws_instance" "example" {
          + ami                          = "ami-0e5c29e6c87a9644f"
          + arn                          = (known after apply)
          + associate_public_ip_address  = (known after apply)
          + availability_zone            = (known after apply)
          + cpu_core_count               = (known after apply)
          + cpu_threads_per_core         = (known after apply)
          + get_password_data            = false
          + host_id                      = (known after apply)
          + id                           = (known after apply)
          + instance_state               = (known after apply)
          + instance_type                = "t3.medium"
          + ipv6_address_count           = (known after apply)
          + ipv6_addresses               = (known after apply)
          + key_name                     = (known after apply)
          + outpost_arn                  = (known after apply)
          + password_data                = (known after apply)
          + placement_group              = (known after apply)
          + primary_network_interface_id = (known after apply)
          + private_dns                  = (known after apply)
          + private_ip                   = (known after apply)
          + public_dns                   = (known after apply)
          + public_ip                    = (known after apply)
          + secondary_private_ips        = (known after apply)
          + security_groups              = (known after apply)
          + source_dest_check            = true
          + subnet_id                    = (known after apply)
          + tenancy                      = (known after apply)
          + vpc_security_group_ids       = (known after apply)
    
          + ebs_block_device {
              + delete_on_termination = (known after apply)
              + device_name           = (known after apply)
              + encrypted             = (known after apply)
              + iops                  = (known after apply)
              + kms_key_id            = (known after apply)
              + snapshot_id           = (known after apply)
              + tags                  = (known after apply)
              + throughput            = (known after apply)
              + volume_id             = (known after apply)
              + volume_size           = (known after apply)
              + volume_type           = (known after apply)
            }
    
          + enclave_options {
              + enabled = (known after apply)
            }
    
          + ephemeral_block_device {
              + device_name  = (known after apply)
              + no_device    = (known after apply)
              + virtual_name = (known after apply)
            }
    
          + metadata_options {
              + http_endpoint               = (known after apply)
              + http_put_response_hop_limit = (known after apply)
              + http_tokens                 = (known after apply)
            }
    
          + network_interface {
              + delete_on_termination = (known after apply)
              + device_index          = (known after apply)
              + network_interface_id  = (known after apply)
            }
    
          + root_block_device {
              + delete_on_termination = (known after apply)
              + device_name           = (known after apply)
              + encrypted             = (known after apply)
              + iops                  = (known after apply)
              + kms_key_id            = (known after apply)
              + tags                  = (known after apply)
              + throughput            = (known after apply)
              + volume_id             = (known after apply)
              + volume_size           = (known after apply)
              + volume_type           = (known after apply)
            }
        }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    
    ------------------------------------------------------------------------
    
    Note: You didn't specify an "-out" parameter to save this plan, so Terraform
    can't guarantee that exactly these actions will be performed if
    "terraform apply" is subsequently run.
    

    创建资源

    创建资源的时候会进行二次确认是否创建资源

    ➜  ec2 git:(master) ✗ terraform apply
    
    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      # aws_instance.example will be created
      + resource "aws_instance" "example" {
          + ami                          = "ami-0e5c29e6c87a9644f"
          + arn                          = (known after apply)
          + associate_public_ip_address  = (known after apply)
          + availability_zone            = (known after apply)
          + cpu_core_count               = (known after apply)
          + cpu_threads_per_core         = (known after apply)
          + get_password_data            = false
          + host_id                      = (known after apply)
          + id                           = (known after apply)
          + instance_state               = (known after apply)
          + instance_type                = "t3.medium"
          + ipv6_address_count           = (known after apply)
          + ipv6_addresses               = (known after apply)
          + key_name                     = (known after apply)
          + outpost_arn                  = (known after apply)
          + password_data                = (known after apply)
          + placement_group              = (known after apply)
          + primary_network_interface_id = (known after apply)
          + private_dns                  = (known after apply)
          + private_ip                   = (known after apply)
          + public_dns                   = (known after apply)
          + public_ip                    = (known after apply)
          + secondary_private_ips        = (known after apply)
          + security_groups              = (known after apply)
          + source_dest_check            = true
          + subnet_id                    = (known after apply)
          + tenancy                      = (known after apply)
          + vpc_security_group_ids       = (known after apply)
    
          + ebs_block_device {
              + delete_on_termination = (known after apply)
              + device_name           = (known after apply)
              + encrypted             = (known after apply)
              + iops                  = (known after apply)
              + kms_key_id            = (known after apply)
              + snapshot_id           = (known after apply)
              + tags                  = (known after apply)
              + throughput            = (known after apply)
              + volume_id             = (known after apply)
              + volume_size           = (known after apply)
              + volume_type           = (known after apply)
            }
    
          + enclave_options {
              + enabled = (known after apply)
            }
    
          + ephemeral_block_device {
              + device_name  = (known after apply)
              + no_device    = (known after apply)
              + virtual_name = (known after apply)
            }
    
          + metadata_options {
              + http_endpoint               = (known after apply)
              + http_put_response_hop_limit = (known after apply)
              + http_tokens                 = (known after apply)
            }
    
          + network_interface {
              + delete_on_termination = (known after apply)
              + device_index          = (known after apply)
              + network_interface_id  = (known after apply)
            }
    
          + root_block_device {
              + delete_on_termination = (known after apply)
              + device_name           = (known after apply)
              + encrypted             = (known after apply)
              + iops                  = (known after apply)
              + kms_key_id            = (known after apply)
              + tags                  = (known after apply)
              + throughput            = (known after apply)
              + volume_id             = (known after apply)
              + volume_size           = (known after apply)
              + volume_type           = (known after apply)
            }
        }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    aws_instance.example: Creating...
    aws_instance.example: Still creating... [10s elapsed]
    aws_instance.example: Still creating... [20s elapsed]
    aws_instance.example: Still creating... [30s elapsed]
    aws_instance.example: Creation complete after 35s [id=i-04f5cf7097b964650]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    
    

    根据上面提示,创建的实例为[id=i-04f5cf7097b964650] 查找如下

    删除资源

    删除资源的时候也会提示二次确认

    ➜  ec2 git:(master) ✗ terraform destroy
    
    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      - destroy
    
    Terraform will perform the following actions:
    
      # aws_instance.example will be destroyed
      - resource "aws_instance" "example" {
          - ami                          = "ami-0e5c29e6c87a9644f" -> null
          - arn                          = "arn:aws:ec2:ap-east-1:543300565893:instance/i-04f5cf7097b964650" -> null
          - associate_public_ip_address  = true -> null
          - availability_zone            = "ap-east-1c" -> null
          - cpu_core_count               = 1 -> null
          - cpu_threads_per_core         = 2 -> null
          - disable_api_termination      = false -> null
          - ebs_optimized                = false -> null
          - get_password_data            = false -> null
          - hibernation                  = false -> null
          - id                           = "i-04f5cf7097b964650" -> null
          - instance_state               = "running" -> null
          - instance_type                = "t3.medium" -> null
          - ipv6_address_count           = 0 -> null
          - ipv6_addresses               = [] -> null
          - monitoring                   = false -> null
          - primary_network_interface_id = "eni-0cf8c4d19b8065d20" -> null
          - private_dns                  = "ip-172-31-42-135.ap-east-1.compute.internal" -> null
          - private_ip                   = "172.31.42.135" -> null
          - public_dns                   = "ec2-18-163-62-79.ap-east-1.compute.amazonaws.com" -> null
          - public_ip                    = "18.163.62.79" -> null
          - secondary_private_ips        = [] -> null
          - security_groups              = [
              - "default",
            ] -> null
          - source_dest_check            = true -> null
          - subnet_id                    = "subnet-c56c4f8f" -> null
          - tenancy                      = "default" -> null
          - vpc_security_group_ids       = [
              - "sg-21b61c48",
            ] -> null
    
          - credit_specification {
              - cpu_credits = "unlimited" -> null
            }
    
          - enclave_options {
              - enabled = false -> null
            }
    
          - metadata_options {
              - http_endpoint               = "enabled" -> null
              - http_put_response_hop_limit = 1 -> null
              - http_tokens                 = "optional" -> null
            }
    
          - root_block_device {
              - delete_on_termination = false -> null
              - device_name           = "/dev/sda1" -> null
              - encrypted             = false -> null
              - iops                  = 100 -> null
              - tags                  = {} -> null
              - throughput            = 0 -> null
              - volume_id             = "vol-014b1524a89989dd5" -> null
              - volume_size           = 8 -> null
              - volume_type           = "gp2" -> null
            }
        }
    
    Plan: 0 to add, 0 to change, 1 to destroy.
    
    Do you really want to destroy all resources?
      Terraform will destroy all your managed infrastructure, as shown above.
      There is no undo. Only 'yes' will be accepted to confirm.
    
      Enter a value: yes
    
    aws_instance.example: Destroying... [id=i-04f5cf7097b964650]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 10s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 20s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 30s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 40s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 50s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 1m0s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 1m10s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 1m20s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 1m30s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 1m40s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 1m50s elapsed]
    aws_instance.example: Still destroying... [id=i-04f5cf7097b964650, 2m0s elapsed]
    aws_instance.example: Destruction complete after 2m0s
    
    Destroy complete! Resources: 1 destroyed.
    
  • 相关阅读:
    redis的5种数据结构和基本操作
    kafka架构、基本术语、消息存储结构
    kafka基本概念和hello world搭建
    kafka安装
    【Android-NetWork】 判断是否连接网络,判断网络连接方式
    【计算机-虚拟wifi】Win7虚拟wifi设置
    【Andriod-AlertDialog控件】 弹出对话框AlertDialog用法
    【Winform-自定义控件】ImageButton 支持鼠标正常、悬停、按下更改图片,支持文本
    【Wince-自定义控件】ImageButton 带图片、文字
    【Winform-自定义控件】一个自定义的进度条
  • 原文地址:https://www.cnblogs.com/syavingcs/p/14525946.html
Copyright © 2020-2023  润新知