{
"variables" : {
"aws_access_key" : "{{ env `AWS_ACCESS_KEY` }}",
"aws_secret_key" : "{{ env `AWS_SECRET_KEY` }}",
"ssh_private_key" : "{{ env `SSH_PRIVATE_KEY` }}",
"aws_ami_us_east_1" : "{{ env `AWS_BASE_AMI` }}",
"jenkins_master_image_version" : "{{ env `JENKINS_MASTER_IMAGE_VERSION` }}"
},
"builders" : [...],
"provisioners" : [...]
}
I invoke packer in a pipeline, like this
stage("Create Jenkins AMI") {
steps {
script {
withCredentials([sshUserPrivateKey(credentialsId: "ec2-user-ssh", keyFileVariable: "SSH_PRIVATE_KEY")]) {
dir("$env.WORKSPACE/deployment/jenkins/packer") {
sh """
export AWS_BASE_AMI=`aws ec2 describe-images \
--owners amazon \
--filters "Name=name,Values=amzn2-ami-hvm-2.0.*.?-x86_64-gp2" "Name=state,Values=available" \
--query "reverse(sort_by(Images, &CreationDate))[:1].ImageId" \
--output text` \
&& export JENKINS_MASTER_IMAGE_VERSION=$env.JENKINS_VERSION \
&& packer build jenkins-ami-master.json
"""
}
}
}
}
}
Packer builds the temporary instance but fails to ssh to it, and hence can't run my provisioners. what am i missing?