Terraform and Jenkins



我想用詹金斯管道自动化Terraform我的Terraform安装在不同的VM和Jenkins上还。我知道有Terraform插件。但这似乎像是地形必须安装在与Jenkins相同的VM上(或ON/var/lib/jenkins/workspace(无论如何,要完成这个问题吗?请分享您的建议。

通常,最好保持詹金斯机器尽可能清洁,因此您应该避免在Terraform上安装额外的软件包。解决此问题的更好方法是使用您的Terraform二进制文件和您已经内置的所有插件创建一个Dockerfile,那么您在Jenkins Pipeline中需要做的就是构建和执行Terraform Docker。

这是这种dockerfile的示例:

FROM hashicorp/terraform:0.11.7
RUN apk add --no-cache bash python3 && 
    pip3 install --no-cache-dir awscli
RUN mkdir -p /plugins
# AWS provider
ENV AWS_VERSION=1.16.0
ENV AWS_SHA256SUM=1150a4095f18d02258d1d52e176b0d291274dee3b3f5511a9bc265a0ef65a948
RUN wget https://releases.hashicorp.com/terraform-provider-aws/${AWS_VERSION}/terraform-provider-aws_${AWS_VERSION}_linux_amd64.zip && 
    echo "${AWS_SHA256SUM}  terraform-provider-aws_${AWS_VERSION}_linux_amd64.zip" | sha256sum -c - && 
    unzip *.zip && 
    rm -f *.zip && 
    mv -v terraform-provider-aws_* /plugins/
COPY . /app
WORKDIR /app
ENTRYPOINT []

Terraform文档还包含有关CI中运行Terraform的最佳实践的部分:https://www.terraform.io/guides/running-terraform-in-automation.html

是的,完成它的最快方法是为您使用主/从设置。因此,您需要做的是将从属添加到您的Terraform正在运行的机器中。

我创建了一个Global Shared Library很棒的Jenkins-Utils,您可以在同一管道中同时使用不同版本的Terraform。此外,您可以轻松地将构建参数映射到Terraform变量

最新更新