快速上手terraform —— 阿里云OSS和ECS的创建

前言

最近在研究terraform,采了一圈坑,记录一下

什么是terraform

terraform 通过代码配置实现物理机等一些资源的分配。简单说就是,写一个配置文件,启动,就能帮你购买一台云的机器,或者说申请到oss的资源,或者是别的什么。具体功能见官网。
https://www.terraform.io/docs/index.html

名词解释:provider你可以把它看做各个厂商对terraform提供的插件,terraform可以调用这些插件从而实现对资源的操作管理。
terraform流程:init -> plan -> apply -> destroy
对应为:初始化,计划验证,实际应用,销毁

最小demo

我将用一个最小的demo来演示它怎么干活的:通过terraform来创建一个阿里云的oss
(以下没有利益相关)只是因为阿里云我有账号而已,其他供应商也有。

我的本地环境:macOS

步骤1 下载相关资源

下载对应的客户端:https://www.terraform.io/downloads.html
下载解压后得到:terraform的客户端,将它复制到 /usr/local/bin 目录下

$ terraform -version
Terraform v0.12.13

验证一下,输出版本正常的话就好了

下载阿里云对应provider:https://releases.hashicorp.com/terraform-provider-alicloud/1.60.0/
我下载的版本为:terraform-provider-alicloud_1.60.0_darwin_amd64.zip

放置到一个你喜欢的目录下,我这边为/Users/LinkinStar/Documents/tf-plugin

步骤2 申请阿里云相关资源

创建你的阿里云账号,这个不多说了。然后需要创建一个ram用户
https://ram.console.aliyun.com/
用户管理 -> 新建用户 -> 保存好AccessKey和Secret

注意!这里还需要对用户进行授权,点击授权给到相关权限就行,我给了全部,方便测试

步骤3 编写文件

随便创建一个工作目录,然后创建一个tf文件main.tf

# Configure the Alicloud Provider
provider "alicloud" {
  access_key = "LTAIaskjfhadsklfhklasdjfhdsakjlfhdask"
  secret_key = "6GPashfjksladfhdjskafhdsklajfdhaljfhajfl"
  region     = "cn-beijing"
}

resource "alicloud_oss_bucket" "bucket-acl" {
  bucket = "bucket-123456654321-acl"
  acl    = "private"
}

其中 access_key 和 secret_key 为你刚才申请ram的信息
bucket 的名称你随便取一个

步骤4 运行命令

init

以下命令均在tf文件当前目录下运行

terraform init -plugin-dir=/Users/LinkinStar/Documents/tf-plugin

注意后面的目录是我们刚才下载的provider的目录
出现 Terraform has been successfully initialized! 为成功

plan

然后使用命令 terraform plan 出现以下信息

  # alicloud_oss_bucket.bucket-acl will be created
  + resource "alicloud_oss_bucket" "bucket-acl" {
      + acl               = "private"
      + bucket            = "bucket-123456654321-acl"
      + creation_date     = (known after apply)
      + extranet_endpoint = (known after apply)
      + force_destroy     = false
      + id                = (known after apply)
      + intranet_endpoint = (known after apply)
      + location          = (known after apply)
      + owner             = (known after apply)
      + storage_class     = "Standard"
    }

Plan: 1 to add, 0 to change, 0 to destroy.

apply

运行命令 terraform apply 过程中需要输出yes确认
出现以下信息就证明成功了:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

你可以到:https://oss.console.aliyun.com/overview
查看OSS是否已经被创建

destroy

最后运行命令 terraform destroy 过程中需要输出yes确认
刚才创建的OSS资源就会被销毁,你可以再在网上刷新一下查看

以上就是通过terraform进行的资源操作,同样的,你可以修改tf文件进行更多资源的操作

对ECS进行操作

# Configure the Alicloud Provider
provider "alicloud" {
  access_key = "LTAIaskjfhadsklfhklasdjfhdsakjlfhdask"
  secret_key = "6GPashfjksladfhdjskafhdsklajfdhaljfhajfl"
  region     = "cn-hangzhou"
}

# Create a new ECS instance for a VPC
resource "alicloud_security_group" "group" {
  name        = "tf_test_foo"
  description = "foo"
  vpc_id      = "${alicloud_vpc.vpc.id}"
}
resource "alicloud_vpc" "vpc" {
  name       = "tf_test_foo"
  cidr_block = "172.16.0.0/12"
}

resource "alicloud_vswitch" "vswitch" {
  vpc_id            = "${alicloud_vpc.vpc.id}"
  cidr_block        = "172.16.0.0/21"
  availability_zone = "cn-hangzhou-i"
} 

resource "alicloud_instance" "instance" {
  availability_zone = "cn-hangzhou-i"
  security_groups   = "${alicloud_security_group.group.*.id}"
  instance_type              = "ecs.t6-c2m1.large"
  system_disk_category       = "cloud_efficiency"
  image_id                   = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
  instance_name              = "test_foo"
  vswitch_id                 = "${alicloud_vswitch.vswitch.id}"
  
  internet_max_bandwidth_out = 0
}
image

需要注意的是你的账户余额必须>100块,否则会提示余额不足,我这边tf里面写的是非常便宜几分钱一个小时的机器,所以问题不大,你要是害怕你可以不测(再说一遍本文没有利益相关)

相关资源总结

provider下载地址:https://releases.hashicorp.com/
provider相关文档:https://www.terraform.io/docs/providers/index.html

坑点

  • 国内的墙导致直接执行init是不可以的,它会去官方拉取provider但是会报错,必须手动下载provider并指定-plugin-dir,呼吸不到外面的新鲜空气有点难受。
  • terraform的文档都是英文的并且provider给到的参数选项不全,不知道该填什么。
  • 阿里云创建的ram用户默认没有权限。
  • 阿里云需要100块?!我充10块钱不行吗?我又花不了那么多,弄得我晚饭都吃不起了。
  • 阿里云很多地区是没有便宜的机器卖的,一直提示我机器没有,很难受。

PS: 以上TF文件均用来测试,所以一些变量没有做抽离,实际使用一些变量如key等会抽离成别的文件统一管理,别被我带跑偏了。

总结

总的来说使用tf对于资源的申请还是非常方便的,一个文件就可以搞定,可以做到随时使用随时销毁,同时也支持多次apply对资源进行更新和操作。它不仅可以对服务器进行操作,还有很多公有云的资源如dns等进行操作,并且现在provider支持的厂商很多。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容

  • Terraform 是一个 IT 基础架构自动化编排工具,它的口号是 "Write, Plan, and crea...
    华阳_3bcf阅读 53,212评论 0 16
  • 你传递出去的能量,终有一天会反馈给你。 5月的偶然相遇,我给你很深的印象,以至于你跟着我加入了早睡早起训练营。还记...
    卡门小姐阅读 322评论 5 3
  • 近来看了《朗读者》感触颇深,从遇见——陪伴——选择每一期的主题都让人感动,使人惊讶于生命的奇妙和美丽。 遇见是一种...
    横梦恒阅读 882评论 0 0
  • 一个人会寂寞 两个人会孤独
    光静阅读 27评论 0 1
  • 若林v阅读 255评论 0 1