【AWS】Terraform入門 AWSチュートリアルのイントロダクション動画を翻訳してみた

AWS

「Terraformについて概要が知りたい」「Infrastructure as Code(IaC)とは何か知りたい」「TerraformのAWSチュートリアルの動画が英語なので、日本語翻訳が知りたい」

このような疑問に対し、TerraformのAWSチュートリアル動画を翻訳しましたのでご紹介します。不備がありましたら、以下からツッコミをいただけますと幸いです。

>> お問い合せ
>> Twitter

この記事で分かる事

  • TerraformのAWSチュートリアルの動画が英文なので、日本語翻訳が知りたい
  • Terraformについて概要が知りたい
  • Infrastructure as Code(IaC)とは何か知りたい

なるべく原文の意図を変えないように配慮しつつ、分かりやすく翻訳することを心掛けました。多少意訳もありますのでご了承ください。また、分かりにくい用語に関しては注釈をつけました。

翻訳したチュートリアル動画

以下のページ
>> 【Terraform公式】Introduction to Infrastructure as Code with Terraform

記事の背景

Terraformについて体系的に把握したいと思いましたが、日本語のサイトでは今一つ把握できなかったので、一次情報を確認するために翻訳しました。

TerraformのAWSチュートリアル動画

本家HashiCorpのAWSチュートリアルサイトは全部で8つのコンテンツがあります。

今回はその1「Introduction to Infrastructure as Code with Terraform(TerraformでIaCを実践するための導入)」についての翻訳です。

【公式】TerraformのAWSチュートリアル記事

  1. Introduction to Infrastructure as Code with Terraform(TerraformでIaCを実践するための導入) ← 本記事の翻訳対象
  2. Install Terraform(Terraformのインストール)
  3. Build Infrastructure(インフラの構築)
  4. Change Infrastructure(インフラの変更)
  5. Destroy Infrastructure(インフラの撤去)
  6. Define Input Variables(インプットバリアブルズを定義する)
  7. Query Data with Outputs(クエリデータ)
  8. Store Remote State(リモート環境でTerraformのコードを保管する)

気になる方は本家のページもご確認ください。
>> 【Terraform公式】Introduction to Infrastructure as Code with Terraform

TerraformのAWSチュートリアルの動画が英語なので、日本語翻訳が知りたい

Introduction to Infrastructure as Code with Terraform(TerraformでIaCを実践するための導入)

チュートリアル動画の日本語訳

以下が翻訳内容となります。分かりにくい点は注釈をつけました。

なお、動画本編はこちらです。
>> 【Terraform公式】Introduction to Infrastructure as Code with Terraform

インフラとは?

「インフラ」という言葉を聞いてた時に、何を思い浮かべるでしょうか?インフラの言葉の基本的な定義である、ビルや道路といった物理的な構造物を思い浮かべるかもしれません。

しかし、ソフトフェアの開発や運用現場においては、インフラは日々稼働する基盤ハードウェアのことを指します。

伝統的で物理的なインフラ※1は、データセンターを利用して、手動で設定されており、高価で管理するのが大変になる可能性があります。

また、クラウドコンピューティングのおかげで、ますますリモートワークが増え、リソースが分散化するなかで、物理的なインフラを維持するのが困難になりつつあります。


IaC(infrastracture as code)とは

物理的に設定されたインフラの代替案が、IaC(infrastracture as code/インフラストラクチャ アズ コード)※2と呼ばれるものです。ブラウザから設定ツールをクリックするのではなく、シンプルな宣言型言語※3によるコードを使用してクラウドにサーバーを作成することを想像してみてください。

IaC(infrastracture as code)はざっくり言うとそういったものです。


Terraformとは

HashiCorpはTerraformという宣言型言語を作りました。それは、プロバイターAPIをつかって、インフラ上のリソースを構築します。

なので、あなたが利用するプラットフォームやサービスに応じてインフラを構築するためのサービスがTerraformプロバイダードキュメントで見つかるでしょう。

Terraformは、特定のリソースを定義し、プロバイダープラグインを使ってインフラを管理します。

一旦Terraformで変更に対するアプライと確認をすると、作成したTerraform設定により、実際のインフラを作成することができます。


