此文已由作者王慎为授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。

一、terraform介绍

随着应用上云的常态化,资源栈动态管理的需求对用户也变得更加急切。资源编排(Resource Orchestration Service, ROS)能够简化云计算资源管理和自动化运维,达到基础设施即代码的目标(Infrastructure as Code, IaC)。使用资源编排,通过一个资源模版管理资源栈方式对用户而言,提升了资源栈的创建、更新和删除了效率。

terraform是业界流行的资源编排工具。通过实现云平台相关的terraform provider插件,terraform支持多云平台下的资源编排。

NCE组目前实现了网易云terraform provider插件,初步支持以下资源的编排能力

  • 云主机、云硬盘、硬盘绑定

  • vpc、子网

  • 路由表,安全组

二、使用示例

注册网易云账号,  https://www.163yun.com/

注册完成后,登陆控制台,在用户中心创建Access Key。记录AccessKey 和Access Secret 用于后续api访问认证。   

安装terraform

访问terraform官网下载terraform安装包 https://www.terraform.io/downloads.htm

下载得到zip包 terraform_0.11.6_darwin_amd64.zip,解压该zip文件后得到terraform可执行文件

根据实际规划拷贝terraform到相应目录,并配置PATH 环境变量

编写资源模版

1.创建一个目录,用于资源编排的工作目录

2.在workspace目录下创建并编写资源模版  vi  example.tf    (资源描述模版文件以.tf为后缀)

在模版文件中编写以下内容:

provider "neteasecloud" {access_key = “your access key"access_secret = “your access secret"
}resource "neteasecloud_nvm" "tf_nvm"{instance_name = "mynvm"description = "simple nvm"image_id =  "aec95c0c-29ff-4172-a8fa-5641163e13a0"spec_type = "nvm.n2.small4"keypairs = [{name = “your key pair name"fingerprint = “your key pair finger print"}]vpc_id        =  "d6d0777e-9748-4eea-b44e-4d6291799473"subnet_id     =  "a572a392-3630-449a-90fd-8d9884ea2fce"security_group_ids = ["4712b273-4a56-4a29-81d6-0db07be5e20d"]associate_public_ip_address = trueinternet_max_bandwidth = 20network_charge_type = "TRAFFIC"personalities = [{path = "/terraform.txt"contents = "terraform injected"}]
}

以上模版文件中 provider语句块定义了访问网易云相关认证信息,access_key 和 access_secret更加用户实际情况填入。

resource 语句块定义了一个资源,neteasecloud_nvm 为资源类型,这里表示网易云主机,tf_nvm为模版中唯一的资源id。resource语句内部定义了资源的相关属性。这里定义了云主机名称、镜像、规格、网络资源等基本信息,并为其分配的公网ip,指定了公网带宽和计费类型,最后向主机注入一条用户自定义数据。

执行资源编排流程

1.初始化工作空间

下载网易云terrraform provider插件,下载得到插件terraform-provider-neteasecloud

将terraform-provider-neteasecloud 放置在一个公共目录,如 /usr/local/bin/terraform-providers

在workspace下执行 terraform init -plugin-dir /usr/local/bin/terraform-providers 初始化工作空间

2.创建资源

执行 terraform apply 进行资源创建。terraform会输出执行计划,确认无误后输入yes,开始执行

terraform会交互式创建资源,等待创建完成后,terraform输出简单的统计信息。在网易云控制台查看已经创建好的云主机。

3.更新资源

3.1 修改已有资源:更新云主机规格,将刚才创建的主机规格从4核变更成2核

修改模版中spec_type = “nvm.n2.small4" 为 spec_type = “nvm.n2.small2" 后保存,再次执行terraform apply 完成云主机规格变更

变配中

规格变配完成

3.2 动态添加/删除资源 :增加一块云硬盘并绑定到之前到云主机

在模版中增加以下内容并保存:

resource "neteasecloud_ncv" "tf_ncv"{name = "mydisk"capacity = 30}resource "neteasecloud_nvm_disk_attachment" "tf_attach" {instance_id = "${neteasecloud_nvm.tf_nvm.id}"disk_id = "${neteasecloud_ncv.tf_ncv.id}"
}

以上模版表示创建两个资源,一是云硬盘,二是主机硬盘绑定关系,在创建主机硬盘绑定关系中,使用terraform变量引用分别引用了主机和硬盘的id。

再次支持terraform apply, 做资源栈更新

执行完成后,可以在网易云控制台查看,新创建了一块硬盘,并绑定到之前到云主机上。

4.销毁资源

当资源栈使用完成后,执行 terrafrom destroy 销毁整个资源栈,所有资源将被删除

以上步骤演示了一个资源栈基本的生命周期流程。

三、说明

网易云terraform provider目前完成了云主机、云硬盘、vpc等IasS资源的编排能力,后续还会根据需要和OpenApi能力逐步提供其他资源和服务的编排能力。

有关网易云terraform provider下载和使用、目前支持的资源详细说明可以参考以下wiki

网易云免费体验馆,0成本体验20+款云产品!

更多网易技术、产品、运营经验分享请点击。

相关文章:
【推荐】 网页设计简史看设计&代码“隔膜”

