Я предоставляю ресурсы в AWS, а также в сторонних системах через специального провайдера.В моей локальной среде он работает нормально (так как я скачал и скомпилировал стороннего поставщика).
В качестве следующего шага я пытаюсь запустить конвейер Gitlab с Terraform. Часть AWS работает, потому что оназарегистрированный провайдер Terrafrom, однако сторонняя часть не работает (потому что это не зарегистрированный провайдер Terraform).
Когда я пытаюсь запустить конвейер Gitlab, он выдает ошибку и сообщает следующее
В последнем случае плагин должен быть установлен вручную путем поиска и загрузки подходящегодистрибутив и размещение исполняемого файла плагина в следующем каталоге: terraform.d / plugins / linux_amd64
У меня есть файл .gitlab-ci.yml:
image:
name: hashicorp/terraform:light
entrypoint:
- '/usr/bin/env'
- 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
before_script:
- rm -rf .terraform
- terraform --version
- export AWS_ACCESS_KEY
- export AWS_SECRET_KEY
- terraform init
stages:
- validate
- plan
- apply
validate:
stage: validate
script:
- terraform validate
plan:
stage: plan
script:
- terraform plan -out "planfile"
dependencies:
- validate
artifacts:
paths:
- planfile
apply:
stage: apply
script:
- terraform apply -input=false "planfile"
dependencies:
- plan
when: manual
Я вижу изображение, которое называется 'hashicorp / terraform: light'.Должен ли я создать образ докера на основе этого изображения с уже имеющимся сторонним поставщиком?
EDIT1
Ясно, что требуется пользовательское изображение.Я использовал идею из rflume ниже и использовал следующий Dockerfile для создания образа.
# Multi-Stage builds require Docker Engine 17.05 or higher
# Build ACI provider
FROM ubuntu:bionic-20190515 as builder
ENV HOME /root
ENV GOPATH $HOME/go
ENV GOBIN $GOPATH/bin
RUN apt update &&\
apt install -yqq software-properties-common \
git \
wget \
unzip \
gcc \
perl \
go-dep \
make \
build-essential &&\
add-apt-repository ppa:longsleep/golang-backports &&\
apt-get update &&\
apt-get install -y golang-go &&\
mkdir -p $GOPATH/src/github.com/terraform-providers &&\
wget -O $HOME/terraform-provider-aci.zip https://github.com/ciscoecosystem/terraform-provider-aci/archive/master.zip &&\
cd $GOPATH/src/github.com/terraform-providers/ &&\
unzip $HOME/terraform-provider-aci.zip -d . &&\
mv terraform-provider-aci-master \
terraform-provider-aci-v1.0.0
WORKDIR $GOPATH/src/github.com/terraform-providers/terraform-provider-aci-v1.0.0
RUN dep ensure
RUN make build
# Build the actual image
FROM hashicorp/terraform:0.11.14
ENV GOBIN /root/go/bin
ENV PATH $GOBIN:$PATH
RUN mkdir -p /root/.terraform.d/plugins
COPY --from=builder /root/go/bin/terraform-provider-aci-v1.0.0 $GOBIN/terraform-provider-aci-v1.0.0
ENTRYPOINT ["/bin/sh", "-c"]