Linode 객체 저장소를 Terraform 백엔드로 설정

13681 단어 terraformlinode
본고에서 우리는 Linode Object Storageterraform 상태로 설정한 원격 백엔드의 설정 과정을 소개할 것이다.이것은 사용자의 상태를 원격으로 저장할 수 있도록 해 줍니다. 테라form 설정을 안전하게 공개할 수 있고, 상태를 통해 민감한 정보를 누설할 염려가 없습니다.
terraform은 Linode를 백엔드로 직접 지원하지 않지만 Linode 대상 저장소는 S3와 호환됩니다. 이것은 몇 개의 추가 설정만 있으면 S3 backend으로 사용할 수 있음을 의미합니다.

통 만들기


현재 우리는 Linode 계기판에 들어가서 수동으로 버킷을 만들 수 있지만,terraform을 사용할 것입니다. 그래서 왜 버킷을 만들지 않습니까?이것은 버킷의 상태를 저장소에 제출해야 한다는 것을 의미하지만, 이것은 문제가 없을 것이다. 왜냐하면 우리는 민감한 정보를 저장해서 그것을 만들 필요가 없기 때문이다.
지형 설정을 만들 폴더에 새 폴더를 만들고 이 초기 지형 코드와 cd을 저장합니다.나한테 전화할게. init-state.
cd ~/src/infra/terraform
mkdir init-state
cd init-state
현재 우리는 버킷을 만들기 위해 지형 코드를 추가해야 한다.이것은 매우 간단하지만, 생명주기 규칙이나 버전 제어와 같은 추가 설정을 추가할 수 있도록 확장할 수 있다.

Note
At the time of writing this article, the current terraform version is 1.0.11. If you're using a newer version, it's possible that the syntax/format could have changed so make sure you're using the correct syntax for your version.


우선, 우리는 main.tf 파일을 만들고terraform 공급자 설정을 설정하며 공급자를 등록합니다.Linode provider을 사용하겠습니다.최신 버전의 공급자를 사용하십시오. 본문을 작성할 때 1.25.0입니다.
terraform {
  required_providers {
    linode = {
      source  = "linode/linode"
      version = "1.25.0"
    }
  }
}

provider "linode" {}
현재 우리는 당신이 사용하고 싶은 메모리 집단을 찾을 수 있습니다. 나는 프랑크푸르트를 사용합니다. 왜냐하면 이것은 현재 유일하게 지원 대상이 되는 유럽 지역이기 때문입니다.
data "linode_object_storage_cluster" "primary" {
  id = "eu-central-1"
}
마지막으로, 우리는 우리의 버킷을 정의하고 이름을 붙일 수 있습니다.이 이름은 계정뿐만 아니라 모든 라인 대상 저장소에서 유일해야 합니다.
resource "linode_object_storage_bucket" "tf_state" {
  cluster = data.linode_object_storage_cluster.primary.id
  label   = "my-tf-state"
}
한마디로 이것이 바로 우리가 가진 것이다.
terraform {
  required_providers {
    linode = {
      source  = "linode/linode"
      version = "1.25.0"
    }
  }
}

provider "linode" {}

data "linode_object_storage_cluster" "primary" {
  id = "eu-central-1"
}

resource "linode_object_storage_bucket" "tf_state" {
  cluster = data.linode_object_storage_cluster.primary.id
  label   = "my-tf-state"
}
Bucket을 설정하고 만들기 전에 마지막으로 Linode API 토큰을 만들어야 합니다.이 작업을 수행하려면 API Tokens page으로 이동하고 오른쪽 상단의 Create a Personal Access Token 버튼을 클릭합니다.이름, 만료일, 그리고 권한을 주십시오.terraform 관리를 사용할 계획인 범위 내에서 권한을 제한해야 합니다.이 설명서를 읽으려면 모든 내용을 읽기/쓰기로 설정합니다.

이제 Create Token을 클릭하여 화면에 표시된 토큰을 복사합니다.비밀번호 관리자와 같은 안전한 곳에 영패를 저장해야 합니다. 팝업 창을 닫으면 영패를 다시 볼 수 없기 때문입니다.

