Terraform和Jenkins

时间:2018-04-29 20:11:34

标签: jenkins-pipeline

伙计我想用Jenkins管道自动化terraform 我的terraform安装在不同的Vm和Jenkins上 也。 我知道有Terraform插件。但它似乎是Terraform 必须安装在与Jenkins相同的vm上(或在/ var / lib / jenkins / workspace上) 无论如何要完成这件事吗? 请分享您的建议。

3 个答案:

答案 0 :(得分:0)

是的,完成它的最快方法是为你jenkins使用主/从设置。因此,您需要做的是将slave添加到运行terraform的机器上。

答案 1 :(得分:0)

一般来说,保持Jenkins机器尽可能干净是一个好主意,因此你应该避免像Terraform一样在其上安装额外的软件包。解决此问题的更好方法是使用Terraform二进制文件创建一个Dockerfile以及您已经内置的所有插件,然后在Jenkins管道中需要做的就是构建并执行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

答案 2 :(得分:0)

我创建了一个let concurrentQueue = DispatchQueue(label: "com.company.concurrent", attribute: .concurrent) for i in 1 ... 10000 { concurrentQueue.async { getMissingImage(user[i]) } } awesome-jenkins-utils,您可以使用它在同一管道中同时使用不同版本的terraform。此外,您可以轻松地将构建参数映射到Terraform变量