Terraform Provider를 Terraform Registry에 게시
7865 단어 Terraform
개요
크리스마스 당일이므로 크리스마스 트리를 기기에 Provisioning합니다.
모처럼이므로 Provider를 구현해, Terraform Registry 에 Publish 해, 그것을 이용해 Provisioning를 실시해 갑니다.
설명하기
설명하지 않는 것
Setup and Implement Read | Terraform - HashiCorp Learn에서 읽기 시작하면 좋다고 생각합니다.
Provider 구현
이번 아티팩트는 cappyzawa/terraform-provider-christmas-tree입니다.
로직 구현
hashicorp/terraform-provider-scaffolding: Quick start repository for creating a Terraform provider을 사용하여 Project를 만들면 구현을 쉽게 시작할 수 있습니다.
위의 Template
internal/provider
디렉토리를 적절하게 수정하여 Provider를 구현할 수 있습니다.문서 쓰기
examples
디렉토리를 적절하게 수정합시다.수정 후 다음 명령을 실행하여
docs
디렉토리 내용을 업데이트합니다.go generate ./...
hashicorp/terraform-plugin-docs: Generate and validate Terraform plugin/provider documentation.이 terraform-provider-scaffolding/main.go at main · hashicorp/terraform-provider-scaffolding에서 사용되기 때문입니다.
Provider를 Terraform Registry에 게시
Project의 Template로 사용한 hashicorp/terraform-provider-scaffolding: Quick start repository for creating a Terraform provider에는 Test나 Release에 이용하는 GitHub Actions가 포함되어 있으므로 그것을 그대로 이용합시다.
Release에 이용하는 것은 이하의 파일입니다.
terraform-provider-scaffolding/release.yml at main · hashicorp/terraform-provider-scaffolding
대상 리포지토리에
GPG_PRIVATE_KEY
, PASSPHRASE
의 두 개의 보안을 등록해야합니다. (등록하기 전의 순서는 이후에 설명합니다.)Terraform Provider를 Publish하는 흐름은 다음과 같습니다.
Terraform Registry - Publishing Providers - Terraform by HashiCorp
GPG 키가 없는 경우
gpg --full-generate-key
GPG Private Key 얻기
gpg --armor --export-secret-keys [key ID or email]
출력 결과를 대상 Repository의 Secret:
GPG_PRIVATE_KEY
로 등록합시다.비밀번호를 설정한 경우 Secret:
PASSPHRASE
도 등록하세요.GitHub에 Release 만들기
v*.*.*
규칙에 따라 Tag를 사용하여 GitHub에 푸시하면 Release가 만들어집니다.(GitHub Actions 내에서 GoReleaser - GoReleaser이 실행됩니다.)
Terraform Registry에 Signing Key 등록
gpg --armor --export "{Key ID or email address}"
이 출력 결과를 User Settings > Signing Keys에서 등록합니다.
Publish
Publish Provider | Terraform Registry에서 탐색에 따라 대상 GitHub Repository를 선택하여 Terraform Provider를 게시할 수 있습니다.
구현한 Provider 사용
위의 단계에 따라 Publish된 Provider는 다음과 같습니다.
cappyzawa/christmas-tree | Terraform Registry
이것을 이용하여 단말기에 크리스마스 트리를 Provisioning합니다.
versions.tf
terraform {
required_providers {
christmas-tree = {
source = "cappyzawa/christmas-tree"
}
}
required_version = ">= 0.13"
}
main.tf
resource "christmas-tree" "example" {
path = "/tmp/christmas-tree"
ball_color = "red"
light_color = "white"
star_color = "yellow"
}
output "example" {
value = fileexists(christmas-tree.example.path) ? file(christmas-tree.example.path) : ""
}
Merry Christmas!!
terraform init
terraform apply
모처럼 색의 설정을 했으므로 실행 결과의 화상을 첨부합니다.
참고
Reference
이 문제에 관하여(Terraform Provider를 Terraform Registry에 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cappyzawa/items/8be66af768c11c45f414텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)