*Terraform使用*

使用配置文件来描述需要管理的基础架构,根据配置文件生成一个执行计划,计划描述了要做来达到所需要的状态,然后执行计划来构建描述的基础架构。可以增量的执行计划。

配置文件使用语法:HCL(HashiCorp Configuration Language)

下面会以阿里云创建虚拟机为例,描述一下实际如何使用Terraform来操作阿里云上的基础设施。也可以执行其他诸如更新、删除等操作。

本地电脑环境为linux系统。

1、下载terraform并安装。

官网下载即可,不再赘述

验证:

terraform --version
2、创建配置文件夹

创建文件夹 terraform_test。这里作为terraform的配置文件夹,内部的每一个.tf,.tfvars文件都会被加载。

3、设定provider。

备注:这里为了方便演示,直接把秘钥写在文件里,并不提倡。实际使用时,可以写在环境变量里,更加安全。

进入文件夹,新建 providers.tf文件存放provider的相关数据。

provider "alicloud" {access_key = "xxxxxxxx"secret_key = "xxxxxxxx"region = "cn-shenzhen"
}
# provider这一行表明提供的阿里云的接口
# access_key和secret_key分别是阿里云的ak、sk。在阿里云的账户中可以获取
# region 是管理的区域
3、初始化环境

执行命令 terraform init初始化环境。会自动读取provider,下载对应的包

terraform init
4、编写创建vpc和ecs的tf配置文件

创建文件terraform_network.tf

创建vpc、子网、安全组配置文件内容

resource "alicloud_vpc" "vpc" {vpc_name    = "terraform_test_vpc"cidr_block = "172.16.0.0/12"
}# 上述是指定新建一个 vpc,vpc名是terraform_test_vpc,同时指定了vpc的网段信息resource "alicloud_vswitch" "vsw" {vpc_id       = alicloud_vpc.vpc.idcidr_block     = "172.16.0.0/21"zone_id      = "cn-shenzhen-b"
}resource "alicloud_security_group" "default" {name = "default"vpc_id = alicloud_vpc.vpc.id
}resource "alicloud_security_group_rule" "allow_all_tcp" {type              = "ingress"ip_protocol       = "tcp"nic_type          = "intranet"policy            = "accept"port_range        = "1/65535"priority          = 1security_group_id = alicloud_security_group.default.idcidr_ip           = "0.0.0.0/0"
}

创建文件terraform_ecs.tf

创建ecs虚拟机配置文件内容

resource "alicloud_instance" "instance" {availability_zone = "cn-shenzhen-b"security_groups = alicloud_security_group.default.*.id# series IIIinstance_type        = "ecs.n2.small"system_disk_category = "cloud_efficiency"image_id             = "ubuntu_18_04_64_20G_alibase_20190624.vhd"instance_name        = "terraform_test_ecs"vswitch_id = alicloud_vswitch.vsw.idinternet_max_bandwidth_out =10password = "xxxxxx"
}
5、查看计划
terraform plan

可以看到将会创建的资源以及资源属性。内容过长,不再贴图

6、执行计划
terraform apply

输出内容中会先告诉你将会创建的内容,和查看计划中的输出一致。并询问是否要创建,输入yes创建。

7、查看创建的资源
terraform show
8、删除资源
# 删除安全组default
terraform destroy --target alicloud_security_group.default

通过配置文件删除:

在配置文件中去除对应的资源描述,或者修改声明,terraform是描述性语法。也就是说配置中的内容就是最终结果,会以配置文件中为准。

