Workspace를 사용하는 Terraform에서 state 파일을 관리하는 S3 세그먼트의 키 변경

9741 단어 tech

개요


다음 설정에서 사용된 Terraform의 Workspace 사용을 중지해야 합니다.
  • Workspace
  • 활용
  • Backend에서 S3 지정
  • 그때는 state 파일을 관리하는 S3통 열쇠의 변경이 있었지만, 절차가 복잡해 해당 내용을 노트로 남겼다.
    물통 열쇠를 변경한 내용은 다음과 같다.
    Workspace を利用するとデフォルトで設定される Workspace_key_prefix /env: を削除した構成に変更
    
    変更前 : s3_bucket/env:/stg/sample/terraform.tfstate
    変更後 : s3_bucket/stg/sample/terraform.tfstate
    

    실패한 프로그램 변경


    워크스페이스를 사용한 상태에서 S3의 키만 변경되면 워크스페이스가 유효s3_bucket/env:/stg/stg/sample/terraform.tfstate하기 때문에 만들었다.
    terraform {
      required_version = "=0.14.6"
    
      backend "s3" {
        bucket  = "s3_buckete"
    -   key     = "sample/terraform.tfstate"
    +   key     = "stg/sample/terraform.tfstate"
        region  = "ap-northeast-1"
      }
    }
    

    절차.


    절차를 대략적으로 설명하면 로컬에서 S3 구간의state 파일을 가져오고 새 키로 S3에 새로운state 파일을 가져옵니다.

    전제 조건


    Workspace에서 사용stg.
    실행terraform init, Workspace에서 선택stg의 상태.

    1. S3의 state 파일 가져오기


    Backend를 설정하면 다음과 같습니다.
    terraform {
      required_version = "=0.14.6"
    
      backend "s3" {
        bucket  = "s3_buckete"
        key     = "sample/terraform.tfstate"
        region  = "ap-northeast-1"
      }
    }
    
    이 부분에 대해 평론을 하고 아래 명령을 집행한다.
    terraform init
    
    에 다음 정보가 표시됩니다. yes를 입력하십시오.
    Initializing the backend...
    Terraform has detected you're unconfiguring your previously set "s3" backend.
    Do you want to migrate all Workspaces to "local"?
      Both the existing "s3" backend and the newly configured "local" backend
      support Workspaces. When migrating between backends, Terraform will copy
      all Workspaces (with the same names). THIS WILL OVERWRITE any conflicting
      states in the destination.
      
      Terraform initialization doesn't currently migrate only select Workspaces.
      If you want to migrate a select number of Workspaces, you must manually
      pull and push those states.
      
      If you answer "yes", Terraform will migrate all states. If you answer
      "no", Terraform will abort.
    
      Enter a value:
    
    로컬 작업 디렉터리에 S3에서 관리하는state와 같은 파일을 만듭니다../terraform.tfstate.d/stg/terraform.tfstate

    2. Workspace를default로 변경


    Workspace에서 default를 선택하려면 다음 명령을 실행합니다.
    terraform workspace select default
    
    다음 명령을 사용하여 선택한 Workspace를 확인할 수 있습니다.
    terraform workspace show
    
    다음 명령을 실행합니다.
    terraform state list
    
    워크스페이스가 default로 전환되었기 때문에state 파일이 존재하지 않을 때 표시됩니다.
    No state file was found!
    
    State management commands require a state file. Run this command
    in a directory where Terraform has been run or use the -state flag
    to point the command to a specific state location.
    

    3. 로컬에서 state 파일 만들기


    작업 디렉토리 바로 아래에 생성terraform.tfstate됩니다.
    terraform state push terraform.tfstate.d/stg/terraform.tfstate
    
    Workspace를 관리하는 state 파일terraform.tfstate.d 디렉터리를 삭제합니다.
    rm -r terraform.tfstate.d
    
    다음 명령을 실행합니다.방금 No state file was found!가 나왔는데 이번에는 자원이 나왔습니다.
    terraform state list
    

    4. 새 키로 S3 구간에 state 파일 만들기


    방금 댓글이 출력한 다음 내용은 댓글을 취소하고 변경합니다key.
    terraform {
      required_version = "=0.14.6"
    
      backend "s3" {
        bucket  = "s3_buckete"
    -   key     = "sample/terraform.tfstate"
    +   key     = "stg/sample/terraform.tfstate"
        region  = "ap-northeast-1"
      }
    }
    
    다음 명령을 실행합니다.
    terraform init
    
    다음 정보를 표시하고 yes를 입력합니다.
    
    Initializing the backend...
    Do you want to copy existing state to the new backend?
    Pre-existing state was found while migrating the previous "local" backend to the
    newly configured "s3" backend. No existing state was found in the newly
    configured "s3" backend. Do you want to copy this state to the new "s3"
    backend? Enter "yes" to copy and "no" to start with an empty state.
    
    Enter a value: 
    
    S3 구간에 state 파일을 만듭니다.

    5. 필요 없는 로컬 파일 삭제


    로컬state 파일이 필요하지 않기 때문에 삭제합니다.
    rm terraform.tfstate
    rm terraform.tfstate.backup
    

    6. 동작 확인


    신중을 기하기 위해 마지막으로 동작을 확인한다.
    디렉토리 삭제.terraform.
    rm -r .terraform
    
    다음 명령을 집행하고 차질이 없으면 된다.
    terraform init
    terraform plan
    

    7. 변경 전state 파일 삭제


    Workspace를 사용할 때 state 파일이 S3에 남아 있습니다.s3_bucket/env:/stg/sample/terraform.tfstate 필요 없습니다. 삭제하십시오.

    최후


    단지 Backend S3의 키를 변경할 뿐, 상당히 심각하다.
    더 쉬운 방법이 있다면 평론을 알려주세요.

    좋은 웹페이지 즐겨찾기