У меня есть требование создать доступный образ докера и запустить playbook с помощью конвейера jenkins.
Я создал образ докера, но я не понимаю, как ключи SSH, поддерживаемые докером, копируются на удаленный доступный хост. Нужно ли делать эту настройку заранее?
Вы упомянули, что используете для этого Jenkins. Есть плагин под названием "Агент SSH"что позволяет запускать сценарии в контексте закрытого ключа SSH даже внутри контейнера докеров.
Прежде всего, убедитесь плагин установлен в Дженкинсе
Затем зарегистрируйте закрытый ключ SSH в Секреты Дженкинса
Затем вы можете повторно использовать секретный идентификатор в своей работе, как показано в примере ниже:
pipeline {
agent {
label "docker"
}
environment {
ANSIBLE_VAULT_PASSWORD = credentials('ANSIBLE_VAULT_PASSWORD')
}
options {
timeout(time: 60, unit: "MINUTES")
}
stages {
stage('Run Ansible playbook') {
agent {
docker {
image 'hippolab/ansible'
args '-u 0:0'
reuseNode true
}
}
steps {
sshagent(credentials : ['MY_SSH_KEY_SECRET_ID']) {
sh '''
ansible-galaxy install -r requirements.yml
echo ${ANSIBLE_VAULT_PASSWORD} | ansible-playbook \
--inventory-file hosts \
--extra-vars ansible_ssh_common_args='"-o StrictHostKeyChecking=no -o ServerAliveInterval=30"' \
--ask-vault-pass \
my_playbook.yml
'''
}
}
}
}
post {
always {
deleteDir()
}
}
}
Авторский опыт: