【问题标题】:docker unable to read terraform files码头工人无法读取地形文件
【发布时间】:2019-03-26 19:46:41
【问题描述】:

我正在尝试在 docker 上部署 terraform,但是我的 docker 容器似乎无法读取 main.tf 文件并引发错误,例如 provide: not foundregion: not found。我正在提供我的示例 dockerfile 和 main.tf,请指出我哪里出错了

Dockerfile sn-p,这里不能分享完整文件,但是sn-p包含所有terraform相关代码

RUN apt-get -y install wget unzip
RUN wget https://releases.hashicorp.com/terraform/0.11.11/terraform_0.11.11_linux_amd64.zip
RUN unzip terraform_0.11.11_linux_amd64.zip
RUN mv terraform /usr/local/bin/

ADD main.tf /usr/local/bin/terraform

RUN chmod +x /usr/local/bin/terraform

RUN terraform init
RUN terraform apply -auto-approve /usr/local/bin/terraform -var 'access_key=${AWS_ACCESS_KEY}' -var 'secret_key=${AWS_SECRET_KEY}'

main.tf

provider "aws" {
    region = "region-name"
}

resource "aws_instance" "aws_testing" {
  ami = "ami-name"
  instance_type = "t2.micro"

  #Was using variables.tf ealier but that was laso not being read by 
  #docker, so hard coded these values
  subnet_id = "my-subnet5"

  #Security group
  security_groups = ["smy-security-group"]

}

预期的结果是为此创建一个 AWS 实例。 此外,terraform 脚本独立运行良好,使用 docker 我收到此错误

【问题讨论】:

  • 你能显示你将 main.tf 放入容器的位置吗?从上面的 sn-p 中我只能看到您下载/解压缩 terraform。但是没有提到运行 terraform 命令时容器内明显需要的 main.tf 文件。
  • ADD main.tf /usr/local/bin/terraform 这一行会将主变量复制到 terraform,不是吗,还是我需要从 /us/local/bin 路径执行 RUN 命令
  • 请看我的回答。 ADD main.tf /usr/local/bin/terraform 不起作用,因为 terraform 是可执行文件而不是文件夹(您在 Dockerfile 中给出 +x)。 ADD main.tf /usr/local/bin 之后可以使用 WORKDIR /usr/local/bin,因为 main.tf 与您执行 terraform 命令的目录相同。如果您想将 main.tf 放在其他任何地方,您只需在单个 terraform 命令中添加 main.tf 的路径(请参阅答案)。
  • 我认为在我的多次尝试中......看到你给出了同样的建议......谢谢

标签: docker terraform


【解决方案1】:

您必须告诉 terraform 您的 terraform 文件所在的位置。

您可以通过在 Dockerfile 中设置 WORKDIR 来做到这一点,例如:

WORKDIR /usr/local/bin

(我认为你在上面的 sn-p 中有一个错误。main.tf 在 /usr/local/bin .. 不在 /usr/local/bin/terraform .. 对吧?所以这会起作用,因为 main .tf 位于执行 terraform 命令的同一目录中。)

或者您可以在 terraform 命令中指定路径,例如:

terraform init /usr/local/bin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2017-02-01
    • 2014-05-21
    相关资源
    最近更新 更多