Last active
November 8, 2017 11:49
-
-
Save jyates/a881879f97155c0d8c8f to your computer and use it in GitHub Desktop.
Vagrantfile for centOS docker cloudbreak instance
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- mode: ruby -*- | |
# vi: set ft=ruby : | |
Vagrant.configure(2) do |config| | |
# Base Box | |
config.vm.box = "CentOS-7.1.1503_64" | |
config.vm.box_url = "https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box" | |
# Base IP address range used for VMs. Pretty sure not to be already used on the local network. | |
$BASE_RANGE = ENV.fetch("BASE_RANGE", "10.200.0.") | |
cloudbreak_ip = $BASE_RANGE + ENV.fetch("CB_IP", "3") | |
config.vm.define "cloudbreak", primary: true do |cb| | |
# Networking | |
############# | |
cb.vm.network "private_network", ip: cloudbreak_ip | |
# Environment | |
############## | |
# Add our custom stack to the available stacks | |
cb.vm.synced_folder "vagrant/", "/vagrant" | |
# Setup the VM system properties | |
cb.vm.provider "virtualbox" do |vb| | |
# Customize the amount of memory on the VM: | |
vb.name = ENV.fetch("CB_VM_NAME", "cloudbreak_host") | |
vb.memory = ENV.fetch("CB_MEMORY", "8192") | |
vb.cpus = ENV.fetch("CB_CPUS", "4") | |
# cap the CPU usage to 75% (3 of 4 cores) | |
vb.customize ["modifyvm", :id, "--cpuexecutioncap", ENV.fetch("CB_CPU_PERCENT", "75")] | |
end | |
# Provisioning | |
############## | |
# copy the docker repo file into yum repos. runs as shell because file provisioner doesn't have perms | |
cb.vm.provision "prepare-docker", type: "shell", inline: "sudo cp /vagrant/docker.repo /etc/yum.repos.d/docker.repo" | |
cb.vm.provision "install-docker", type: "shell" do |s| | |
s.inline = <<-SHELL | |
# setup firewalld (wrapper for iptables) to allow cross-docker communication | |
firewall-cmd --permanent --zone=trusted --change-interface=docker0 | |
firewall-cmd --permanent --zone=trusted --add-port=4243/tcp | |
firewall-cmd --reload | |
# stuff docker actually needs | |
sudo yum install -y docker-engine | |
sudo service docker start | |
sudo docker run hello-world | |
# ensure the docker daemon is always running when we start | |
sudo chkconfig docker on | |
SHELL | |
end | |
cb.vm.provision "prepare-cloudbreak", type: "shell" do |s| | |
s.inline = <<-SHELL | |
yum install -y unzip | |
yum install -y net-tools | |
yum install -y telnet | |
# personal tools | |
yum install -y vim | |
SHELL | |
end | |
cb.vm.provision "install-cloudbreak", type: "shell" do |s| | |
s.inline = <<-SHELL | |
dest=/bin | |
hash -r > /dev/null | |
if (command -v cbd > /dev/null); then | |
existing=$(command -v cbd) | |
dest=${existing%/*} | |
else | |
if echo "$PATH" | grep -q '/usr/local/bin' ; then | |
dest=/usr/local/bin | |
fi | |
fi | |
cat /vagrant/cloudbreak-deployer* | tar -xz -C ${dest} | |
echo "---> cbd installed into ${dest}" | |
cbd --version | |
SHELL | |
end | |
cloudbreak_dir = "/vagrant/cloudbreak-deployment" | |
cb.vm.provision "init-cloudbreak", type: "shell" do |s| | |
s.inline = <<-SHELL | |
# Setup the profile | |
dir="#{cloudbreak_dir}" | |
if [ -d $dir ]; then | |
rm -rf ${dir} | |
fi | |
mkdir $dir | |
cd $dir | |
echo "export PUBLIC_IP=#{cloudbreak_ip}" > Profile | |
echo "export PRIVATE_IP=#{cloudbreak_ip}" >> Profile | |
SHELL | |
end | |
if ENV.fetch("HEADLESS", false) | |
cb.vm.provision "setup-cloudbreak", type: "shell" do |s| | |
s.inline = <<-SHELL | |
cd "#{cloudbreak_dir}" | |
cbd generate | |
cbd start | |
cbd login | |
SHELL | |
end # last provision | |
else | |
# Do the cloudbreak setup. We can get part of the way, but requires an actual login to finish | |
cb.vm.provision "setup-cloudbreak", type: "shell" do |s| | |
s.inline = <<-SHELL | |
cd "#{cloudbreak_dir}" | |
echo "You need to login and run cloubreak on an interactive shell (yes, I know):" | |
echo " vagrant ssh" | |
echo " sudo su - root" | |
echo " cd #{cloudbreak_dir}; cbd generate; cbd start; cbd login" | |
SHELL | |
end # last provision | |
end # if statement | |
end #the vm | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment