terraformでAMI化したEC2のhostnameを力技で設定するまで

スポンサーリンク

はじめに

k8sのhardwayで3インスタンスも建てていましたが、shutdownしててもEBSの費用が月5ドルくらい掛かってしまうので、AMI化してEC2インスタンスは削除しました。

使用するときはterraformを使って自動起動しようと思い、その設定を残しておきます。

やりたかったこと

・terraformを使ってAMI化したEC2インスタンスを簡単に復旧させたかった。

・hostnameがip-XX-XXみたいなのではなく、AMI化前に設定していたmaster1とかに自動で直したかった。

terraformのインストール

公式を参照して実行しました。

まずはファイルのダウンロードします。linuxの64-bitのリンクをコピーしてwgetで取得します。解凍してPATHのある所に移動。terraformコマンドを打ってみて確認。terraform --versionとか。

ファイルの準備

紆余曲折ありこんな感じの.tfファイルになりました。

varとかlistとかmapとか試したけど自分の技量では上手く使いこなせず。。

結局べた書きが楽だし可読性も良かったのでこの形になりました。全部同じディレクトリにあります。

awsのkeyなどはterraformを実行するEC2インスタンスの.awsディレクトリを見に行ってくれるようなので設定してません。

user_dataにあるコマンドの通り、hostnamectlでhostnameを変えてrebootしています(単純)ちなみに/etc/hostsはAMI化前に設定済み。

user_dataでhostname無理やり変えたときに参考になったサイト

provider.tf

master1.tf

worker1.tf

worker2.tf

terraformの実行

このまんま。

ec2instanceパラメータ公式

わかりやすい例

コマンドはこんな感じ。

terraform init

→terraform実行のための準備

terraform plan

→dry runなので気軽に打てるはず

terraform apply
→yesで実行

terraform show

→実行結果の確認

最後に

やりたかったことは無事で来たので満足。

ただもっとスマートにやる方法あるんだろうなーと思う今日この頃。

terraform、少し凝ったことをやろうとすると急激に学習コストが上がるのがつらい。

1インスタンスを起動させるとかならterraform簡単らくちんでおすすめです。

関連コンテンツ



シェアする

  • このエントリーをはてなブックマークに追加

フォローする