【Day 19】使用 Terraform 部署 AWS Outposts 资源

tags: 铁人赛 AWS Outposts EC2 Terraform

前情提要

  • 昨天已经完成 EC2 on Outposts 上的部署
  • 今天来尝试如何使用 Terraform 配置 Outposts 上的资源

概述

为什麽要用 Terraform ?

  • 架构即程序码 (IaS)
  • 对於维运人员较为友善的部署方式;使一套心法,贯穿百家武学,如同九阴真经。

基本语法

参考文件

参考 Registry

  • 在 HashiCorp 的网站上,找到 Registry 页面,即可直接参考各家厂商所提供的范本

安装与设定 terraform

  • 考量透过 terraform 进行维运的人员,应该都具备观看文件安装的能力,这边我暂时先附上连结
  • 而为了要整合 AWS 的缘故,所以要先安装 aws cli,并且在 IAM console 中,产生 key 和 secret、在运作指令的环境中,将 key 和 secret 填入 ~/.aws/credentials

分析 与 撰写HCL

  • 先参考 aws 所提供的 run instance HCL
  • 看到大部分的资料,都是起在 region 上的,暂时还找不到起在 outpost 上的范例;所以,要仔细研究文件罗。

撰写 main.tf

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.27"
    }
  }

  required_version = ">= 0.14.9"
}

provider "aws" {
  profile = "default"  # 这边要注意,看你的 ~/.aws/credentials 的设置是哪一组,见下方备注
  region  = "ap-northeast-1"
}

resource "aws_instance" "terraform_start_app_server" {
  ami           = "${var.ami_id}" # Ubuntu
  instance_type = "m5.large"
  subnet_id     = "${var.subnet_outposts_1}"

  tags = {
    Name = "${var.instance_name}"
  }
}

output "instance_id" {
  description = "ID of the EC2 instance"
  value       = aws_instance.terraform_start_app_server.id
}

output "instance_public_ip" {
  description = "Public IP address of the EC2 instance"
  value       = aws_instance.terraform_start_app_server.public_ip
}

  • 备注:本机开发环境上可能会有多组金钥

撰写 variables.tf

  • 将非关规格的 “变数” 抽取出来,因为我这里面有些像是 aws_id 之类的资讯,不想公布给全世界知道,所以千万不要随便将此档案加进版控喔

运作!!

  • 初始化环境
terraform init
  • 整理格式与排版
terraform fmt
  • 验证语法正确性
terraform validate
  • 跑起来
terraform apply
  • 记得要输入 yes
  • 执行结果
  • 测试完之後记得要删除资源⋯⋯痾,资源都删掉了,resource id 就不码了
    terraform destroy
    

结论

  • 欢乐的时光总是过得特别快,当我发现写文件比写架构还花时间的时候,就代表我成功了
  • 稍後再整理整理,把这串内容加到 git repo 里面吧

<<:  【程序】程序设计原则 转生成恶役菜鸟工程师避免 Bad End 的 30 件事 - 15

>>:  稽核表撰写实务

第 59 天 - 学会除了 --help 跟 -h 外,使用 man 查询指令使用方式

操作画面 : 主要 man 可以完全滑鼠,像读书一样分章节阅读 另外今天发现 forloop 1 到...

Day13 NiFi - Variables & Parameters

今天要来讲的主题是 - Variables & Parameters。如果读者们还记得 Fl...

Day-11 priority queue

Priority queue Priority queue和queue一样也有两种形式 : max ...

Day 21 : SVM

原理说明 SVM (support vector machine 支援向量机),是在特徵空间中找到一...

分散式资料库:New SQL

分散式资料库可以依据资料模型及系统架构分类; OLAP(On-Line Analytical Pro...