【问题标题】:Use JFrog Artifactory as Terraform Data Source使用 JFrog Artifactory 作为 Terraform 数据源
【发布时间】:2018-10-10 14:02:51
【问题描述】:

我希望从 JFrog 工件中提取一个 jar 文件,并将其用作使用 Terraform 部署到 AWS Lambda 函数的源。我目前正在使用以下代码从 S3 存储桶中提取数据:

data "aws_s3_bucket_object" "function-lambda-file-hash" {
  bucket = "<MYBUCKET>
  key    = "<MYKEY.sha1>"

  tags {
    Name = "${var.<MYTAG>}"
  }
}

# Create the Lambda function itself
resource "aws_lambda_function" "function-lambda" {
  function_name = "function-lambda"

  handler = "com.example.MyFunction::handleRequest"
  runtime = "java8"
  s3_bucket="<MYBUCKET>"
  s3_key="<MYKEY.jar>"
  source_code_hash = "${data.aws_s3_bucket_object.function-lambda-file-hash.body}"
  role = "${aws_iam_role.function-lambda-exec-role.arn}"
  timeout = 30
  memory_size = 256

  tags {
    Name = "${var.<MYTAG>}"
  }
}

我想做一些相同的事情,但从 Artifactory 中提取,这是一个需要身份验证的实例(似乎 HTTP 模块无法执行),但无法找到任何有关执行此操作的信息。有谁知道这是否可能?如果有,怎么做?

任何帮助将不胜感激。

谢谢,

克里斯

【问题讨论】:

  • 您可能需要关注 Atlassian 的 artifactory terraform provider。他们还没有任何数据源,但我相信他们会接受拉取请求。
  • Chris Slack 对此有何更新?我正在寻找类似的要求
  • @sahit @chris-slack 看起来他们现在有数据源 data "artifactory_file" "test" {} 但没有文档。

标签: artifactory terraform


【解决方案1】:

使用数据源artifactory_file获取sha256,然后base64编码,传递给aws_lambda_function资源。

# Configure the Artifactory provider
provider "artifactory" {
  url      = "${var.artifactory_url}/artifactory"
  username = var.artifactory_username
  password = var.artifactory_password
}

data "artifactory_file" "jar" {
   repository  = "repo-key"
   path        = "/path/to/the/artifact.jar"
   output_path = "artifact.jar"
}

resource "aws_lambda_function" "function-lambda" {
  function_name = "function-lambda"

  source_code_hash = base64encode(data.artifactory_file.jar.sha256)

  # ...
}

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多