GitHub 如何在将 terraform 文件移动到文件夹而不是根目录后找到它们

how does GitHub find terraform files after moving them to a folder, instead of root directory

提问人:b_a9f 提问时间:12/6/2022 最后编辑:b_a9f 更新时间:12/6/2022 访问量:525

问:

我有这个GitHub存储库:

_
 |_ .github/workflows/myworkflow.yaml
 |_ terraform/terraformInFolder.tf
 |_ terraformInRootDir.tf

我的工作流程运行 terraform bash 脚本,如 terraform apply、vaidate 等...... 它只能运行根目录中的 .tf 文件。我找不到运行文件夹中文件的方法。 我尝试使用但无法与 一起使用。with: path: withrun

这是我的工作流程:

name: deployment-workflow

on: push
jobs:
  terraform_apply:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1


    - name: Verify Terraform version
      run: terraform --version

    - name: Terraform init
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      run: terraform init -input=false

    - name: Terraform validation
      run: terraform validate

    - name: Terraform apply
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      run: terraform apply -auto-approve -input=false 

如何在文件夹中包含我的 .tf 文件的路径?

github terraform yaml github-actions

评论

0赞 Nick K9 12/11/2022
你找到问题的答案了吗?

答:

0赞 Drumor 12/6/2022 #1

您可以使用参数

-chdir=<文件夹位置>

重定向 Terraform 的执行。我将你的代码更新为:

name: deployment-workflow

on: push
jobs:
  terraform_apply:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1


    - name: Verify Terraform version
      run: terraform --version

    - name: Terraform init
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      run: terraform -chdir="./terraform" init -input=false

    - name: Terraform validation
      run: terraform -chdir="./terraform" validate -no-color

    - name: Terraform apply
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      run: terraform -chdir="./terraform" apply -auto-approve -input=false 
0赞 Nick K9 12/6/2022 #2

Terraform 不希望你使用这样的目录来分解你的模块。模块中的所有文件都松散地位于模块文件夹的顶层。在您提供的 中,您的根模块只包含一个文件:.子目录将被忽略。treeterraformInRootDir.tf

如果要添加结构,可以通过创建子模块来实现。子模块的文件位于子目录中,但您必须通过指定路径和传递输入变量在代码中声明子模块。

您可以在文档中详细了解 Hashicorp 建议您如何构建存储库。