質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

解決済

1回答

3839閲覧

Terraformでセキュリティグループを実装したい

Yuta_for

総合スコア21

Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

1グッド

1クリップ

投稿2020/06/27 10:08

概要

Terraformの学習

目指すゴール

TerraformからEC2インスタンスを構築する。

ハマった箇所

セキュリティグループを付与しようとしたらエラーが出てしまいました。

terraform

1provider "aws" { 2 profile = "default" #AWS configureのデフォルト設定 3 region = "ap-northeast-1" 4} 5 6resource "aws_vpc" "YutaVPC" { 7 cidr_block = "172.16.0.0/16" 8 tags = { 9 Name = "YutaVPC-terraform" 10 } 11} 12 13#VPC作成 14resource "aws_default_security_group" "default" { 15 vpc_id = aws_vpc.YutaVPC.id 16} 17 18#サブネット作成 19resource "aws_subnet" "YutaSubnet" { 20 vpc_id = "${aws_vpc.YutaVPC.id}" 21 cidr_block = "172.16.10.0/24" 22 availability_zone = "ap-northeast-1a" 23 24 tags = { 25 Name = "YutaSubnet-terraform" 26 } 27} 28 29#VPC内のネットワーク作成 30resource "aws_network_interface" "YutaNetwork" { 31 subnet_id = "${aws_subnet.YutaSubnet.id}" 32 private_ips = ["172.16.10.100"] 33 34 tags = { 35 Name = "primary_network_interface" 36 } 37} 38 39#EC2インスタンス作成 40resource "aws_instance" "YutaInstance" { 41 ami = "ami-0a1c2ec61571737db" 42 instance_type = "t2.micro" 43 44 network_interface { 45 network_interface_id = "${aws_network_interface.YutaNetwork.id}" 46 device_index = 0 47 } 48 49 vpc_security_group_ids = "sg-04d0175d02367f5ca" #事前に用意しているセキュリティグループ 50 51 tags = { 52 Name = "YutaInstance-terraform" 53 } 54 55 key_name = "TokyoKeyPair" 56 57} 58

この状態で一度ドライランを実行しましたが、下記のようにエラーが出てしまいました。

TerraformPlan

1Error: Incorrect attribute value type 2 3 4 on create-ec2.tf line 46, in resource "aws_instance" "YutaInstance": 5 46: vpc_security_group_ids = "sg-04d0175d02367f5ca" 6 7Inappropriate value for attribute "vpc_security_group_ids": set of string 8required. 9

Terraformのドキュメントを参照しましたが、この箇所の部分は英語に説明だけでサンプルコードもなかったので、どのように設定すればいいのかわかりません。TerraformDoc

TerraformでEC2インスタンスを構築する際に既存のセキュリテイグループを付与する方法についてわかる方がいましたらご教授お願いいたします。

sakura👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

vpc_security_group_ids が複数形であること,公式ドキュメントの説明に A list of 〜とある通り,
複数のセキュリティグループIDをリスト形式で指定します.
このため

vpc_security_group_ids = ["sg-04d0175d02367f5ca"]

と指定する必要があります.

投稿2020/06/27 17:54

thaim

総合スコア175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuta_for

2020/06/28 02:30 編集

ありがとうございます、リスト形式で指定した所コンフリクトエラーが新たに発生しました。 ``` Error: "network_interface": conflicts with vpc_security_group_ids on create-ec2.tf line 36, in resource "aws_instance" "YutaInstance": 36: resource "aws_instance" "YutaInstance" { ``` 修正したのはここだけですが、何に対するコンフリクトエラーなのかよくわかっていません。 既に作成済みであるVPCやネットワークインターフェースを指定した新規のEC2インスタンスに既存のセキュリティグループを付与する場合は何か明示的に設定する箇所があるのでしょうか?
Yuta_for

2020/06/28 03:16

追記: VPC作成やサブネット作成箇所などを削除してインスタンス作成のみにリソースを絞ったら付与することができました。 一旦はこれでOKとしようと思いますのでお手数をおかけいたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問