У меня есть ansible playbook, который ссылается на данные ключа s sh для добавления ключа publi c в файл author_host при его создании, вот выдержка.
vars:
vm1:
ssh_key_var: '{{ ssh_key_data }}'
tasks:
- name: Create VM
azure_rm_virtualmachine:
resource_group: '{{ resource_group1.name }}'
name: '{{ vm1.name }}'
vm_size: '{{ vm1.size }}'
admin_username: '{{ vm1.admin_username }}'
ssh_password_enabled: false
ssh_public_keys:
- path: '/home/{{ vm1.admin_username }}/.ssh/authorized_keys'
key_data: '{{ vm1.ssh_key_var }}'
network_interfaces: '{{ network_interface1.name }}'
image: '{{ vm1.image }}'
Обычно это довольно просто - я запускаю на своем ноутбуке и получаю ключ локально, возможно получаю данные, именуемые файлом.
Я пытался запустить playbook с секретным текстом в конвейере jenkins, используя секретный текст переменной среды "AZURE_AUTHORIZED_KEY" для ключа publi c, который я сохраняю в учетных данных:
stage('Deploy server') {
agent {
docker { image 'my_ansible_container:latest' }
}
environment {
AZURE_CLIENT_ID = credentials('AZURE_CLIENT_ID_ANSIBLE')
AZURE_SECRET = credentials('AZURE_SECRET_ANSIBLE')
AZURE_SUBSCRIPTION_ID = credentials('AZURE_SUBSCRIPTION_ID_ANSIBLE')
AZURE_TENANT = credentials('AZURE_TENANT_ANSIBLE')
AUTHORIZED_KEY = credentials('AZURE_AUTHORIZED_KEY')
}
steps {
// deploy server
sh "ansible-playbook playbook.yml --extravars \"ssh_key_data=${AUTHORIZED_KEY}\""
}
}
Когда я добавляю ключ publi c как переменную в playbook, все работает нормально, но я не хочу хранить ключи в репо, даже если они являются публичными c ключами и это частное репо.
Когда я импортирую как env_var, он, кажется, не принимает значение и не "каскадирует" его в переменную, как и ожидалось. У кого-нибудь есть решение этой проблемы - мой подход неправильный?
Спасибо