HCL(Hashi Corp Langage)とは

IaC(infrastracture as code)の例としては、HashiCorp設定言語※4があります。そこには、AWSのEC2インスタンスを作成するHCLファイルの概要があります。

まずプロバイダーブロックから設定していきます。これは、インフラストラクチャを構築するプラットフォームをTerraformに指示します。実行するにはawsの認証キーが必要です。

さらに、より多くの引数に関する情報をTerraformのドキュメントで見つけることができるでしょう。

次に、リソースブロックは私たちが望むインフラを構築するためのID、事例、ユースケースなどを定義します。さらにAMIとインスタンスタイプはリソースタイプのパラメータがもとめられます。

そして、あなたはオプションパラメータを定義することもできます。これによって、あなたのワークフローや最適化要望を実現するためのリソースカスタムが可能になります。

一旦Terraformがユーザーの認証情報を保持すれば、Terraform applyを実行することで、awsアカウントを用いてすぐにインスタンスを作成できます。

Terraformのさらなる利用法

これはTerraformの利用法の一例にすぎません。これはIaC(infrastracture as code)の基盤を提供します。

あとほんの数行のコードでさらにもっとインスタンスをカスタマイズすることができます。多くのインスタンス群・データベース群・Lambda関数※5を構成するために、Terraformでfileを書くことを想像してください。

IaC(infrastracture as code)でTerraformを利用することはマニュアル設定と比べた時、大きな利点があります。。

まず、私たちは何度もインフラを構築する場合、時間を節約できます。

つづいて、Terraform プラン関数を使って構成変更することで、他のエンジニアにとって可読性が高く、確実性の点で利点がある管理が可能になります。

そしてさらに、インフラ担当がTerraformのようなツールをインフラ構築時に使うことで、組織の標準化が容易になり、新しい環境の構築、開発や教育、同様に災害復旧の助けにすることになります。

これは、特に強い利点です。Terraformを利用することで、本番環境に障害が発生したときにダウンタイムを避けることができます。

最後に

IaC(infrastracture as code)を実践する上で、Terraformがどれほど助けになるか。これまで述べてきたことは、非常に簡単な概要にすぎません。

もしTerraformについてもっと深く知りたかった利、構築プロセスを刷新するにあたって確認したいがあればterraform.ioをチェックしてみてください。

注釈

※1 伝統的で物理的なインフラ
オンプレミスとも呼ばれます。従来、インフラと呼ばれるサーバーやネットワーク機器は、データセンターとよばれる空調や電気設備、セキュリティが万全な場所で厳重に運用されていました。また、構築には多額の費用が発生したり、専門的な人員確保、長い納期を必要とするため、コストや人件費がかかっていました。


※2 IaC(infrastracture as code/インフラストラクチャ アズ コード)
今まで手動で構築、管理していたAWSなどのパブリッククラウド上のインフラをTerraformのようなツールを用いて、コード化して管理すること。これにより、構築・変更・撤去・バージョン管理・災害対策などすべての面においてメリットが享受できる。


※3 宣言型プログラミング(英: Declarative programming)
過程ではなく対象を定義してプログラムを構成するプログラミングパラダイムのこと。代表的なものにSQLなどがあります。


※4 HCL HashiCorp設定言語
Terraformで利用されている言語


※5 インスタンス群・データベース群・Lambda関数
Webシステムを提供提供するために、インフラエンジニアは複数台、場合によっては数十台、数百台規模のサーバーやネットワーク機器、コードを管理する必要があります。このため、手動ではなく、数行のプログラムコードでそれらを管理できることは、手間やコストを考えるととても意味があります。


まとめ

本記事では、「Terraformについて概要が知りたい」「Infrastructure as Code(IaC)とは何か知りたい」「TerraformのAWSチュートリアルの動画が英語なので、日本語翻訳が知りたい」の疑問に対し、【Terraform公式】Introduction to Infrastructure as Code with Terraformのチュートリアル動画をご紹介しました。

本記事がお役に立てば幸いです。

【関連記事】
>> エンジニアがWordPressで技術ブログを始める3つのメリット【収益化】【マーケティング】