使用資源配置工具terraform在aws上構建基礎架構

雖然能夠直接在aws後臺手動建立服務器等資源,可是這個建立過程重複過程成本比較高,因此能夠把這個服務器資源使用terraform這個工具來管理,就能夠把服務器資源的管理寫到文件中了,服務器資源的管理能夠經過修改文件實現html

terraform支持aws,aliyun,ucloud等服務商,完整的服務商列表參考:www.terraform.io/docs/provid…web

terraform是一個命令行工具,下載地址:www.terraform.io/downloads.h…編程

生成api訪問密鑰

到這個頁面https://console.amazonaws.cn/iam/home?#/users 添加新用戶,訪問類型設置成編程訪問 vim

將用戶添加到Administrators組,這樣這個用戶就有訪問aws資源的權限了

點擊下一步,操做效果以下
這裏記錄下這裏生成的訪問密鑰ID和私有訪問密鑰,terraform經過這個密鑰認證

配置訪問密鑰

把上面獲取到的aws寫入terraform配置文件,好比config.tfapi

provider "aws" {
  access_key = "aws的accesskey"
  secret_key = "aws的secretkey"
  region     = "aws地區代碼"
}
複製代碼

aws代碼列表參考:docs.aws.amazon.com/zh_cn/gener…bash

而後使用這個terraform init命令下載aws插件,操做效果以下 服務器

定義資源

定義vpc

vim vpc.tfapp

resource "aws_vpc" "myvpc" {
  cidr_block = "172.17.0.0/16"
  enable_dns_hostnames = true
  enable_dns_support   = true
  instance_tenancy     = "default"

  tags = {
    Name = "myvpc"
  }
}
複製代碼

使用terraform apply在aws上建立這個資源 負載均衡

能夠看到這個這個vpc已經建立成功了,能夠在aws界面上確認 ide

記下這個vpc的id:vpc-054a32cba12d43efe

定義子網

vim sn.tf

resource "aws_subnet" "mysubnt-b1" {
    vpc_id                  = "vpc-054a32cba12d43efe"
    cidr_block              = "172.17.1.0/24"
    availability_zone       = "cn-northwest-1b"
    map_public_ip_on_launch = false

    tags {
        Name = "mysubnt-b1"
    }
}
複製代碼

查看操做效果

在這個aws界面上確認

記下這個subnet id: subnet-0b3cebdaada76cfac

定義實例

vim ec2.tf

resource "aws_instance" "myinstance" {
  ami           = "ami-0135cb179d33fbe3e"
  instance_type = "t2.medium"

  key_name = "dev"
  subnet_id = "subnet-0b3cebdaada76cfac"
  private_ip = "172.17.1.101"

  tags = {
        Name = "myinstance"
  }
}
複製代碼

一樣能夠在aws網頁上確認

更新資源

好比把上面這個ec2規格修改爲:t2.small vim ec2.tf修改後的ec2.tf以下

resource "aws_instance" "myinstance" {
  ami           = "ami-0135cb179d33fbe3e"
  instance_type = "t2.small"

  key_name = "dev"
  subnet_id = "subnet-0b3cebdaada76cfac"
  private_ip = "172.17.1.101"

  tags = {
        Name = "myinstance"
  }
}
複製代碼

而後使用這個terraform apply命令執行修改

能夠看到terraform已經成功識別到了這個修改

能夠在aws web界面上進行確認

刪除資源

能夠使用命令terraform destroy刪除上面建立的全部資源

操做效果以下

能夠看到資源已經被刪除了

導入資源

這個terraform能夠導入已經存在的資源,參考:www.terraform.io/docs/import…

一些注意的點

  1. 這個terraform是有狀態的,*.state就是保存狀態的文件

還能夠關注的資源以下:

  1. internet網關
  2. nat網關

上面操做後的文件結構以下

這個terraform的配置文件能夠定義變量,參考:www.terraform.io/docs/config…

參考資料

定義負載均衡器參考:www.terraform.io/docs/provid…

  1. www.infoq.cn/article/9-r…
  2. www.terraform.io/docs/provid…
  3. www.terraform.io/docs/provid…
  4. www.terraform.io/docs/provid…
  5. www.terraform.io/downloads.h…
  6. aws.amazon.com/cn/ec2/inst…
  7. www.terraform.io/docs/config…
相關文章
相關標籤/搜索