• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

IAM terraform.tf 파일 옮기는 과정에서의 오류 질문입니다.

20.11.17 18:17 작성 조회수 462

0

안녕하세요. 

IAM terraform.tf 파일을 옮기는 작업 중에 발생한 오류에 대해서 질문드립니다.

다음과 같은 오류가 발생했습니다.

--------------------------------------------------------------------------------------------------

Error: Error locking destination state: Error acquiring the state lock: 2 errors occurred:

        * ResourceNotFoundException: Requested resource not found

        * ResourceNotFoundException: Requested resource not found

Terraform acquires a state lock to protect the state from being written

by multiple users at the same time. Please resolve the issue above and try

again. For most commands, you can disable locking with the "-lock=false"

flag, but this is not recommended.

--------------------------------------------------------------------------------------------------

구글링을 했었는데,

1. 이 오류는 일반적으로 하나의 프로세스가 실행되지 않거나, 네트워크 연결이 중단되거나 프로세스가 완료되기 전에 종료 된 경우라고 합니다.

그래서 backend.tf 파일을 삭제하고 plan 이후 다시 재생성 했는데 같은 에러가 발생합니다.

뭔가 제가 놓친 부분이 있거나, 잘 이해하지 못한 부분이 있는 것 같은데, 해결방안을 찾지 못해서 문의드립니다.

항상 좋은 강의 잘 시청하고 있습니다. 감사합니다.

답변 6

·

답변을 작성해보세요.

1

OKmc R님의 프로필

OKmc R

질문자

2020.11.18

넵.

terraform_lock 으로 하니깐 해결되었습니다ㅠㅠ

감사합니다!

1

OKmc R님의 프로필

OKmc R

질문자

2020.11.17

아~ backend.tf 파일을 만들고, iam 리소스를 생성하려고 하는 시점입니다!

backend.tf    gildong_hong.tf   provider.tf  terraform.tfstate.backup   devops_group.tf   iam_role_hello.tf  terraform.tfstate

파일이 생성되어 있습니다!

1

OKmc R님의 프로필

OKmc R

질문자

2020.11.17

init.tf 생성 후에 s3 버킷까지 만들어진 것까지는 다 확인(콘솔에서)했습니다.

혹시 몰라서 init.tf 까지 같이 첨부드립니다.

$ init.tf

provider "aws" {

        region = "ap-northeast-2"

        version = "~> 2.49.0"

}

resource "aws_s3_bucket" "tfstate" {

        bucket = "tf101-dalmatian-apne2-tfstate"

        versioning {

                enabled = true

        }

}

resource "aws_dynamodb_table" "terraform_state_lock" {

        name    = "terraform_lock"

        hash_key = "LockID"

        billing_mode = "PAY_PER_REQUEST"

        attribute {

                name = "LockID"

                type = "S"

        }

}

-------------------------------------------------------------------------------------------------------------------------

$ backend.tf

terraform {

    backend "s3" {

      bucket         = "tf101-dalmatian-apne2-tfstate"

      key            = "iam/terraform.tfstate"

      region         = "ap-northeast-2"

      encrypt        = true

      dynamodb_table = "terraform-lock"

    }

}

// 저는 terraform 밑에 iam이 있지 않고, 바로 홈 디렉토리에 iam이 존재합니다.

감사합니다. 

0

backend.tf 의 dynamoDB 이름을 terraform-lock에서 terraform_lock 으로 변경해보시겠어요? 

언더바와 대쉬가 혹시 잘못 들어간 건 아닐까 의심됩니다.

0

안녕하세요~

DevOps 엔지니어 송주영입니다.

에러 과정을 조금 더 상세하게 설명해주실 수 있을까요?

예를들면, 현재 어떤 작업을 하려고 하시는걸까요~?

terraform s3 backend 와 dynamodb 는 만들어진 상태이고,

iam 리소스를 생성하시려고 하는 시점인가요 아니면, 이미 코드와 리소스가 생성이 된 시점일까요?

어느 시점인지 알면, 디버깅하기 쉬울 것 같습니다~

불편하시지 않다면, 현재 ls 를 해서 만들어져있는 파일들이 어떻게 되어져있는지 알면 좋을 것 같습니다~

0

안녕하세요.

에러로 보았을 때는 dynamoDB 또는 S3 리소스가 없는 것으로 보여집니다.

backend.tf 파일에서 s3와 dynamodb를 설정하기 위해서는 아래 링크와 같이 init.tf 파일을 먼저 실행하여 backend 구성에 필요한 리소스를 먼저 생성해주셔야 합니다.

https://terraform101.inflearn.devopsart.dev/advanced/backend/#코드생성

혹시나 이전 과정에서 위 과정이 빠진 것은 아닌지 확인 부탁드립니다.

그래서 오류가 나는 경우에는 backend.tf 파일 설정을 그대로 첨부해주시면 저도 로컬에서 디버깅해보도록 하겠습니다!

감사합니다.

이권수 드림