例如我在配置文件中将 子网vsw 相关的语句注释(用#),再次执行terraform plan,就看到即将删除这个子网(交换机)

再次执行 terraform apply即可删除子网(交换机)

9、*总结和说明*

需要注意HCL描述的都是结果,可以简单地理解为每次apply都会按照当前的配置文件和上一次的状态对比去管理基础设施,让实际存在的基础设施和配置文件中的定义保持一致。

如:第一次创建了10台ECS,之后修改配置文件中,一共有15台ECS。再次执行apply,就会再创建5台ECS出来。

  • terraform init :初始化terraform环境

  • terraform plan:查看计划

  • terraform apply:执行计划

  • terraform show:查看资源状态文件

  • terraform graph:查看资源图

Terraform操作阿里云实例相关推荐

  1. 3月12日云栖精选夜读:操作阿里云Kibana

    2019独角兽企业重金招聘Python工程师标准>>> Elastic公司的"ELK"是目前最火的日志分析三剑客,其中ElasticSearch负责日志的索引,L ...

  2. 一文读懂什么是阿里云OSS,如何使用Java操作阿里云OSS?

    一.什么是阿里云OSS OSS: Object Storage Service 对象存储服务是一种海量.安全.低成本.高可靠的云存储服务,适合存放任意类型的文件.容量和处理能力弹性扩展,多种存储类型供 ...

  3. 云集群搭建-创建阿里云实例

    云集群搭建-创建阿里云实例 从终端打开阿里云 云服务器 ECS 产品 点击 实例-创建新实例 进入购买界面 开始配置新实例 付费模型:不长开机使用,可以选择按量付费 地域:选择离使用地方近的就行 实例 ...

  4. Java实现操作阿里云OSS云存储详解,含配置和完整代码

    最近使用java代码操作阿里云存储,分享给大家 目录 1.OSS云存储配置 2.获取accessKeyId和accessKeySecret 3.编写SpringBoot代码 3.1pom.xml文件引 ...

  5. untubu安装mysql_简单操作阿里云untubu服务器并且配置LAMP环境

    前言 简单操作阿里云untubu服务器并且配置LAMP环境 Linux常用命令 在配置untubu服务器之前,我们得先看几个简单的linux常用的简单命令 sudo以管理员的身份执行命令 查看文件 l ...

  6. 备份阿里云实例-oss-browser

    备份阿里云实例-oss-browser 记录一次公司阿里云服务器快到期了,打算把上面数据备份下来,转移到本地共享盘 登陆阿里云账号 实例很长时间没有登陆密码不记得了,需要重置一下实例密码,然后重启一下 ...

  7. Golang操作阿里云OSS上传文件

    为什么要使用OSS?应用场景是什么? 最近在开发考试系统,里面需要上传课件,课件包括pdf,map等等各种类型的文件,这些文件不能像图片一样,直接上传到项目目录下面,需要单独存放,阿里云就提供了存储方 ...

  8. Golang操作阿里云视频点播服务上传音视频

    刚刚了解了OSS存储,现在需要了解视频点播服务,什么是视频点播服务?为什么需要视频点播服务?OSS存储不是可以直接存储视频吗? 其实我也不很清楚,只是大体上知道视频点播服务是专门云端存储视频的,相比于 ...

  9. java操作阿里云的对象存储OSS

    官网:: 对象存储(Object Storage Service,简称OSS) 以下博客简单介绍连接阿里云的OSS,新建Bucket,删除Bucket,向阿里云的OSS存储中存储单个文件,获取单个文件 ...

  10. 只更新代码,然后发布版本:基于 Serverless Devs 原子化操作阿里云函数计算

    众所周知,随着时间的发展,Serverless 命令行工具也逐渐的玩出了更多的花样,就目前来看,常见的形态有两种,一种是通过 Yaml 来进行资源的描述,另外一种是纯粹的命令行操作,而不依赖这些内容. ...

最新文章

  1. (二)网络安全概论之云安全
  2. Kettle使用_12 CSV文件仅并发运行与复制数量
  3. CCIE-LAB-第四篇-OSPFv2+SHA384+BFD
  4. 2020年前端如何适应大环境,发展的前途与趋势是怎么样的?
  5. How to create a angular2 project process
  6. python函数传递列表_python传递列表作为函数参数
  7. 基于android的个人记账系统,android平台的个人记账系统的设计与实现.docx
  8. 大学生个人网站作业 超简单DIV CSS个人网页成品 简单个人网站作业模板 HTML个人网页设计下载 简约黑白色个人主页
  9. 从软件测试转行做前端,转行软件测试或者前端开发有前途么?
  10. mac iwall 动态桌面引擎
  11. windows win10调节外接显示器亮度
  12. 《三联生活周刊》2017年第26期:3星。终南山隐士现状。
  13. 百度地图API V2.0 离线版本
  14. FPGA:开发环境Vivado的使用
  15. 突然就看懂了《大话西游》
  16. 关于将txt文件中的数据批量添加到excel中,显示不全的问题
  17. python求最小公倍数
  18. java 创建 777 权限的目录
  19. 用粒子群解决有约束的最优解问题
  20. 计算机管理服务修复,电脑提示“部署映像服务和管理工具错误87”的修复步骤...

热门文章

  1. Android采用消息推送实现类似微信视频接听功能
  2. wps-doc文件输出为pdf文件时目录报错“错误!未定义书签”解决方法
  3. python 数据填充
  4. 14Python爬虫---爬虫伪装浏览器
  5. Udacity数据集
  6. 2013年国考行测错题集(省级)
  7. IT 行业的创新 - 创新的迷思 (7-8)
  8. 广东工业大学计算机学院张静,广东工业大学文件.doc
  9. SVD奇异值分解在推荐系统中的应用及实现
  10. 视觉检测系统设计过程中遇到的问题