This repository contains:
-
Scripts to build immutable servers with Packer & Vagrant & Chef
- Kernel images - clean installs without any provisioners
- Base images
- Jenkins master
- Jenkins slaves
Targets:
- Vagrant boxes for VirtualBox - testing environment
- Amazon AMIs - production environment
-
Scripts to deploy infrastructure with Terraform
- Java (JRE or JDK) >= 8
- VirtualBox (5.1.26)
- Packer
- Vagrant and vagrant-cachier plugin
- Terraform (~> 0.10)
- Ruby & Bundler (~> 1.14, tested with 1.15.4)
- Python 3 & Pipenv
Before start you have to install required gems, packages, plugins and cookbooks:
./gradlew prerequisitesInstall
When necessary you can check locked versions for updates with:
./gradlew prerequisitesOutdated
and update them with:
./gradlew prerequisitesUpdate
NOTE: Update of gems with exact version constraint (e.g. Chef) is not supported now (see #67). When you change their versions you have to update them manually with:
bundle update chef
-
Clean and build kernel VirtualBox images
./gradlew clean-kernel-*-vbox ./gradlew build-kernel-*-vbox
There is a separate task for each image
-
Deploy common Terraform resources, build base VirtualBox images & Vagrant boxes
./gradlew build-base
-
Test build toolkit used for Jenkins slaves:
./gradlew kitchenTest-BuildToolkit
-
Build Jenkins slave AMIs:
./gradlew build-JenkinsSlaves
-
Test Jenkins Master:
./gradlew kitchenTest-JenkinsMaster-vbox ./gradlew kitchenTest-JenkinsMaster-amazon
-
Build JenkinsMaster production AMI:
./gradlew build-JenkinsMaster
-
Deploy instances:
./gradlew deploy
Check code before pushing:
gradlew --continue check
- Immutable Servers:
- Alvaro Miranda Aguilera: Idea about separate minimal (kernel) image
- MistiC: Nested
Berksfile
s - StephenKing: Method to install Jenkins plugins
- tknerr:
Vagrantfile
to enablevagrant-cachier
Copyright © 2015-2017 Basil Peace
This is part of FIDATA Infrastructure.
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.