-
Notifications
You must be signed in to change notification settings - Fork 118
/
Vagrantfile
132 lines (114 loc) · 5.58 KB
/
Vagrantfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
# Chrome driver doesn't work with bento box
# config.vm.box = "ubuntu/focal64"
config.vm.box = "bento/ubuntu-21.04"
config.vm.hostname = "ubuntu"
# set up network ip and port forwarding
config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "127.0.0.1"
config.vm.network "forwarded_port", guest: 5984, host: 5984, host_ip: "127.0.0.1"
config.vm.network "private_network", ip: "192.168.56.10"
# Windows users need to change the permissions explicitly so that Windows doesn't
# set the execute bit on all of your files which messes with GitHub users on Mac and Linux
config.vm.synced_folder "./", "/vagrant", owner: "vagrant", mount_options: ["dmode=755,fmode=644"]
############################################################
# Provider for VirtualBox
############################################################
config.vm.provider "virtualbox" do |vb|
# Customize the amount of memory on the VM:
vb.memory = "1024"
vb.cpus = 1
# Fixes some DNS issues on some networks
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
############################################################
# Provider for Docker
############################################################
config.vm.provider :docker do |docker, override|
override.vm.box = nil
# Chromium driver does not work with ubuntu so we use debian
override.vm.hostname = "debian"
docker.image = "rofrano/vagrant-provider:debian"
docker.remains_running = true
docker.has_ssh = true
docker.privileged = true
docker.volumes = ["/sys/fs/cgroup:/sys/fs/cgroup:rw"]
docker.create_args = ["--cgroupns=host"]
# Uncomment to force arm64 for testing images on Intel
# docker.create_args = ["--cgroupns=host", "--platform=linux/arm64"]
end
# Copy your .gitconfig file so that your git credentials are correct
if File.exists?(File.expand_path("~/.gitconfig"))
config.vm.provision "file", source: "~/.gitconfig", destination: "~/.gitconfig"
end
# Copy your ssh keys for github so that your git credentials work
if File.exists?(File.expand_path("~/.ssh/id_rsa"))
config.vm.provision "file", source: "~/.ssh/id_rsa", destination: "~/.ssh/id_rsa"
end
# Copy your IBM Clouid API Key if you have one
if File.exists?(File.expand_path("~/.bluemix/apikey.json"))
config.vm.provision "file", source: "~/.bluemix/apikey.json", destination: "~/.bluemix/apikey.json"
end
# Copy your .vimrc file so that your VI editor looks right
if File.exists?(File.expand_path("~/.vimrc"))
config.vm.provision "file", source: "~/.vimrc", destination: "~/.vimrc"
end
######################################################################
# Setup a Python 3 development environment
######################################################################
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y git tree wget vim jq python3-dev python3-pip python3-venv python3-selenium
apt-get -y autoremove
# Install Chromium Driver
apt-get install -y chromium-driver
# Create a Python3 Virtual Environment and Activate it in .profile
sudo -H -u vagrant sh -c 'python3 -m venv ~/venv'
sudo -H -u vagrant sh -c 'echo ". ~/venv/bin/activate" >> ~/.profile'
# Install app dependencies
sudo -H -u vagrant sh -c '. ~/venv/bin/activate && pip install -U pip && pip install wheel'
sudo -H -u vagrant sh -c '. ~/venv/bin/activate && cd /vagrant && pip install -r requirements.txt'
SHELL
######################################################################
# Add PostgreSQL docker container
######################################################################
# docker run -d --name postgres -p 5432:5432 -v psql_data:/var/lib/postgresql/data postgres
config.vm.provision :docker do |d|
d.pull_images "postgres:alpine"
d.run "postgres:alpine",
args: "-d --name postgres -p 5432:5432 -v psql_data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres"
end
######################################################################
# Add a test database after Postgres is provisioned
######################################################################
config.vm.provision "shell", inline: <<-SHELL
# Create testdb database using postgres cli
echo "Pausing for 60 seconds to allow PostgreSQL to initialize..."
sleep 60
echo "Creating test database"
docker exec postgres psql -c "create database testdb;" -U postgres
# Done
SHELL
######################################################################
# Setup a Bluemix and Kubernetes environment
######################################################################
config.vm.provision "shell", inline: <<-SHELL
echo "\n************************************"
echo " Installing IBM Cloud CLI..."
echo "************************************\n"
# WARNING!!! This only works on Intel computers
# Install IBM Cloud CLI as Vagrant user
curl -fsSL https://clis.cloud.ibm.com/install/linux | sh
sudo -H -u vagrant bash -c 'echo "alias ic=/usr/local/bin/ibmcloud" >> ~/.bash_aliases'
echo "\n************************************"
echo ""
echo "If you have an IBM Cloud API key in ~/.bluemix/apikey.json"
echo "You can login with the following command:"
echo ""
echo "ibmcloud login -a https://cloud.ibm.com --apikey @~/.bluemix/apikey.json -r us-south"
echo "\nibmcloud target --cf"
echo "\n************************************"
SHELL
end