Terraform-provider-local: sensitive = true인 경우 local_file은 좜λ ₯에 λ―Όκ°ν•œ 정보λ₯Ό μΈμ‡„ν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2018λ…„ 08μ›” 22일  Β·  14μ½”λ©˜νŠΈ  Β·  좜처: hashicorp/terraform-provider-local

_이 λ¬Έμ œλŠ” μ›λž˜ @mtheus에 μ˜ν•΄ hashicor /terraform#18718둜 μ—΄λ ΈμŠ΅λ‹ˆλ‹€. κ³΅κΈ‰μž λΆ„ν•  의 결과둜 μ—¬κΈ°λ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 문제의 본문은 μ•„λž˜μ— μžˆμŠ΅λ‹ˆλ‹€._


ν…ŒλΌνΌ 버전

Terraform v0.11.8

Terraform ꡬ성 파일

resource "local_file" "kubeconfig" {
    sensitive = true
    content  = "${data.terraform_remote_state.kubernetes.kubeconfig}"
    filename = ".kube/config"
}

디버그 좜λ ₯

μ˜ˆμƒλ˜λŠ” λ™μž‘

λ―Όκ°ν•œ μ •λ³΄λŠ” 좜λ ₯에 μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€

μ‹€μ œ 행동

data.terraform_remote_state.kubernetes: Refreshing state...
local_file.kubeconfig: Creating...
  content:  "" => "\n\napiVersion: v1\nclusters:\n- cluster:\n    server: https://**<SENSIVE>**.sk1.us-east-1.eks.amazonaws.com\n    certificate-authority-data: LS0tLS1C**<SENSIVE>**\n  name: kubernetes\ncontexts:\n- context:\n    cluster: kubernetes\n    user: aws\n  name: aws\ncurrent-context: aws\nkind: Config\npreferences: {}\nusers:\n- name: aws\n  user:\n    exec:\n      apiVersion: client.authentication.k8s.io/v1alpha1\n      command: aws-iam-authenticator\n      args:\n        - \"token\"\n        - \"-i\"\n        - \"latam\"\n"
  filename: "" => ".kube/config"
local_file.kubeconfig: Creation complete after 0s (ID: 73a74cc24de6ebfe8304a9b889415884fd819390)

λ²ˆμ‹ 단계

  1. terraform init
  2. terraform apply

보완

좜λ ₯을 μΈμ‡„ν•˜λŠ” λͺ¨λ“  ꡬ성 μš”μ†Œμ— μ μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

https://github.com/terraform-providers/terraform-provider-local/releases/tag/v1.2.0 은 이제 sensitive_content 에 λŒ€ν•œ 지원을 μΆ”κ°€ν•˜μ—¬ 이 문제λ₯Ό μ’…λ£Œν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λͺ¨λ“  14 λŒ“κΈ€

λ§ˆμŠ€ν„°μ˜ μ½”λ“œ λŠ” μ†”λ£¨μ…˜μ„ κ΅¬ν˜„ν•©λ‹ˆλ‹€: sensitve_content . λ‚˜λ¨Έμ§€ Terraform λ¦¬μ†ŒμŠ€μ™€ μΌμΉ˜ν•˜μ§€ μ•Šμ§€λ§Œ 적어도 μ†”λ£¨μ…˜μž…λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ Terraform v0.11.10 및 provider.local v1.1.0μ—μ„œλŠ” 아직 μ‚¬μš©ν•  수 μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

이것은 2018λ…„ 3μ›” #9μ—μ„œ κ΅¬ν˜„λ˜μ—ˆμ§€λ§Œ 아직 λ¦΄λ¦¬μŠ€λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

@alewando μ—¬κΈ° 느린 응닡에 λŒ€ν•΄ μ£„μ†‘ν•©λ‹ˆλ‹€! 핡심 νŒ€μ€ terraform 0.12 λ¦΄λ¦¬μŠ€μ— λŒ€ν•΄ μ „λ©΄μ μœΌλ‘œ μž‘μ—…ν–ˆμœΌλ©° λΆˆν–‰νžˆλ„ 이 κ³΅κΈ‰μžμ™€ 같은 일뢀 ν•­λͺ©μ€ 결과적으둜 λ¬΄μ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

보λ₯˜ 쀑인 PR을 κ²€ν† ν•˜κ³  릴리슀λ₯Ό κ²Œμ‹œν•˜λ„λ‘ μƒκΈ°μ‹œν‚€κΈ° μœ„ν•΄ 이 책을 λΆλ§ˆν¬μ— μΆ”κ°€ν•˜κ² μŠ΅λ‹ˆλ‹€. 이 νŠΉμ • 문제λ₯Ό ν•΄κ²°ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. κΈ°λ‹€λ € μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

@mildwonkey 릴리즈 컷이 λ‚˜μ˜¬ κ°€λŠ₯성이 μžˆλ‚˜μš”? μƒˆ 릴리슀λ₯Ό λΆ„κΈ°ν•˜κ³  μˆ˜ν–‰ν•  수 μžˆμ§€λ§Œ μ‚¬μš©μž μ •μ˜ ν”ŒλŸ¬κ·ΈμΈμ„ κ°€μ Έμ˜€λ €λ©΄ Terraform μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜μ— 보일러 ν”Œλ ˆμ΄νŠΈ λ‘œλ“œκ°€ ν•„μš”ν•©λ‹ˆλ‹€.

