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