Terraform-provider-local: local_file рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ = рд╕рддреНрдп

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдЕрдЧре░ 2018  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: hashicorp/terraform-provider-local

_рдпрд╣ рдореБрджреНрджрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ @mtheus рджреНрд╡рд╛рд░рд╛ рд╣реИрд╢рд┐рдХреЙрд░реНрдк /рдЯреЗрд░рд╛рдлреЙрд░реНрдо#18718 рдХреЗ рд░реВрдк рдореЗрдВ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░рджрд╛рддрд╛ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореБрджреНрджреЗ рдХрд╛ рдореВрд▓ рднрд╛рдЧ рдиреАрдЪреЗ рд╣реИред_


рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╕рдВрд╕реНрдХрд░рдг

Terraform v0.11.8

рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ

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 ред рдЬреЛ рдмрд╛рдХреА рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдЯреЗрд░рд╛рдлреЙрд░реНрдо v0.11.10 рдФрд░ рдкреНрд░рджрд╛рддрд╛.рд▓реЛрдХрд▓ v1.1.0.1 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

рдЗрд╕реЗ рдорд╛рд░реНрдЪ 2018 рдореЗрдВ #9 рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@alewando рдпрд╣рд╛рдБ рдзреАрдореА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ! рдХреЛрд░ рдЯреАрдо рдЯреЗрд░рд╛рдлреЙрд░реНрдо 0.12 рд░рд┐рд▓реАрдЬ рдкрд░ рд╕рд┐рд░-рдиреАрдЪреЗ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХреБрдЫ рдЪреАрдЬреЗрдВ (рдЬреИрд╕реЗ рдпрд╣ рдкреНрд░рджрд╛рддрд╛!) рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкреЗрдХреНрд╖рд┐рдд рд╣реЛ рдЧрдИ рд╣реИрдВред

рд▓рдВрдмрд┐рдд рдкреАрдЖрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рдПрдХ рд╡рд┐рдЬреНрдЮрдкреНрддрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдмреБрдХрдорд╛рд░реНрдХ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдореБрджреНрджреЗ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рдЖрдкрдХреЗ рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

@mildwonkey рдХреНрдпрд╛ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдХрдЯреМрддреА рдХрд╛ рдХреЛрдИ рдореМрдХрд╛ рд╣реИ? рд╣рдо рдлреЛрд░реНрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдирдИ рд░рд┐рд▓реАрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рдкреНрд▓рдЧрдЗрди рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдореЗрдВ рдмреЙрдпрд▓рд░ рдкреНрд▓реЗрдЯ рдХреЗ рднрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

@mildwonkey рдлрд┐рд░ рд╕реЗ, рдореИрдВ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдЖрд╕рд╛рди рдЬреАрдд рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдХрд╛рдлреА рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

@mildwonkey рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЗрд╕рдХреЗ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред рдореИрдВ

рдЕрд╕реНрдерд╛рдпреА рд╡рд┐рдХрд▓реНрдк рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрдИ рдЖрд░рдбреАрдПрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ (рдореЗрд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛рдмреЗрд╕/рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдирдХреНрд╢рд╛ рдФрд░ рдПрдХ рдорд╛рд╕реНрдЯрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИ):

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 рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

@ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдк 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 рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓_рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ghost picture ghost  ┬╖  24рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

brett-richardson picture brett-richardson  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hashibot picture hashibot  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rnix picture rnix  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