@mildwonkey λ‹€μ‹œ ν•œ 번 릴리슀λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€. 그것은 μ‰¬μš΄ 승리이며 μš°λ¦¬μ—κ²Œ λ§Žμ€ 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

@mildwonkey 저도 이것이 ν™˜μƒμ μΈ κΈ°λŠ₯이 될 것이라고 μƒκ°ν•˜κ³  μΆœμ‹œλ₯Ό κ³ λŒ€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. πŸ™‚

μž„μ‹œ λŒ€μ•ˆμ„ μ°ΎλŠ” μ‚¬λžŒλ“€μ„ μœ„ν•΄ μ—¬λŸ¬ RDS λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•œ 자격 증λͺ…을 λ‚΄λ³΄λ‚΄λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€(λ°μ΄ν„°λ² μ΄μŠ€/λΉ„λ°€λ²ˆν˜Έ 및 λ§ˆμŠ€ν„° λΉ„λ°€λ²ˆν˜Έ 맡이 있음).

locals {
  databases = "${keys(var.shared_db_databases_passwords)}"
  manual_output = {
    endpoint  = "${module.shared_database.database_endpoint}"
    username  = "myusername"
    password  = "${var.shared_db_master_password}"
    port      = 5432
    databases = "${local.databases}"
    passwords = "${values(var.shared_db_databases_passwords)}"
  }
}

resource "null_resource" "manual_output" {
  triggers {
    databases = "${join(",", local.databases)}"
  }

  provisioner "local-exec" {
    command = "echo $DATA > manual_output.json"
    environment {
      DATA = "${jsonencode(local.manual_output)}" # Necessary to hide outputs
    }
  }
}

https://github.com/terraform-providers/terraform-provider-local/releases/tag/v1.2.0 은 이제 sensitive_content 에 λŒ€ν•œ 지원을 μΆ”κ°€ν•˜μ—¬ 이 문제λ₯Ό μ’…λ£Œν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

@invidian κ°μ‚¬ν•©λ‹ˆλ‹€!

local_file 데이터 μ†ŒμŠ€λŠ” sensitive_content 도 지원해야 ν•©λ‹ˆλ‹€.

@ShahNewazKhan local_file 데이터 μ†ŒμŠ€μ— sensitive_content 속성이 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” λ§μ”€μ΄μ‹ κ°€μš”? κ·Έλ ‡λ‹€λ©΄ 이것을 μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

@unacceptable μ‹€μ œλ‘œ local_file λ¦¬μ†ŒμŠ€λ₯Ό μƒμ„±ν•˜λŠ” κ²ƒκ³ΌλŠ” λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ local_file λ¦¬μ†ŒμŠ€μ˜ λ‚΄μš©μ„ μ„€μ •ν•œλ‹€κ³  상상해 λ³΄μ‹­μ‹œμ˜€(λ˜λŠ” κΈ°μ‘΄ νŒŒμΌμ„ μ½μœΌλ €λŠ” 경우). ν•΄λ‹Ή μ½˜ν…μΈ κ°€ μ²˜μŒμ— λ―Όκ°ν•œ 경우 좜λ ₯μ΄λ‚˜ tfstate에 직접 ν‘œμ‹œν•˜μ§€ μ•Šκ³  μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이 κΈ°λŠ₯을 κ°–λŠ” 것이 μ˜λ―Έκ°€ μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. local_file 데이터 μ†ŒμŠ€μ—λŠ” sensitive_filename λ§€κ°œλ³€μˆ˜κ°€ μžˆμ„ 수 있으며, μ΄λŠ” μ½˜ν…μΈ κ°€ content (및 content_base64 ) λŒ€μ‹  sensitive_content 속성에 μžˆμ–΄μ•Ό 함을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. content_base64 ). κ·ΈλŸ¬λ‚˜ 그것은 μƒˆλ‘œμš΄ κΈ°λŠ₯ μ œμ•ˆμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. μ•„λ§ˆλ„ 그것을 ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 또 λ‹€λ₯Έ 문제λ₯Ό λ§Œλ“€μ–΄μ•Ό ν•˜μ§€ μ•Šμ„κΉŒμš”?

방금 μ—¬κΈ°μ—μ„œ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.
https://github.com/terraform-providers/terraform-provider-local/issues/36

데이터 ꡬ쑰에 μ˜΅μ…˜μ΄ μžˆμ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜λ―€λ‘œ local_file λ¦¬μ†ŒμŠ€λ₯Ό 톡해 μ •μ˜λœ νŒŒμΌμ—μ„œ sensitive_contentλ₯Ό κ°€μ Έμ˜¬ 뿐만 μ•„λ‹ˆλΌ κΈ°μ‘΄ νŒŒμΌμ—μ„œλ„ κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