最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

20個(gè)最佳實(shí)踐提升Terraform工作流程|Part 2

2023-09-25 10:42 作者:SEAL安全  | 我要投稿

在上一部分,我們一同探討了構(gòu)建 Terraform 項(xiàng)目的一些策略,以及使用 Terraform 管理 IaC 的部分最佳實(shí)踐。今天,我們將繼續(xù)深入研究將 Terraform 代碼提升到新水平的具體要點(diǎn),希望能夠?yàn)槟愫湍愕膱F(tuán)隊(duì)提供有意義的提示和指導(dǎo)。
?

標(biāo)記資源

當(dāng)出現(xiàn)問題或試圖找出基礎(chǔ)設(shè)施的哪一部分導(dǎo)致云費(fèi)用激增時(shí),強(qiáng)大且一致的標(biāo)記策略將提供巨大幫助。您還可以在需要時(shí)根據(jù)標(biāo)簽制定一些訪問控制策略。像定義命名規(guī)則一樣,盡量保持一致并始終相應(yīng)地標(biāo)記資源。
?

Terraform 參數(shù)標(biāo)簽應(yīng)聲明為最后一個(gè)參數(shù)(如果相關(guān),僅depends_on或生命周期參數(shù)應(yīng)在標(biāo)簽之后定義)。
?

在進(jìn)行標(biāo)記時(shí),可以定義一些適用于提供者管理的所有資源的default_tags。如果使用的提供程序不支持默認(rèn)標(biāo)簽,則需要手動(dòng)將這些標(biāo)簽傳遞到模塊并將它們應(yīng)用到資源。
?

引入策略即代碼(PaC)

隨著業(yè)務(wù)團(tuán)隊(duì)和基礎(chǔ)設(shè)施規(guī)模的擴(kuò)大,對(duì)個(gè)人用戶的信任通常會(huì)降低。這時(shí)應(yīng)該制定一些政策來確保我們的系統(tǒng)繼續(xù)運(yùn)行且保持安全。制定政策即代碼流程使我們能夠定義大規(guī)模安全和可接受的規(guī)則,并自動(dòng)驗(yàn)證這些規(guī)則。
?

實(shí)施機(jī)密管理策略

當(dāng)開始使用 Terraform 時(shí),機(jī)密管理可能不是首要任務(wù),但最終還是要回到定義處理機(jī)密的策略。
?

如所有教程所說,切勿以明文形式存儲(chǔ)機(jī)密并將其提交到版本控制系統(tǒng)中??梢酝ㄟ^使用?TF_VAR?設(shè)置環(huán)境變量并使用?sensitive = true?標(biāo)記敏感變量來傳遞機(jī)密。
?

或者采用更成熟的解決方案,即設(shè)置一個(gè)機(jī)密存儲(chǔ)(例如 Hashicorp Vault 或 AWS Secrets Manager)來處理對(duì)機(jī)密信息的訪問。這樣,就可以保護(hù)靜態(tài)機(jī)密并強(qiáng)制執(zhí)行加密。還可以選擇更高級(jí)的功能,例如密鑰輪換和審核日志。不過需要注意的是,這種方法通常會(huì)為企業(yè)帶來使用此托管服務(wù)的成本。
?

測(cè)試 Terraform 代碼

與所有其他代碼一樣,IaC 代碼應(yīng)該經(jīng)過相應(yīng)測(cè)試。運(yùn)行?terraform plan?是驗(yàn)證更改是否能快速按預(yù)期工作的最簡(jiǎn)單方法。接下來,可以對(duì) Terraform 代碼執(zhí)行一些靜態(tài)分析而無需應(yīng)用它。單元測(cè)試也是驗(yàn)證系統(tǒng)不同部分是否正常運(yùn)行的一種選擇。
?

另一步驟是將?Terraform linter?集成到 CI/CD 流水線中,并嘗試捕獲與云提供商、已棄用的語法、強(qiáng)制實(shí)施最佳實(shí)踐等相關(guān)的任何潛在錯(cuò)誤。
?

在正式進(jìn)行以上步驟前,可以通過啟動(dòng)來設(shè)置一些集成測(cè)試復(fù)制沙箱環(huán)境,在此環(huán)境中驗(yàn)證一切是否按預(yù)期工作,收集結(jié)果,然后銷毀沙箱,并將其應(yīng)用到生產(chǎn)中。
?

啟用調(diào)試/故障排除

當(dāng)出現(xiàn)問題時(shí),我們必須快速有效地收集所有必要的信息來解決問題。你會(huì)發(fā)現(xiàn)在這些情況下設(shè)置 Terraform 日志級(jí)別以進(jìn)行調(diào)試很有幫助。

TF_LOG=DEBUG

還通過設(shè)置 TF_LOG_PATH 環(huán)境變量將日志保留在文件中。
?

盡可能構(gòu)建模塊

如果社區(qū)中沒有適用于你的用例的模塊,可以嘗試構(gòu)建自己的模塊。一般會(huì)從一些基礎(chǔ)的東西開始構(gòu)建,隨著基礎(chǔ)設(shè)施的成熟,你可能需要回到簡(jiǎn)單的模塊并向其添加更多功能。當(dāng)在另一個(gè)環(huán)境中復(fù)制代碼時(shí),需要做的就是從該模塊創(chuàng)建一個(gè)對(duì)象,并使用新環(huán)境的正確參數(shù)去進(jìn)行填充。
?

使用循環(huán)和條件

你的代碼應(yīng)該能夠創(chuàng)建資源的多個(gè)實(shí)例,因此建議對(duì)可能從一種環(huán)境更改為另一種環(huán)境的實(shí)例使用?count?或?for_each?。這樣將能夠靈活地使用相同的代碼來適應(yīng)許多不同的用例,并為參數(shù)提供通用性。
?

