Правильное размещение учетных данных AWS для настройки Jenkins / Packer

#amazon-web-services #jenkins #github #packer

#amazon-веб-сервисы #дженкинс #github #упаковщик

Вопрос:

Мне нужно, чтобы Packer создал образ в AWS. Шаблон Packer будет сохранен в репозитории Github и развернут с помощью Jenkins.

Где я должен указать свой доступ к AWS и секретные ключи? Я не могу поместить их в шаблон JSON в Github (это было бы плохо) : (

Настраивать ли мне свои ключи доступа с помощью командной строки AWS на сервере Jenkins или я могу указать свои в плагине Jenkins Packer?

Комментарии:

1. Для чего именно нужны учетные данные? Для какого ресурса? С какой целью? Эта информация повлияет на правильный метод хранения учетных данных.

Ответ №1:

Лучший вариант — использовать рабочий узел с ролью экземпляра, у которого есть необходимые разрешения для запуска Packer. Второй вариант — использовать плагин Jenkins secrets для хранения секретов и установки их в качестве переменных среды в вашем задании сборки Packer.

Комментарии:

1. Спасибо; то, что я никогда не рассматривал.

Ответ №2:

Я проведу расследование с использованием плагина Jenkins secrets. Тем временем я могу указать секретный ключ и ключ доступа в поле «Дополнительные параметры», как показано. Шаблон Packer сохраняется в Github, который Jenkins извлекает при выполнении задания. Не использовал плагин Github Pull из соображений безопасности.

введите описание изображения здесь

Ответ №3:

Как ответил Рикард, лучше использовать роль экземпляра. Способ, которым мы реализовали, заключается в том, что у нас есть роль под названием «PackerRole» с необходимыми разрешениями, которая используется packer. В файле packer.json укажите роль как «iam_instance_profile»: «PackerRole».

Теперь создайте отдельную роль под названием «JenkinsRole» (любое подходящее вам имя, которое будет использоваться узлом Jenkins), которая имеет встроенную политику для передачи «PackerRole».

{ «Sid»: «», «Эффект»: «Разрешить», «Действие»: «iam: passrolle», «Ресурс»: «arn: aws: iam::1234567:role/PackerEc2Role»}