网易云terraform实践
此文已由作者王慎為授權(quán)網(wǎng)易云社區(qū)發(fā)布。
歡迎訪問網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營經(jīng)驗(yàn)。
一、terraform介紹
隨著應(yīng)用上云的常態(tài)化,資源棧動態(tài)管理的需求對用戶也變得更加急切。資源編排(Resource Orchestration Service, ROS)能夠簡化云計算資源管理和自動化運(yùn)維,達(dá)到基礎(chǔ)設(shè)施即代碼的目標(biāo)(Infrastructure as Code, IaC)。使用資源編排,通過一個資源模版管理資源棧方式對用戶而言,提升了資源棧的創(chuàng)建、更新和刪除了效率。
terraform是業(yè)界流行的資源編排工具。通過實(shí)現(xiàn)云平臺相關(guān)的terraform provider插件,terraform支持多云平臺下的資源編排。
NCE組目前實(shí)現(xiàn)了網(wǎng)易云terraform provider插件,初步支持以下資源的編排能力
云主機(jī)、云硬盤、硬盤綁定
vpc、子網(wǎng)
路由表,安全組
二、使用示例
注冊網(wǎng)易云賬號,? https://www.163yun.com/ ?
注冊完成后,登陸控制臺,在用戶中心創(chuàng)建Access Key。記錄AccessKey 和Access Secret 用于后續(xù)api訪問認(rèn)證。???
?
安裝terraform
訪問terraform官網(wǎng)下載terraform安裝包 https://www.terraform.io/downloads.htm
下載得到zip包 terraform_0.11.6_darwin_amd64.zip,解壓該zip文件后得到terraform可執(zhí)行文件
根據(jù)實(shí)際規(guī)劃拷貝terraform到相應(yīng)目錄,并配置PATH 環(huán)境變量??
編寫資源模版
1.創(chuàng)建一個目錄,用于資源編排的工作目錄?
2.在workspace目錄下創(chuàng)建并編寫資源模版? vi? example.tf? ? (資源描述模版文件以.tf為后綴)
在模版文件中編寫以下內(nèi)容:
? ? ? ? ? ? ? ? ? ??
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語句塊定義了訪問網(wǎng)易云相關(guān)認(rèn)證信息,access_key 和 access_secret更加用戶實(shí)際情況填入。
?resource 語句塊定義了一個資源,neteasecloud_nvm 為資源類型,這里表示網(wǎng)易云主機(jī),tf_nvm為模版中唯一的資源id。resource語句內(nèi)部定義了資源的相關(guān)屬性。這里定義了云主機(jī)名稱、鏡像、規(guī)格、網(wǎng)絡(luò)資源等基本信息,并為其分配的公網(wǎng)ip,指定了公網(wǎng)帶寬和計費(fèi)類型,最后向主機(jī)注入一條用戶自定義數(shù)據(jù)。
執(zhí)行資源編排流程
1.初始化工作空間
下載網(wǎng)易云terrraform provider插件,下載得到插件terraform-provider-neteasecloud
將terraform-provider-neteasecloud 放置在一個公共目錄,如 /usr/local/bin/terraform-providers
在workspace下執(zhí)行 terraform init -plugin-dir /usr/local/bin/terraform-providers 初始化工作空間
2.創(chuàng)建資源
執(zhí)行 terraform apply 進(jìn)行資源創(chuàng)建。terraform會輸出執(zhí)行計劃,確認(rèn)無誤后輸入yes,開始執(zhí)行
? ? ?
terraform會交互式創(chuàng)建資源,等待創(chuàng)建完成后,terraform輸出簡單的統(tǒng)計信息。在網(wǎng)易云控制臺查看已經(jīng)創(chuàng)建好的云主機(jī)。
3.更新資源
3.1 修改已有資源:更新云主機(jī)規(guī)格,將剛才創(chuàng)建的主機(jī)規(guī)格從4核變更成2核
修改模版中spec_type = “nvm.n2.small4" 為 spec_type = “nvm.n2.small2" 后保存,再次執(zhí)行terraform apply 完成云主機(jī)規(guī)格變更
變配中
規(guī)格變配完成
?
3.2?動態(tài)添加/刪除資源 :增加一塊云硬盤并綁定到之前到云主機(jī)
在模版中增加以下內(nèi)容并保存:
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}" }以上模版表示創(chuàng)建兩個資源,一是云硬盤,二是主機(jī)硬盤綁定關(guān)系,在創(chuàng)建主機(jī)硬盤綁定關(guān)系中,使用terraform變量引用分別引用了主機(jī)和硬盤的id。
再次支持terraform apply, 做資源棧更新
?
執(zhí)行完成后,可以在網(wǎng)易云控制臺查看,新創(chuàng)建了一塊硬盤,并綁定到之前到云主機(jī)上。
?
4.銷毀資源
當(dāng)資源棧使用完成后,執(zhí)行 terrafrom destroy 銷毀整個資源棧,所有資源將被刪除
?
以上步驟演示了一個資源棧基本的生命周期流程。
三、說明
網(wǎng)易云terraform provider目前完成了云主機(jī)、云硬盤、vpc等IasS資源的編排能力,后續(xù)還會根據(jù)需要和OpenApi能力逐步提供其他資源和服務(wù)的編排能力。
有關(guān)網(wǎng)易云terraform provider下載和使用、目前支持的資源詳細(xì)說明可以參考以下wiki
網(wǎng)易云免費(fèi)體驗(yàn)館,0成本體驗(yàn)20+款云產(chǎn)品!?
更多網(wǎng)易技術(shù)、產(chǎn)品、運(yùn)營經(jīng)驗(yàn)分享請點(diǎn)擊。
相關(guān)文章:
【推薦】?網(wǎng)頁設(shè)計簡史看設(shè)計&代碼“隔膜”
轉(zhuǎn)載于:https://www.cnblogs.com/zyfd/p/9808715.html
總結(jié)
以上是生活随笔為你收集整理的网易云terraform实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [SDOI2008]仪仗队
- 下一篇: luogu P2512 [HAOI200