terraformで特定のリソースだけ実行する

AWS

init apply destroyを考えもなしにしながらコードを弄っていると、ftstateが濁ってしまい、削除できないリソースができてしまう。その場合マネコンで削除したりする(※特に残っているはずのリソースがみつからないと思ったら、リージョンが変わっていたりして……あるある)

## 失敗例

それを避けるため、ディレクトリを作って、そこにコードを入れてapplyすると、ネットワークに紐付けされてるリソースの場合、ネットワークのコードも入れないと行かず、VPCが作られてしまう。

逆にネットワークコードをディレクトリ待避するとエラーが出て動かなくなる。

違うディレクトリterraform initする(tfstateを新規作成)とvpcが新しく作られてやっかい。そのままdestroyすれば消えるが、手動で消したいときネットワークの依存状態がすぐに把握できないので面倒なことになる。

## 暫定案

結局、リソースを一個一個terraform plan -target=aws_xxxx.yyyyとかしないといけない。面倒だが。terraform apply -target=aws_xxxx.yyyyして消すときはterraform destroy -target=aws_xxxx.yyyy

当面、これしかない。tfファイルによってはリソースが沢山有るので、サクラエディタなどにコマンドのリストを作って実行する。

## おまけ

なお初心者にありがちだがEC2をクライアントPCで立てて、その中に作業用terraformサーバーを立ててしまったことがある。自分の構築したVPC内にEC2を立てていたため、**destroyしたらネットワークがおかしくなって、EC2に繋がらなくなった。**対処はAMI取って、VPCを手動で削除して、別VPCでEC2起動。そこから別にterraformでネットワーク起動する。

我ながらアホなことをしてしまった。

コメント

タイトルとURLをコピーしました