Как часть моего Jenkinsfile, я пытаюсь загрузить секретный файл, который у меня есть, на мою машину Jenkins и использовать его в качестве переменной для передачи в мой скрипт terraform. Этот скрипт terraform ssh'ing на мой недавно предоставленный ANSIBLE сервер и создает Ansible инвентаризацию. Проблема заключается в загрузке файла закрытого ключа в скрипт terraform в качестве переменной для создания ssh-соединения из моей эфемерной сборки в Jenkins.
Как вы можете видеть, загрузите кредитную карту и сохраните ее в terraform var (TF_VAR_private_key), но у меня возникли проблемы с загрузкой его в мой скрипт terraform main.tf.
Любые предложения или помощь высоко ценится.
Jenkinsfile
stages {
stage('Provision Infrastructure') {
steps {
// credentialsId loading private key and storing in var
withCredentials([file(credentialsId: 'ec2user.pem', variable: 'TF_VAR_private_key'),
[
$class : 'AmazonWebServicesCredentialsBinding',
credentialsId : "aws_credentials",
accessKeyVariable: 'AWS_ACCESS_KEY_ID',
secretKeyVariable: 'AWS_SECRET_ACCESS_KEY'
]])
{ sh """
terraform version
cd ${TERRAFORM_DIR}
terraform init
terraform plan
terraform apply -input=false -auto-approve
""" }
}
}
main.tf
resource "null_resource" "inventories" {
triggers {
template = "${template_file.inventory.rendered}"
}
connection {
type = "ssh"
host = "${element(aws_instance.ansible.*.private_ip, 0)}"
user = "ec2-user"
private_key = "${file("${var.private_key}")}"
agent = false
timeout = "1m"
}
provisioner "remote-exec" {
inline = [
"echo '${template_file.inventory.rendered}' > /tmp/inventory"
]
}
}
Ошибка:
Невозможно запустить remote-exec, поскольку файл закрытого ключа не найден.