Gitlab terraform在空目录中初始化

Gitlab terraform在空目录中初始化,gitlab,continuous-integration,terraform,gitlab-ci,continuous-delivery,Gitlab,Continuous Integration,Terraform,Gitlab Ci,Continuous Delivery,我试图让terraform在特定的根目录中执行terraform初始化,但不知何故管道无法识别它。我的gitlab-ci.yml文件的结构可能有问题吗?我已经尝试将所有内容移动到根目录,这很好,但是我希望在存储库中有一点文件夹结构,以便将来的开发人员更容易阅读 default: tags: - aws image: name: hashicorp/terraform:light entrypoint: - '/usr/bin/env' - 'PATH=/us

我试图让terraform在特定的根目录中执行terraform初始化,但不知何故管道无法识别它。我的gitlab-ci.yml文件的结构可能有问题吗?我已经尝试将所有内容移动到根目录,这很好,但是我希望在存储库中有一点文件夹结构,以便将来的开发人员更容易阅读

default:
  tags:
    - aws

image:
  name: hashicorp/terraform:light
  entrypoint:
    - '/usr/bin/env'
    - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

variables:
  # If not using GitLab's HTTP backend, remove this line and specify TF_HTTP_* variables
  TF_STATE_NAME: default
  TF_CACHE_KEY: default
  # If your terraform files are in a subdirectory, set TF_ROOT accordingly
  TF_ROOT: ./src/envs/infrastruktur

before_script:
  - rm -rf .terraform
  - terraform --version
  - export AWS_ACCESS_KEY_ID
  - export AWS_ROLE_ARN
  - export AWS_DEFAULT_REGION
  - export AWS_ROLE_ARN

stages:
  - init
  - validate
  - plan
  - pre-apply

init:
  stage: init
  script:
      - terraform init
在验证阶段之前一切都正常,但一旦管道进入计划阶段,它就会说找不到任何配置文件

validate:
  stage: validate
  script:
    - terraform validate

plan:
  stage: plan
  script:
    - terraform plan -out "planfile"
  dependencies:
    - validate
  artifacts:
    paths:
      - planfile

apply:
  stage: pre-apply
  script:
    - terraform pre-apply -input=false "planfile"
  dependencies:
    - plan
  when: manual

您需要在每个作业中的配置文件夹中进行cd,并且在每个作业之后,您需要通过将terraform正在运行的
/src/envs/infrastructur
的内容传递到下一个作业。为了简洁起见,我省略了您管道的其余部分

before_script:
  - rm -rf .terraform
  - terraform --version
  - cd $TF_ROOT
  - export AWS_ACCESS_KEY_ID
  - export AWS_ROLE_ARN
  - export AWS_DEFAULT_REGION
  - export AWS_ROLE_ARN

stages:
  - init
  - validate
  - plan
  - pre-apply

init:
  stage: init
  script:
      - terraform init
  artifacts:
    paths:
      - $TF_ROOT

validate:
  stage: validate
  script:
    - terraform validate
  artifacts:
    paths:
      - $TF_ROOT

plan:
  stage: plan
  script:
    - terraform plan -out "planfile"
  dependencies:
    - validate
  artifacts:
    paths:
      - planfile
      - $TF_ROOT

我没有看到任何
terraforminit
在您的gitlab-ci中被执行。ymlI不得不缩短脚本以发布它。单元阶段是我包含工作目录的部分吗?它最初是脚本的一部分。如果你发布完整的管道点,我已经更新了帖子,这会更容易帮助你。