使用函數(shù)

除了循環(huán)和條件之外,Terraform 函數(shù)對(duì)于在代碼中實(shí)現(xiàn)通用性也至關(guān)重要。它們使您的代碼更加動(dòng)態(tài)并確保您的配置是 DRY(Don't repeat yourself)的。函數(shù)允許您執(zhí)行各種操作,例如將表達(dá)式轉(zhuǎn)換為不同的數(shù)據(jù)類型、計(jì)算長(zhǎng)度以及構(gòu)建復(fù)雜變量。
?

充分利用動(dòng)態(tài)模塊

如果沒有動(dòng)態(tài)模塊,代碼就無法達(dá)到 DRY 狀態(tài)。當(dāng)此功能可用時(shí),能夠?qū)崿F(xiàn)按照您喜歡的方式構(gòu)建資源的靈活性。例如,某些云提供商沒有用于安全組規(guī)則的專用資源,并且這些規(guī)則通常嵌入在安全組本身中。利用動(dòng)態(tài)模塊,你只需要更改輸入即可。但如果沒有動(dòng)態(tài)模塊,每當(dāng)添加新規(guī)則時(shí)則需要相應(yīng)更改配置。
?

使用 Terraform WorkSpace

請(qǐng)使用 Terraform Workspace,這樣你將能夠在不同的環(huán)境中重復(fù)使用相同的配置。
?

使用生命周期模塊(Lifecycle Block)

有時(shí)代碼中可能有一些復(fù)雜的條件。比如,有一個(gè)腳本必須在資源標(biāo)簽上更改 Terraform 之外的某些內(nèi)容(當(dāng)然并不建議這樣做)。這時(shí)可以使用生命周期模塊來忽略標(biāo)簽上的更改,確保不會(huì)回滾到以前的版本。
?

如果有些資源,由于某種原因它看似工作正常,但你必須在不停機(jī)的情況下重新創(chuàng)建它,那么生命周期模塊也可以提供幫助。這時(shí)可以使用?create_before_destroy=true?來實(shí)現(xiàn)此目的。
?

使用變量驗(yàn)證

Terraform 在驗(yàn)證變量是否接收正確的輸入方面做得非常好,但是如果想要限制某些內(nèi)容并且沒有實(shí)施 PaC 該怎么辦?這時(shí)可以使用變量驗(yàn)證。此驗(yàn)證塊存在于變量?jī)?nèi)部,可以參考 Terraform 官方說明[1]了解更多。
?

靈活利用輔助工具

Terraform 是最常用和最受喜愛的 IaC 工具之一,其社區(qū)也是非常龐大且活躍的。與這個(gè)社區(qū)一起,有許多輔助工具被創(chuàng)造以幫助用戶更好地使用 Terraform。當(dāng)然為我們的工作流程選擇和采用正確的工具并不是件簡(jiǎn)單的事,通常需要一個(gè)實(shí)驗(yàn)階段。這里我們總結(jié)出一些有用的工具清單供大家參考:

  • tflint?– Terraform linter,用于檢查計(jì)劃無法捕獲的錯(cuò)誤。

  • tfenv?– Terraform 版本管理器

  • checkov?– Terraform 靜態(tài)分析工具

  • terratest?– 幫助您對(duì) Terraform 進(jìn)行自動(dòng)化測(cè)試的 Go 庫

  • pre-commit-terraform?– 用于自動(dòng)化的 pre-commit git hooks

  • terraform-docs?– 從模塊快速生成文檔

  • atlantis?– Terraform 項(xiàng)目協(xié)作工作流程

  • terraform-cost-estimation?– 為您的計(jì)劃提供成本估算服務(wù)
    ?

利用 IDE 擴(kuò)展

如果你在編寫 Terraform 代碼時(shí)使用 Visual Studio Code 或任何其他 IDE,則可以利用其擴(kuò)展來加快開發(fā)過程,并確保代碼格式正確。在 vscode 上,您可以使用 Anton Kulikov 構(gòu)建的 Terraform 擴(kuò)展。請(qǐng)記住在本地計(jì)算機(jī)上安裝 Terraform 以確保其正常工作。
?


?

總 結(jié)

我們探索了 Terraform 和 IaC 的許多不同最佳實(shí)踐,分析了處理和構(gòu)建 Terraform 項(xiàng)目的各種選項(xiàng),并了解了采用輔助工具如何讓我們的生活更輕松。當(dāng)然這些并不是必須盲目遵循的秘訣,我們希望通過這篇文章,能夠成為提供指導(dǎo)和提示并觸發(fā)你構(gòu)建自己的最佳 Terraform 工作流程和項(xiàng)目的指南。
?

原文鏈接
https://spacelift.io/blog/terraform-best-practices
參考鏈接
1.https://developer.hashicorp.com/terraform/language/values/variables

?


20個(gè)最佳實(shí)踐提升Terraform工作流程|Part 2的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
本溪| 油尖旺区| 罗江县| 林州市| 元氏县| 金山区| 台前县| 京山县| 乳山市| 南澳县| 龙游县| 米泉市| 射洪县| 海林市| 无棣县| 南京市| 资阳市| 宜昌市| 冷水江市| 通海县| 仙游县| 浙江省| 武宁县| 博爱县| 长丰县| 宣汉县| 南和县| 富蕴县| 阿尔山市| 霍城县| 缙云县| 兴安县| 离岛区| 绍兴县| 许昌县| 响水县| 烟台市| 紫金县| 榕江县| 麻阳| 吴桥县|