Linode가 이 영패에 접근할 수 있도록 테라form 명령만 실행하면 영패를 입력할 수 있습니다.매번 입력하지 않으려면 LINODE_TOKEN 환경 변수를 설정하고 값으로 표시할 수 있습니다.
export LINODE_TOKEN=<paste-token-here>
우리는 지금terraform을 초기화하고 버킷 설정을 적용할 준비가 되어 있어야 합니다!
terraform init
terraform apply
이렇게 하려면 Linode Provider를 다운로드한 다음 다음과 같은 계획을 출력해야 합니다.
Terraform will perform the following actions:

  # linode_object_storage_bucket.state will be created
  + resource "linode_object_storage_bucket" "state" {
      + acl          = "private"
      + cluster      = "eu-central-1"
      + cors_enabled = true
      + id           = (known after apply)
      + label        = "my-tf-state"
      + versioning   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.
출력 결과가 만족스럽다면, 계속해서 yes을 입력하여 bucket을 만드십시오!
모든 내용을 환매 협의에 제출하기 전에 .terraform.gitignore에 추가하십시오. 다운로드한 라인 제공 프로그램과 같은 짧은 데이터를 포함하고 있기 때문에 버전 제어 시스템에 저장해서는 안 됩니다.

스토리지 액세스 구성


terraform에서 버킷을 백엔드로 사용할 수 있도록 버킷을 읽고 쓸 수 있도록 키에 접근해야 합니다.이러한 키를 만들려면 Access Keys page으로 이동하고 Create Access Key 버튼을 클릭합니다.열린 패널에서 키에 레이블을 추가하고 제한된 액세스를 활성화하며 상태 스토리지 통에 대한 읽기/쓰기 액세스를 허용합니다.
Create Access Key 버튼을 누르면 당신의 열쇠를 볼 수 있습니다.이전 섹션의 API 토큰과 마찬가지로 팝업 창을 닫으면 키에 다시 액세스할 수 없으므로 안전한 곳에 저장되어 있는지 확인하십시오!

현재terraform에서 이 키들을 코드에 저장하지 않고 읽을 수 있도록 환경 변수 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY에 저장하거나 AWS 공유 증빙 설정에 저장할 수 있습니다.API 토큰과 동일한 과정을 거쳤기 때문에 후자에 대해 논의할 것입니다.
AWS 공유 자격 증명 구성은 ~/.aws/config~/.aws/credentials으로 구성됩니다.첫 번째 파일은 출력 형식과 기본 영역 같은 일반적인 설정을 포함하는 프로필을 정의합니다.두 번째 파일은 키를 포함합니다.
개인 정보부터 시작합시다.~/.aws/config을 생성하고 linode-s3 구성 파일을 정의합니다.별도의 프로파일이 있다는 것은 기존 AWS 프로파일이 있는 경우 충돌이 발생하지 않는다는 의미입니다.region을 상태 스토리지 통을 생성할 때 선택할 영역으로 설정해야 합니다.
[profile linode-s3]
output = text
region = eu-central-1
이제 ~/.aws/credentials 파일을 만들어야 합니다.이것은 linode-s3 프로필에 대한 증거를 설정해야 합니다.이 파일의 권한은 600으로 제한할 것을 권장합니다. 이것은 파일 소유자만 읽기/쓰기 접근할 수 있도록 합니다.
[linode-s3]
aws_access_key_id=<access-key>
aws_secret_access_key=<secret-key>
이 파일들이 있으면 우리는 마지막 단계를 위해 준비를 하고terraform 백엔드를 설정해야 합니다!

지형을 배치하다


terraform 백엔드를 설정하려면terraform 코드를 저장하는 디렉터리로 전환하고 backend.tf이라는 파일을 만들어야 합니다.그것은 자신의 파일에 넣을 필요가 없지만, 코드를 질서정연하게 유지하는 데 확실히 도움이 된다.이 파일에는 다음과 같은 지형 블록이 포함되어 있어야 합니다.
terraform {
  backend "s3" {
    endpoint                    = "eu-central-1.linodeobjects.com"
    profile                     = "linode-s3"
    skip_credentials_validation = true
    bucket                      = "my-tf-state"
    key                         = "infra/state.json"
    region                      = "eu-central-1"
  }
}
이것은 s3 백엔드를 정의하고 선택한 영역의 라인 대상 저장소 단점을 가리킨다. 이 예는 eu-central-1이다.다음은 Terraform이 AWS 프로필에서 만든 linode-s3 프로필에서 증거를 불러오는 것을 알려 줍니다.중요한 것은 skip_credentials_validationtrue으로 설정하는 것입니다. 그렇지 않으면 terraform은 AWS STS에 연락하여 분명히 실패한 접근 키를 검증하려고 합니다.마지막으로, 버킷 이름, 키, 영역을 설정합니다.관건은 저장통에서 지형 상태 파일을 가리키는 경로다.
마지막으로 해야 할 일은 새로운 백엔드로terraform을 초기화하는 것입니다.완성 후, 테라form을 사용하여 자원을 만들 준비를 하고, 상태 파일이 개인 라인 메모리 통에 저장되어 있음을 안전하게 알아야 합니다.

Note
Terraform will still store a local copy of the state on your machine to make it easier to work with. It is VERY important to make sure you add the .terraform directory to your .gitignore as otherwise this state file could be accidentally committed and all of our hard work will be for nothing!


terraform init
Linode 리소스를 만들고 terraform apply을 실행하여 이를 테스트할 수 있습니다.
terraform {
  required_providers {
    linode = {
      source  = "linode/linode"
      version = "1.25.0" # Current latest version as of 2021-12-03
    }
  }
}

provider "linode" {}

variable "root_password" {
  type        = string
  description = "Password for the root user"
  sensitive   = true
}

resource "linode_instance" "my_server" {
  label           = "my-server"
  image           = "linode/debian11"
  region          = "eu-west"
  type            = "g6-nanode-1"
}

결론


현재,terraform 자원을 만들 준비가 되어 있어야 합니다. 원격 라인 메모리 통의 상태는 안전합니다.원격 백엔드 저장 상태를 사용하는 장점을 알고 계발을 받아 일부 기초 구조를 코드로 사용할 수 있기를 바랍니다!
주의해야 할 것은, 라인을 원격 백엔드로 사용하는 것은 새 설정에서 라인 자원만 관리하는 것을 제한하지 않습니다.terraform registry의 공식 또는 커뮤니티 공급업체를 계속 이용할 수 있습니다.
공부와 테라form을 즐기세요!

좋은 웹페이지 즐겨찾기