Большой терраформный трубопровод в Дженкинсе - PullRequest
0 голосов
/ 15 марта 2019

Я работаю над созданием Дженкинса для нашей довольно большой и растущей инфраструктуры.В настоящее время мы используем 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 запускается при слиянии с мастером, однако мы хотим, чтобы он запускался только на измененном / новом файле, чтобы предотвратить удаление экземпляров и попытку сборки.+ серверы.Как лучше всего было бы, чтобы Дженкинс проверял изменения в папках и применял конвейер terraform только к новым / обновленным?

Спасибо всем

1 Ответ

0 голосов
/ 16 марта 2019

Мне не нравится подход на вашем пути, но если вы настаиваете сделать это с помощью 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
...