まず Terrafrom とは何かについて説明します。
Terraform とは?
Terraform(テラフォーム)は、HashiCorp社が開発したオープンソースの「インフラ構成管理ツール」です。
この言葉だけだとイメージが付きずらいと思いますが、サーバーやネットワーク、ストレージなどのインフラを、コード(Terrafrom用の定義ファイル『.tfファイル』)で定義し、自動的に作成・変更・削除できるようにします。
これを Infrastructure as Code(IaC:インフラのコード化) と呼び、Terraformを使うことで次のようなメリットがあります。
・ 手作業の設定を減らせる(ミスが減り、作業が速くなる)
・ 同じ環境を何度でも再現できる(再現性・安定性の向上)
・ 変更内容を可視化できる(変更前に「何が変わるか」を確認できる)
Terraformは、AWSやAzure、Google Cloudなどのクラウド環境だけでなく、VMware vSphereやNutanixなどのオンプレミス環境にも対応しており、幅広い環境で「インフラの自動構築」を実現できます。
似たようなコード化を行うツールとしては Docker や kubernetes があり、それぞれアプリの実装環境構築をコード、運用のコード化を行うものです。
Terrafrom はインフラ環境(仮想マシン)の構築をコード化して自動作成します。
なので、ああいったものの仲間として使う場面なんかを想像してもらうとイメージはしやすいかもしれません。
Terrafrom の導入について
作業用のサーバー(Ubuntu)にTerraformを導入する手順になります。
Ubuntu にログイン後、root になります。
sudo su -バイナリのダウンロードを行います。
wget https://releases.hashicorp.com/terraform/1.11.4/terraform_1.11.4_linux_amd64.zipファイルを解凍します。
unzip terraform_1.11.4_linux_amd64.zipコマンドをパスの通ったところに配置します。
mv terraform /usr/local/binバージョン確認のコマンドを実行して出力されるか確認します。
terraform versionTerrafrom の使い方
Terrafrom は拡張子が.tfになっているファイルを読み込んで動作します。
この tfファイルには、どんな材料(データセンター、クラスター、ネットワーク等)を使って、何を作るのか(仮想マシン等)を書いておきます。
ここの書き方は実際に仮想マシンやリソースを作成する手順の中で説明しますので今は割愛します。
コマンドを実行したディレクトリ内にある .tfファイルを全部読み込むため、複数の仮想マシンを一度に管理したい場合は同じ tfファイルに記載して大丈夫ですが、削除のタイミングを仮想マシン毎に分けたい場合はディレクトリを分けて tfファイルを作成する必要があるのでその点は注意が必要です。
tfファイルを作成し終わった後は、Terrafrom のコマンドでリソースの作成を行うのですがよく使うのは以下のコマンドです。
init
Terraformが使うプラグインのダウンロードを行います。
初めて実行する際や、プロバイダーのバージョンを変更した場合などに実行します。
plan
tfファイルに記述されている内容で予行演習を行い問題がないかなどをチェックします。
実際に変更を加えることはありません。
apply
実際に tfファイルの内容を反映させます。
destroy
作成したリソースをすべて削除します。
Terrafrom で作成したリソースを vSphere Client などで直接消してしまうと、Terrafrom としては存在すると認識したままになってしまうので、削除の際は必ず destroy を使用してください。
では、次回から仮想マシンの作成を行っていきたいと思います。