#jenkins #jenkins-pipeline #jenkins-plugins #terraform
#дженкинс #дженкинс-конвейер #дженкинс-плагины #terraform
Вопрос:
Я работаю над созданием Jenkins для нашей довольно большой и растущей инфраструктуры. В настоящее время мы используем terraform с userdata для запуска наших экземпляров в AWS. В настоящее время в нашем репозитории установлена эта иерархия
terraform/
├── server1/
│ ├── server1.tf
│ ├── userdata.yaml
├── server2/
│ ├── server2.tf
│ ├── userdata.yaml
├── server3/
│ ├── server3.tf
│ ├── userdata.yaml
├── server4/
│ ├── server4.tf
│ ├── userdata.yaml
├── server5/
│ ├── server5.tf
│ ├── userdata.yaml
В идеале Jenkins должен запускаться при слиянии с master, однако мы хотим, чтобы он запускался только с измененным / новым файлом, чтобы предотвратить удаление экземпляров и попытки построить более 50 серверов. Каким был бы наилучший способ для Jenkins проверять наличие изменений в папках и применять конвейер terraform только к новым / обновленным?
Спасибо всем
Комментарии:
1. Terraform уже обрабатывает это с помощью своего файла состояния.
Ответ №1:
Мне не нравится ваш подход, но если вы настаиваете на том, чтобы делать это через jenkins, вы можете написать оболочку для запуска terraform в зависимости от того, какие файлы изменены.
folders=`$(git show --name-only |awk -F / '/^terraform/{print $1, FS, $2}')
for folder in ${folders}
do
pushd ${folder}
terraform init <options>
terraform plan <options>
terraform apply <options>
popd
done
Комментарии:
1. Что бы вы предложили в качестве подхода?