前言
雖然這篇跟aws
沒有太多的關係,但是因為我是使用aws
不過還是沒有什麼太多的關聯
主要是這陣子在整理公司的機器以及覺得當初在aws
上的vpc
規劃的方式有夠爛,想說趁這個機會把腳本寫一寫看能不能慢慢把機器都移一移,結果直接踩到地雷
遇到的困難
這邊主要是使用terraform
這個由hashicorp
公司推出的工具,現在應該是devops
圈子裡跟k8s
一樣接近必要會的技能之一了吧?
我原本是在用012
版本,但是最近回頭看的時候覺得有些設定在當初就覺得不太對的地方,現在看當然還是不對。所以但官網翻了很多文章才找到比較正確的流程,不過因為現在的版本是014
,因此找到很多CLI
都是014
版;所以後來受不了我就直接從012
跳014
直接死亡
這個時候不論你是不是把.terraform
砍掉,或是想找013
版想用terraform 013upgrade
來升級都沒用,而且013
在GitHub
只有Source Code
得自己編,我是不覺得我脫離了很久的RD
技能可以幫助我把這個版本build
好。後來直接找到官方社群論壇才找到有一篇跟我差不多的情況。
解決方法
官方文章裡其實也有提到,不過因為太清描淡寫,如果不是因為我後來在GitHub
上找到相關的指令,我應該還可以再卡很久。
不囉嗦,上指令
$ terraform state replace-provider
Usage: terraform state replace-provider [options] FROM_PROVIDER_FQN TO_PROVIDER_FQN
大致上就是因為012
使用的還是舊版的uri
,所以升上014
版直接跟你說 這個套件找不到哭哭喔。因此要用的話要把寫入設定裡的位置改成對的位置。
因為我主要是為了看之前架好的k8s
,所以相關修改如下
$ terraform state replace-provider "registry.terraform.io/-/null" "registry.terraform.io/hashicorp/null"
$ terraform state replace-provider "registry.terraform.io/-/local" "registry.terraform.io/hashicorp/local"
$ terraform state replace-provider "registry.terraform.io/-/aws" "registry.terraform.io/hashicorp/aws"
$ terraform state replace-provider "registry.terraform.io/-/random" "registry.terraform.io/hashicorp/random"
$ terraform state replace-provider "registry.terraform.io/-/kubernetes" "registry.terraform.io/hashicorp/kubernetes"
$ terraform state replace-provider "registry.terraform.io/-/template" "registry.terraform.io/hashicorp/template"
修改完後下terraform init
讓他更新一下相關的套件,再下後續的plan
和apply
才算成功
後記
其實這個東西說方便是方便,但是沒辦法讓你只用一個檔就把機器管好,因為這個工具麻煩的地方就是他可以設定的地方很細,所以如果你寫的檔案並沒有到這麼的細就會在啟動的時候自動幫你建一些設定,讓你在啟動的當下覺得很方便,但是在管理面沒有好好的把這些設定抓下來的話會造成你後續的困難點。