使用资源配置工具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…
相关文章
相关标签/搜索