Доступ к репозиторию Terraform с помощью git в Docker Container на AWS - отказ в доступе с помощью публичного ключа - PullRequest
0 голосов
/ 03 октября 2018

Я использую Jenkins для раскрутки ведомых EC2, которые запускают док-контейнеры.Мои модули terraform размещены в частном облачном репозитории Bitbucket.Я храню закрытый ключ в хранилище параметров AWS SSM.Я добавил ключ в bitbucket и протестировал эту настройку локально в докере, работающем с тем же контейнером, который я использую для конвейера Jenkins.

Я получаю сообщение об ошибке открытого ключа, разрешение отклонено при клонировании модулей terraform.

Error downloading modules: Error loading modules: error downloading 'ssh://git@bitbucket.org/username/tf_modules.git?ref=slim-mgmt': /usr/bin/git exited with 128: Cloning into '.terraform/modules/7b6322b45f5b06dd4f247d0d3dca5237'...
Warning: Permanently added the RSA host key for IP address '18.205.93.2' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Обеззараженная версия моего Jenkinsfile

node('docker_ec2') {
    checkout scm
    withAWSParameterStore(credentialsId: 'jenkin_cicd', naming: 'relative', path: '/secrets/path/', recursive: true, regionName: 'us-east-1') {
    docker.image('private/container:0.7').inside {
        stage('Configure Git Access') {
            sh "echo '$BITBUCKET_CLOUD' > repo_key"
            sh 'chmod 600 repo_key'
            sh "export GIT_SSH_COMMAND='ssh -i repo_key'"
            sh 'mkdir -p ~/.ssh'
            sh 'ssh-keyscan -t rsa bitbucket.org  >> ~/.ssh/known_hosts'
        }
        stage('Terraform'){
            sh 'terraform --version'
            sh 'terraform init -upgrade=true -get=true -get-plugins=true'
            sh 'terraform validate'
        }
    }
    }
}

Я загружаю содержимое ключа в хранилище параметров AWS SSM с помощью этой команды.

aws ssm put-parameter --region us-east-1 --profile profile-name --type String --name  /secrets/path/bitbucket_cloud --value "$(cat aws_bitbucket_key)" --overwrite

Яв состоянии выдать get-параметры для ключа, и он возвращается, я вижу, что он включает \ n в возвращении.Что я предполагаю, что все в порядке.

aws ssm get-parameters --name "/secrets/path/bitbucket_cloud" --profile profile-name

{
    "Parameters": [
        {
            "Name": "/secrets/path/bitbucket_cloud",
            "Type": "String",
            "Value": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn\nNhAAAAAwEAAQAAAQEArkDZWW9EuAVReKebfOB3l1PE7RFeCx4bh1NGhDrEJWVVtJVQD3g6\n6zhFTRtbORFRW7+PoAzUKy8Zy2Xn013Ws7z8CbZuWdOR8vpIB/bubYFlhrFiZKvNfUCxIS\n7UWZzpNd/
            actual key here
            A9Nua4/YZSru7+pltpgXciumWwXMJRCfOq\nSIPXsipDF7cI6vpOULyTu6zvGuAbSW6reYEOVxShE0WpfQdUYoipZSs/N3fCgWBJFryFA6\nU/TNerasQt4P79CpAAAAC2p1c3RpbkB0cmFwAQIDBAUGBw==\n-----END OPENSSH PRIVATE KEY-----",
            "Version": 3,
            "LastModifiedDate": 1538575244.04,
            "ARN": "arn:aws:ssm:region:numbers:parameter/secrets/path/bitbucket_cloud"
        }
    ],
    "InvalidParameters": []
}

Ключ выглядит хорошо, на выходе журнала Дженкинса.Обеззараженная копия.

+ echo -----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
actual key here
U/TNerasQt4P79CpAAAAC2p1c3RpbkB0cmFwAQIDBAUGBw==
-----END OPENSSH PRIVATE KEY-----

Я выполнил контейнер локально.Я использовал ssm get-параметр, чтобы опустить ключ и вставить его в оператор echo внутри контейнера в файл с именем repo_key.Затем я chmod 600 этот ключ, и настроил Git для использования этого ключа.После этого я смог сделать клон модуля.

Я вроде как на моем конце, куда мне идти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...