Jenkinsfile - добавить учетные данные закрытого ключа в terraform - PullRequest
0 голосов
/ 11 сентября 2018

Как часть моего 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, поскольку файл закрытого ключа не найден.

...