博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网易云terraform实践
阅读量:7215 次
发布时间:2019-06-29

本文共 3001 字,大约阅读时间需要 10 分钟。

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

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

 

一、terraform介绍

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

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

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

  • 云主机、、硬盘绑定

  • vpc、子网

  • 路由表,安全组

 

二、使用示例

注册网易云账号,   

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

 

安装terraform

访问terraform官网下载terraform安装包

下载得到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+款云产品! 

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

 

相关文章:

【推荐】 
【推荐】 
【推荐】 

转载地址:http://awxym.baihongyu.com/

你可能感兴趣的文章
二次排序
查看>>
CSS:如何清除a标签之间的默认留白间距
查看>>
selenium随笔
查看>>
leetcode599
查看>>
String类中“==”和“equals()”的区别
查看>>
leetcode--883
查看>>
the application could not be verified
查看>>
[转]Centos配置国内yum源
查看>>
redis数据类型和应用场景
查看>>
Spring IOC
查看>>
Fragment的onCreateView和onActivityCreate之间的区别(转)
查看>>
AC日记——统计难题 hdu 1251
查看>>
在仿真器中运行时跳过Windows Azure Startup任务
查看>>
android 获取路径目录方法以及判断目录是否存在,创建目录
查看>>
数列问题[HAOI2004模拟]
查看>>
2012各大IT公司校招笔试题整理
查看>>
phpcms 后台分页
查看>>
《需求工程》阅读笔记之六
查看>>
架构阅读笔记5
查看>>
IIS5.1使用虚拟目录部署网站
查看>>