- クラウド技術
TerraForm でEC2を作成
- #TerraForm
- #AWS
目標:TerraFormを使ってAWSのEC2インスタンスを立ち上げる。
環境
OS:Windows10
今回使っている環境はWindows10なのでchocolateyと言うソフトウェアが必要でした。
Chocolateyとは
チョコティー(Chocoly)は、Windowsソフトウェア用コンピュータレベルのコマンドパッケージ管理者であり、インストール管理者である。 NuGet パッケージングインフラとWindows PowerShell を使用してソフトウェアのダウンロード·インストールプロセスを単純化します。
Chocolatey
Chocolateyのインストール
「Windows PowerShell」にマウス右ボタンでクリックし、「管理者として実行」選択してください。
PowerShellに実行ポリシーを設定します。
Restricted : 全てのスクリプトが制限
AllSigned : 署名付きスクリプトのみ実行可能
Bypass : すべてのファイルが実行可能
chocolateyはAllSigned とかBypass を要求しています。今回はAllSignedにしてみました。
「Set-ExecutionPolicy AllSigned」を入力してポリシーを変更してください。
chocolateyインストール
下記のコマンドを実行してください。
1 |
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) |
「choco」でインストールを確認できます。
TerraFormインストール
下記のコマンドを実行します。
1 |
choco install terraform |
スクリプト実行するかの質問に「Y」を入力します。
「terraform -help」でインストール確認ができます。
AWS CLIインストール
せっかくchocolateyをインストールしたのでchocolateyからAWS CLIをインストールしてみます。
下記のURLから「aws cli」検索してパッケージを探します。
chocolateyパッケージ:Packages
AWS Command Line Interface v2 (Install) 2.3.0
1 |
choco install awscli |
インストール後には「Windows PowerShell」の再実行が必要です。
再実行後に「aws –version」コメント実行ができます。
AWSアクセスキー習得
AWSにアクセスした後にセキュリティ認証情報に行きます。
https://console.aws.amazon.com/iam/home?#/security_credentials
アクセスキー (アクセスキー ID とシークレットアクセスキー)を開いて「新しいアクセスキーの作成」ボタンを押したらアクセスキーが発給されます。
必ず「キーファイルのダウンロード」をクリックしてアクセスキーの情報をダウンロードして安全なとこに保管してください。
アクセスキーをAWS CLIに登録します。下記のコマンドを実行してください。
1 |
aws configure |
ダウンロードしたアクセスキーファイルを参考してください。
基本リージョンは「ap-northeast-1」東京にしました。
TerraFormを試す
以下の内容は状況によってお金がかかります。
Terraform tutorials : Build Infrastructure | Terraform – HashiCorp Learn
好きなどころに「main.tf」と言うファイルを作成してください。
作成した後に下記のコードを入れてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 3.27" } } required_version = ">= 0.14.9" } provider "aws" { profile = "default" region = "ap-northeast-1" } resource "aws_instance" "app_server" { ami = "ami-66182e01" instance_type = "t2.micro" tags = { Name = "MyFirstTerraformInstance" } } |
required_providers
Terraformは、「providers」というプラグインを使用し、クラウド提供者、SaaS提供者、その他のAPIと相互作用します。providers list : https://registry.terraform.io/browse/providers
provider
指定された提供者を構成します。
Terraformがリソースを生成·管理するために使用するプラグインです。
resource
インフラの構成要素を定義します。 リソースは、EC2インスタンスのような仮想または物理的構成要素やHerokuアプリケーションのような論理的リソースである可能性があります。
Terraform 初期化
初期化すると定義されているproviderがダウンロードおよびインストールされます。
「main.tf」があるディレクトリまで移動して下記のコマンドを実行してください。
1 |
<span>terraform init</span> |
providerをダウンロードし、現在のタスクディレクトリの隠れた下位ディレクトリである「.terraform 」にインストールします。
「terraform fmt」は可読性と一貫性のため、現在のディレクトリの構成を自動でアップデート
1 |
<span>terraform fmt</span> |
「terraform validate」命令を使用することで、構成が構文的に有効であり、内部的に一貫性があるかを確認することもできます
1 |
<span>terraform validate</span> |
「terraform plan」命令を使用すると、現在定義されているリソースを実際にproviderに適用した時、テラフォームがどのようなジョブを実行するかの計画を示します。
1 |
<span>terraform plan</span> |
「terraform apply」命令はリソースを実際に作成します。
1 |
<span>terraform apply</span> |
確認メッセージに「yes」を入力
実行後にAWS Consoleからインスタンスを確認できる
よくある質問
1.AMI IDが各リージョン別に違うので注意してください。本記事に書いているAMI IDは東京リージョンの「ubuntu-precise-12.04-amd64-server-20170502」AMI IDです。
2.基本VPCを削除したらVPC設定を追加してください。
1 2 3 4 5 6 7 8 9 10 11 |
resource "aws_instance" "app_server" { ami = "ami-66182e01" instance_type = "t2.micro" vpc_security_group_ids = ["sg-0077..."] subnet_id = "subnet-923a..." tags = { Name = "MyFirstTerraformInstance" } } |
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>