转载于:https://www.cnblogs.com/zyfd/p/9808715.html

网易云terraform实践相关推荐

  1. 网易云音乐网络库跨平台化实践

    导读: 2021年10月21日,「QCon 全球软件开发大会」在上海举办,网易智企技术 VP 陈功作为出品人发起了「AI 时代下的融合通信技术」专场,邀请到网易云信.网易音视频实验室.网易云音乐的技术 ...

  2. 全球云计算大会起航,网易云阮良解读人工智能在产品中的创新实践

    9月20-22日,由上海市经济和信息化委员会指导,UBM China主办的2016第四届全球云计算大会·中国站(Cloud Connect China)在上海国际会议中心举行.Cloud Connec ...

  3. 网易云网络服务研发实践—第1代云网络服务|网易云

    本系列以私有云为例,将为大家讲述网易云网络服务的研发实践,将有3期连载.本篇主要介绍第1代云网络服务. 作者:张晓龙 浙江大学计算机学院本科.博士毕业.网易专业技术委员会委员.网易云计算基础设施研发负 ...

  4. Flink SQL 在网易云音乐的产品化实践

    简介:云音乐的性能优化.运维完善实战经验分享. 摘要:本文由网易云音乐数据智能部资深数据平台开发工程师蒋文伟分享,主要介绍 Flink SQL 在云音乐的产品化实践.分享内容如下: 简介 产品功能 性 ...

  5. 网易云音乐基于 Flink + Kafka 的实时数仓建设实践

    简介:本文由网易云音乐实时计算平台研发工程师岳猛分享,主要从以下四个部分将为大家介绍 Flink + Kafka 在网易云音乐的应用实战: 背景.Flink + Kafka 平台化设计.Kafka 在 ...

  6. flink 写kafka_网易云音乐基于 Flink + Kafka 的实时数仓建设实践

    简介:本文由网易云音乐实时计算平台研发工程师岳猛分享,主要从以下四个部分将为大家介绍 Flink + Kafka 在网易云音乐的应用实战: 背景 Flink + Kafka 平台化设计 Kafka 在 ...

  7. 网易云容器服务基于Kubernetes的实践探索

    Kubernetes的特点 近年来Docker容器作为一种轻量级虚拟化技术革新了整个IT领域软件开发部署流程,如何高效自动管理容器和相关的计算.存储等资源,将容器技术真正落地上线,则需要一套强大容器编 ...

  8. 【实践】网易云音乐推荐中用户行为序列深度建模.pdf(附下载链接)

    今天给大家带来网易云音乐资深算法工程师章莺所做的分享<网易云音乐推荐中用户行为序列深度建模.pdf>,本次分享共包含如下四大部分: 1.关于网易云音乐: 2.召回体系探索: 3.精排模型演 ...

  9. python爬虫爬取网易云音乐下载_Python爬虫实践-网易云音乐!没有版权又如何!照样爬取!...

    1.前言 最近,网易的音乐很多听不到了,刚好也看到很多教程,跟进学习了一下,也集大全了吧,本来想优化一下的,但是发现问题还是有点复杂,最后另辟捷径,提供了简单的方法啊! 本文主要参考 python编写 ...

最新文章

  1. 如何在Simulink中添加延迟环节
  2. SQL Server存储过程的基本概念以及语法【转】
  3. SSI 社会信号识别 —— 实时分析和识别人类行为
  4. mvc4 html.dropdownlist,ASP.NET MVC4中使用Html.DropDownListFor的方法示例
  5. 可变字符串 插入,删除,替换,赋值
  6. 深度学习2.0-3.tensorflow的基础操作之索引与切片
  7. 图像处理求均方差得c语言实现,数字图像处理第10章课件.ppt
  8. 433M无线通信模块通信应用场景和4G模块技术特点推荐篇
  9. 网络蠕虫一般利用计算机系统,网络蠕虫是什么
  10. 箱形图适用于哪种数据_python数据分布型图表箱形图系列带误差线箱形图
  11. python用于cad_使用Python读取AutoCAD DXF文档
  12. 可能是这个夏天最有趣的100米了!| 谁在Reading Park
  13. SitePoint Podcast#100:我们的现场周年纪念秀
  14. KConfig、Makefile详解以及ARM平台Linux内核的编译
  15. 新型前端学习成长计划路线规划
  16. 一个软件开发者的BPM之路
  17. matlab编写的卡农,matlab 编的卡农
  18. Linux学习:Linux基础命令集(1)
  19. 在github上写自己的博客
  20. php数据映射到echarts中国地图

热门文章

  1. Duang,钉钉会议室预定系统已上线!
  2. 开源 | 如何实现一个iOS AOP框架?
  3. 关于 iOS apps 的启动页设计,再唠叨几句
  4. Nature 机器智能综述:AI如何自动生成游戏
  5. 使用码云git的webhook实现生产环境代码的自动pull
  6. Linux从零开始(二、基础命令(续三)修改密码)
  7. 如何创建Oracle DBLink
  8. RMAN 备份与恢复 实例
  9. Oracle 11g服务端的安装和配置
  10. Egret的容器--删除对象,遮罩