Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Terraformによるインフラストラクチャのデプロイ | DevOpsにおけるインフラストラクチャの自動化
DevOps入門

bookTerraformによるインフラストラクチャのデプロイ

メニューを表示するにはスワイプしてください

Terraform を使用して、アプリケーションの実行や構成が可能な環境を作成します。使用する環境の一つが Ubuntu です。

Note
定義

UbuntuLinux をベースとした最も人気のあるオペレーティングシステムの一つです。サーバーや開発環境で広く利用されています。Ubuntu は軽量で安定しており、大規模なコミュニティが存在するため、初心者にも最適な選択肢です。

この例では、Ubuntu はコンテナ型の 「ミニコンピュータ」 として機能し、安全に実験を行ったり、プログラムをインストールしたり、サービスを実行したり、Ansible などの自動化ツールを接続したりできます。

このシナリオにおいて Terraform は、指示に従って環境を構築するビルダーの役割を果たします。Ubuntu コンテナを完全にコードから作成し、手動でのセットアップは不要です。オンラインで小型の組み立て済みコンピュータを注文するイメージで、到着後すぐに使用でき、必要なソフトウェアやアプリケーションをすぐにインストール・構成できます。

Terraformプロジェクトの作成

最初のステップは、Terraformプロジェクト用のフォルダーを作成することです。このフォルダーにはすべての構成ファイルが保存され、他のファイルと分離して整理されます。

ターミナル(LinuxまたはmacOS)またはコマンドプロンプト(Windows)を開き、次のコマンドを入力します:

このコマンドは terraform-ubuntu というフォルダーを作成し、その中に移動します。

次に、Terraformの指示を書くメインの構成ファイルを作成します。このファイル名は main.tf です。次のコマンドを使用します:

Windows:

macOS/Linux:

main.tf ファイルは、Terraform が実行するすべての内容、例えば Ubuntu イメージ のダウンロードやコンテナの作成などを定義する場所。

Ubuntu 構成の記述

テキストエディタで main.tf ファイルを開き、次のコードを貼り付ける。

main.tf

main.tf

copy
Note
注意

このファイルは、HashiCorp Configuration Language (HCL) で記述されています。HCLはTerraform独自のインフラストラクチャ定義言語です。公式ドキュメントはこちらから参照できます: Terraform HCL Documentation

この構成を適用すると、実験やAnsibleによる自動化に利用できる稼働中のUbuntuコンテナが作成されます。

Terraform の実行

構成が準備できたら、次の3つのコマンドを実行してコンテナを作成。

プロジェクトの初期化Dockerプロバイダーをダウンロードし、Terraformを準備。

プランのプレビュー – 実際に作成する前に、Terraformが何を作成するかを表示。

構成の適用Ubuntuコンテナを作成。

Terraform のセットアップが完了すると、作成、変更、または削除される内容を示すアクションプランが生成されます。続行するには yes と入力して確認する必要があります。その後、Terraform が変更を適用し、完了時にレポートを表示します。

結果の確認

コンテナに入り、通常の Ubuntu システム のように操作するには、次のコマンドを使用します:

これは、現在コンテナ内にいることを意味し、小規模で分離された環境として機能します。ここで手動でパッケージをインストールしたり、サービスを実行したり、アプリケーションを試したりできます。

ただし、多くのコンテナがある場合、これらをすべて手作業で行うのは時間がかかり面倒です。次の章では、Ansible を使用して、すべてのコンテナに対するセットアップやインストールを自動化します。

1. Terraformにおけるdocker_imageリソースの目的は何ですか?

2. terraform initの役割は何ですか?

question mark

Terraformにおけるdocker_imageリソースの目的は何ですか?

正しい答えを選んでください

question mark

terraform initの役割は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  3
some-alt