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

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

一、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 = true
    internet_max_bandwidth = 20
    network_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+款云产品!

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

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

网易云terraform实践的更多相关文章

  1. 网易云基于 Kubernetes 的深度定制化实践

    本文由  网易云发布. 2017 年,Kubernetes 超越 Mesos 和 Docker Swarm成为最受欢迎的容器编排技术.网易云从 2015 下半年开始向 Kubernetes 社区贡献代 ...

  2. KEUC首次落地中国,网易云深度剖析Kubernetes优化与实践

    本文由  网易云发布. 10 月 15 日,聚焦 Kubernetes 中国行业应用与技术落地的首届中国 Kubernetes 用户大会(KEUC)在杭州成功举办.本次大会吸引了来自全球各地的技术精英 ...

  3. 网易云深度剖析Kubernetes优化与实践

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 10 月 15 日,聚焦 Kubernetes 中国行业应用与技术落地的首届中国 Kubernetes 用户大会(KEUC)在杭州成功举办.本次大会 ...

  4. 用vuejs仿网易云音乐(实现听歌以及搜索功能)

    前言 前端时间学了vue,一开始看了vue1.0,后来实在觉得技术总得实践,就直接上手vue2.0.然后花了将近一周时间做了一个网易云音乐的小项目.一开始觉得项目比较小,没必要用vuex所以就没有使用 ...

  5. 基于vue2.0的网易云音乐 (实时更新)

    本人在自学vue,之后想在学习过程中加以实践.由于之前有做过jquery的播放器效果,ui仿照网易云,地址 www.daiwei.org/music 于是就想做vue 的网易云播放器,网上也有类似的项 ...

  6. 网易云通过KCSP认证,云原生技术实力再获认可

    近日,网易云通过KCSP认证,正式成为CNCF官方认可的Kubernetes服务提供商,也标志着网易云在云原生领域的技术实力得到了业界认可. Kubernetes是第一个从CNCF毕业的开源项目,凭借 ...

  7. 实现 60fps 的网易云音乐首页

    网易云音乐是一款很优秀的音乐软件,我也是它的忠实用户.最近在研究如何更好的开发TableView,接着我写了一个Model驱动的小框架 - MDTable.为了去验证框架的可用性,我选择了网易云音乐的 ...

  8. TOP100summit2017:网易云通信与视频CTO赵加雨:外力推动下系统架构的4个变化趋势

      壹佰案例:很荣幸邀请到您成为第六届壹佰案例峰会架构专场的联席主席,您曾深度参与Cisco Jabber,Webex Meeting, Cisco Spark等多项分布式实时通信类产品的架构与研发, ...

  9. 网易云易盾朱星星:最容易被驳回的10大APP过检项

    本文由  网易云发布. 1月20日,“走进网易:移动测试与安全实践”公开活动在杭州西湖区颐高创业大厦4F楼友会创业咖啡厅举行.本次活动的议题聚焦在如何实现应用的高效开发.安全过检.开发功耗降到最低等热 ...

随机推荐

  1. Python的免费在线学习课程

    网上资源不是本人的,所以,只是转发.其它的不负责 http://www.imooc.com/learn/177

  2. html版本

    1.html4/4.01 (SGML) 非常通用的语言,少写闭合,大小写混合了,浏览器都会去容错,就是html怎么写都不会导致浏览器挂掉,大家都觉得这种方式是不科学的 2.XHTML(XML) 基于x ...

  3. Mac上传文件到Linux服务器

    1. 打开 终端,选择 2.选择安全文件传输,输入连接主机IP 3.输入主机名 4.输入yes,然后输入主机密码,按回车结束 确认连接 输入远程主机密码 5.连接成功,上传文件 put 本地文件路径 ...

  4. 【转】深度分析Java的ClassLoader机制(源码级别)

    原链接 Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中, JVM在加载类的时候,都是通过ClassLoa ...

  5. 【luogu P1314 聪明的质监员】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1314 二分答案 但是计算区间贡献的时候 直接暴力会挂 前缀和加速 #include <cstdio&g ...

  6. Question20171231 聊聊为什么32bit只能支持4GB内存

    1. 32位系统最大只能支持4GB内存之由来 也许大家对这个问题都不陌生,实际装过系统用过电脑的朋友可能都有这样的经历:自己电脑配的是4G的内存条,可是装完系统之后发现电脑上显示的只有3.2G左右可用 ...

  7. Unity 游戏框架搭建 (十三) 无需继承的单例的模板

    之前的文章中介绍的Unity 游戏框架搭建 (二) 单例的模板和Unity 游戏框架搭建 (三) MonoBehaviour单例的模板有一些问题. 存在的问题: 只要继承了单例的模板就无法再继承其他的 ...

  8. c#常用数据库封装再次升级

    c#封装的几类数据库操作: 1.sqilte 2.berkeleydb 3.一般数据库 4.redis 包含其他项目: 1.序列化 2.通信 3.自定义数据库连接池 再次升级内容: 1.新增redis ...

  9. JS中常见算法问题

    JS中常见算法问题 1. 阐述JS中的变量提升(声明提前) 答:将所有的变量提升当当前作用域的顶部,赋值留在原地.意味着我们可以在某个变量声明前就使用该变量. 虽然JS会进行变量提升,但并不会执行真正 ...

  10. C++创建一个名为Ellipse的椭圆类--练习

    题目描述: /*设计名为Ellipse的椭圆类*/ /* 其属性为外接矩形的左上角与右下角两个点的坐标,并能计算出椭圆的面积,并测试该类. */ 代码如下: #include<iostream& ...