我已经创建了Jenkins Pipeline来使用terraform自动化基础设施部署,其中包括3个阶段terraform初始化、terraform计划和terraform应用。
在执行管道时,我遇到了如下错误:-
我无法理解错误是什么以及为什么会发生。
如果我在本地设备中运行相同的配置和terraform代码,它会工作得很好,很成功。
但是,如果我运行同样的使用Jenkins管道,它给我一个错误。
下面是我为terraform创建的文件夹结构:-
我正在尝试使用以下命令执行terraform配置:-
terraform init -backend-config=../environment/$params.location/$params.env/backend.tf -backend-config="subscription_id="$ARM_SUBSCRIPTION_ID""
terraform plan -var-file=../environment/$params.location/$params.env/terraform.tfvars
terraform apply -var-file=../environment/$params.location/$params.env/terraform.tfvars
有没有人能帮我弄清楚我哪里出错了。我试过在全球范围内搜索,但没有用。
欢迎提出任何建议。
请查找Jenkins管道代码(容器、体积和资源已从代码中隐藏,并且运行良好。Terraform初始化阶段失败):-
pipeline {
agent {
kubernetes {
yaml '''
apiVersion: v1
kind: Pod
metadata:
labels:
iac: labelbuild
spec:
containers:
resources:
volumeMounts:
volumes:
'''
}
}
environment {
ARM = credentials("${params.Service_principal}")
}
parameters {
choice(choices: '', description: 'Select Location to Build', name: 'location')
choice(choices: '', description: 'Select Env to Build', name: 'env')
string(name: 'Service_principal', defaultValue: '', description: 'Enter the Service principal ID for ex : ngpr-deploy-dev-sp' )
string(name: 'repo_url', defaultValue: '', description: 'Enter the Infra repo http URL' )
string(name: 'Branch_Name', defaultValue: '', description: 'Enter the Infra repo URL Branch to build' )
}
/* Terraform stages will be running to excute the scripts from the repository and deploy it in the Azure portal */
stages {
stage ('terraform init') {
steps{
container('terraform') {
sh """
echo "Service_Principal Name is ${params.Service_principal}"
terraform version
curl ifconfig.me
ls -lat
pwd
cd terraform/source
rm -rf .terraform/
rm -f .terraform.lock.hcl
terraform init -backend-config=../environment/$params.location/$params.env/backend.tf -backend-config="subscription_id="${ARM_SUBSCRIPTION_ID}""
"""
}
}
}
stage ('terraform validate') {
steps {
container('terraform') {
sh """
cd terraform/source
terraform validate
"""
}
}
}
stage ('terraform plan') {
steps {
container('terraform') {
sh """
cd terraform/source
terraform plan -var-file=../environment/$params.location/$params.env/terraform.tfvars
"""
}
}
}
stage ('terraform apply') {
input {
message "User input required"
ok "Yes"
parameters {booleanParam(defaultValue: false, name: 'Choose "yes" if you want to apply this plan')}
}
steps{
container('terraform') {
sh """
cd terraform/source
terraform apply -var-file=../environment/$params.location/$params.env/terraform.tfvars
"""
}
}
}
}
}
1条答案
按热度按时间ubbxdtey1#
这个错误似乎是由于Jenkins脚本中的一个打字错误。屏幕截图显示“environments”(复数); Jenkins文件显示“environment”(末尾没有“s”)。可以通过将Jenkins文件中对“environment”的相关引用替换为“environments”来修复此问题。