网易云terraform实践
此文已由作者王慎為授權網易云社區發布。
歡迎訪問網易云社區,了解更多網易技術產品運營經驗。
一、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实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [SDOI2008]仪仗队
- 下一篇: luogu P2512 [HAOI200