Advertisement
nlozovan

Untitled

Aug 31st, 2021
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.84 KB | None | 0 0
  1. # -*- mode: ruby -*-
  2. # vi: set ft=ruby :
  3.  
  4. Vagrant.configure("2") do |config|
  5.  
  6. # Forward host machine SSH agent to guest machine
  7. config.ssh.forward_agent = true
  8.  
  9. if Vagrant.has_plugin?("vagrant-vbguest") then
  10. config.vbguest.auto_update = false
  11. end
  12.  
  13. config.vm.provider :docker do |docker, override|
  14. override.vm.box = nil
  15. docker.image = "vagrant-nicu:latest"
  16. docker.remains_running = true
  17. docker.has_ssh = true
  18. docker.privileged = true
  19. docker.volumes = ["/sys/fs/cgroup:/sys/fs/cgroup:ro"]
  20.  
  21. docker.create_args = [
  22. "--add-host", "dashboard.portfolio.local pw.internal.pixieset.local:192.168.56.106",
  23. "--add-host", "mwa.local mwa.internal.pixieset.local:192.168.56.107",
  24. "--add-host", "cs.internal.pixieset.local:192.168.56.109",
  25. "--add-host", "studio.local sm.internal.pixieset.local:192.168.56.111",
  26. # "--mac-address", "255.255.255.0",
  27. # "--ip", "192.168.56.101",
  28. # "--dns", "[8.8.8.8]"
  29. ]
  30. # Uncomment to force arm64 for testing images on Intel
  31. # docker.create_args = ["--platform=linux/arm64"]
  32. end
  33.  
  34. # Redis Server
  35. config.vm.define "redis" do |redis|
  36. # redis.vm.box = "ubuntu/focal64"
  37. redis.vm.hostname = 'redis'
  38. # redis.vm.box_url = "ubuntu/focal64"
  39. redis.vm.network :private_network, ip: "192.168.56.103"
  40.  
  41. redis.vm.synced_folder "~/dev/ansible-pixieset/", "/ansible",
  42. owner: "root", group: "root"
  43.  
  44. # redis.vm.provider :virtualbox do |v|
  45. # v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  46. # v.customize ["modifyvm", :id, "--memory", 512]
  47. # v.customize ["modifyvm", :id, "--name", "redis"]
  48. # v.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 2000]
  49. # end
  50. redis.vm.provision "ansible_local" do |ansible|
  51. ansible.playbook = "/ansible/dev-redis.yml"
  52. ansible.become = true
  53. ansible.install = true
  54. ansible.compatibility_mode = "2.0"
  55. end
  56. end
  57.  
  58. # MySQL 5.7 server
  59. config.vm.define "db57" do |db57|
  60. # db57.vm.box = "ubuntu/xenial64"
  61. db57.vm.hostname = 'db57'
  62. # db57.vm.box_url = "ubuntu/xenial64"
  63. db57.vm.network :private_network, ip: "192.168.56.110"
  64.  
  65. db57.vm.synced_folder "~/dev/ansible-pixieset/", "/ansible",
  66. owner: "root", group: "root"
  67.  
  68. # db57.vm.provider :virtualbox do |v|
  69. # v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  70. # v.customize ["modifyvm", :id, "--memory", 768]
  71. # v.customize ["modifyvm", :id, "--name", "db57"]
  72. # v.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 2000]
  73. # end
  74. db57.vm.provision "ansible_local" do |ansible|
  75. ansible.playbook = "/ansible/dev-db57.yml"
  76. ansible.become = true
  77. ansible.install = true
  78. ansible.compatibility_mode = "2.0"
  79. ansible.extra_vars = { ansible_python_interpreter:"/usr/bin/python3" }
  80. end
  81. end
  82.  
  83. # Web Server for Client Gallery App
  84. config.vm.define "web" do |web|
  85. # web.vm.box = "ubuntu/focal64"
  86. web.vm.hostname = 'web'
  87. # web.vm.box_url = "ubuntu/focal64"
  88. # uncomment the line below if you want to make your server publicly accessible from LAN. You can access it locally by default
  89. # web.vm.network :public_network
  90. web.vm.network :private_network, ip: "192.168.56.101", dns: "8.8.8.8"
  91. # web.vm.network :forwarded_port, guest: 80, host: 8080
  92.  
  93. web.vm.synced_folder "~/dev/pixieset/", "/home/pixieset/public/pixieset.com/public/pixieset",
  94. owner: "www-data", group: "www-data"
  95. web.vm.synced_folder "~/dev/ansible-pixieset/", "/ansible",
  96. owner: "root", group: "root"
  97. web.vm.synced_folder "~/.aws/", "/var/www/.aws", create: true,
  98. owner: "www-data", group: "www-data"
  99. web.vm.synced_folder "~/.
  100. aws/", "/home/vagrant/.aws", create: true
  101.  
  102. # web.vm.provider :docker do |docker, override|
  103. # docker.ports = ["8080:80"]
  104. # end
  105.  
  106. # web.vm.provider :virtualbox do |v|
  107. # v.customize ["modifyvm", :id, "--memory", 1536]
  108. # v.customize ["modifyvm", :id, "--name", "web"]
  109. # v.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 2000]
  110. # end
  111.  
  112. web.vm.provision "ansible_local" do |ansible|
  113. ansible.playbook = "/ansible/dev-web.yml"
  114. ansible.become = true
  115. ansible.install = true
  116. ansible.compatibility_mode = "2.0"
  117. end
  118. end
  119.  
  120. # Web Server for Mobile Gallery App
  121. config.vm.define "mobile", autostart: false do |mobile|
  122. mobile.vm.box = "ubuntu/focal64"
  123. mobile.vm.hostname = 'mobile'
  124. mobile.vm.box_url = "ubuntu/focal64"
  125. # uncomment the line below if you want to make your server publicly accessible from LAN. You can access it locally by default
  126. # mobile.vm.network :public_network
  127. mobile.vm.network :private_network, ip: "192.168.56.107", dns: "8.8.8.8"
  128.  
  129. mobile.vm.synced_folder "~/dev/mobile-web-app", "/home/pixieset/public/mobile-web-app",
  130. owner: "www-data", group: "www-data"
  131. mobile.vm.synced_folder "~/dev/ansible-pixieset/", "/ansible",
  132. owner: "root", group: "root"
  133. mobile.vm.synced_folder "~/.aws/", "/var/www/.aws", create: true,
  134. owner: "www-data", group: "www-data"
  135. mobile.vm.synced_folder "~/.aws/", "/home/vagrant/.aws", create: true
  136.  
  137. mobile.vm.provider :virtualbox do |v|
  138. v.customize ["modifyvm", :id, "--memory", 512]
  139. v.customize ["modifyvm", :id, "--name", "mobile"]
  140. v.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 2000]
  141. end
  142. mobile.vm.provision "ansible_local" do |ansible|
  143. ansible.playbook = "/ansible/dev-web-mobile.yml"
  144. ansible.become = true
  145. ansible.install = true
  146. ansible.compatibility_mode = "2.0"
  147. end
  148. end
  149.  
  150. # Web Server for Portfolio Website
  151. config.vm.define "portfolio", autostart: false do |portfolio|
  152. portfolio.vm.box = "ubuntu/focal64"
  153. portfolio.vm.hostname = 'portfolio'
  154. portfolio.vm.box_url = "ubuntu/focal64"
  155. # uncomment the line below if you want to make your server publicly accessible from LAN. You can access it locally by default
  156. # portfolio.vm.network :public_network
  157. portfolio.vm.network :private_network, ip: "192.168.56.106", dns: "8.8.8.8"
  158.  
  159. portfolio.vm.synced_folder "~/dev/portfolio/src", "/home/pixieset/public/portfolio",
  160. owner: "www-data", group: "www-data"
  161. portfolio.vm.synced_folder "~/dev/ansible-pixieset/", "/ansible",
  162. owner: "root", group: "root"
  163. portfolio.vm.synced_folder "~/.aws/", "/var/www/.aws", create: true,
  164. owner: "www-data", group: "www-data"
  165. portfolio.vm.synced_folder "~/.aws/", "/home/vagrant/.aws", create: true
  166.  
  167. portfolio.vm.provider :virtualbox do |v|
  168. v.customize ["modifyvm", :id, "--memory", 512]
  169. v.customize ["modifyvm", :id, "--name", "portfolio"]
  170. v.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 2000]
  171. end
  172. portfolio.vm.provision "ansible_local" do |ansible|
  173. ansible.playbook = "/ansible/dev-web-portfolio.yml"
  174. ansible.become = true
  175. ansible.install = true
  176. ansible.compatibility_mode = "2.0"
  177. end
  178. end
  179.  
  180. # Web Server for Studio Manager
  181. config.vm.define "studio", autostart: false do |studio|
  182. studio.vm.box = "ubuntu/focal64"
  183. studio.vm.hostname = 'studio'
  184. studio.vm.box_url = "ubuntu/focal64"
  185. # uncomment the line below if you want to make your server publicly accessible from LAN. You can access it locally by default
  186. # studio.vm.network :public_network
  187. studio.vm.network :private_network, ip: "192.168.56.111", dns: "8.8.8.8"
  188.  
  189. studio.vm.synced_folder "~/dev/studio-manager/src", "/home/pixieset/public/studio-manager",
  190. owner: "www-data", group: "www-data"
  191. studio.vm.synced_folder "~/dev/ansible-pixieset/", "/ansible",
  192. owner: "root", group: "root"
  193. studio.vm.synced_folder "~/.aws/", "/var/www/.aws", create: true,
  194. owner: "www-data", group: "www-data"
  195. studio.vm.synced_folder "~/.aws/", "/home/vagrant/.aws", create: true
  196.  
  197. studio.vm.provider :virtualbox do |v|
  198. v.customize ["modifyvm", :id, "--memory", 512]
  199. v.customize ["modifyvm", :id, "--name", "studio"]
  200. v.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 2000]
  201. end
  202. studio.vm.provision "ansible_local" do |ansible|
  203. ansible.playbook = "/ansible/dev-web-studiomanager.yml"
  204. ansible.become = true
  205. ansible.install = true
  206. ansible.compatibility_mode = "2.0"
  207. end
  208. end
  209.  
  210. # CertManager
  211. config.vm.define "certmanager", autostart: false do |certmanager|
  212. certmanager.vm.box = "ubuntu/xenial64"
  213. certmanager.vm.hostname = 'certmanager'
  214. certmanager.vm.box_url = "ubuntu/xenial64"
  215. certmanager.vm.network :private_network, ip: "192.168.56.105"
  216.  
  217. # uid 1080 = certbot Ansible will set this during provisioning stage.
  218. # I cannot use username 'certbot' to referance it because it does not exist during the first boot up but I can use uids
  219. certmanager.vm.synced_folder "~/dev/pixieset/", "/home/pixieset/public/pixieset.com/public/pixieset",
  220. owner: 1080, group: 1080
  221. certmanager.vm.synced_folder "~/dev/ansible-pixieset/", "/ansible",
  222. owner: "root", group: "root"
  223. certmanager.vm.synced_folder "~/.aws/", "/var/www/.aws", create: true,
  224. owner: 1080, group: 1080
  225. certmanager.vm.synced_folder "~/.aws/", "/home/certbot/.aws", create: true
  226.  
  227. certmanager.vm.provider :virtualbox do |v|
  228. v.customize ["modifyvm", :id, "--memory", 512]
  229. v.customize ["modifyvm", :id, "--name", "certmanager"]
  230. # to-do: Create 2nd disk for CertManager to mimic production setup:
  231. # v.customize ['createhd', '--filename', 'certmanager-2nd-disk.vdi', '--size', 20 * 1024]
  232. # v.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', 'certmanager-second-disk.vdi']
  233. end
  234. certmanager.vm.provision "ansible_local" do |ansible|
  235. ansible.playbook = "/ansible/dev-certmanager.yml"
  236. ansible.become = true
  237. ansible.install = true
  238. ansible.compatibility_mode = "2.0"
  239. end
  240. end
  241.  
  242. # Terminator - SSL terminator machine
  243. config.vm.define "terminator", autostart: false do |terminator|
  244. terminator.vm.box = "ubuntu/focal64"
  245. terminator.vm.hostname = 'terminator'
  246. terminator.vm.box_url = "ubuntu/focal64"
  247. terminator.vm.network :private_network, ip: "192.168.56.104"
  248.  
  249. terminator.vm.synced_folder "~/dev/ansible-pixieset/", "/ansible",
  250. owner: "root", group: "root"
  251.  
  252. terminator.vm.provider :virtualbox do |v|
  253. v.customize ["modifyvm", :id, "--memory", 512]
  254. v.customize ["modifyvm", :id, "--name", "terminator"]
  255. end
  256. terminator.vm.provision "ansible_local" do |ansible|
  257. ansible.playbook = "/ansible/dev-terminator.yml"
  258. ansible.become = true
  259. ansible.install = true
  260. ansible.compatibility_mode = "2.0"
  261. end
  262. end
  263.  
  264. # Compression Worker
  265. config.vm.define "compressionworker", autostart: false do |compressionworker|
  266. compressionworker.vm.box = "ubuntu/focal64"
  267. compressionworker.vm.hostname = 'compressionworker'
  268. compressionworker.vm.box_url = "ubuntu/focal64"
  269. compressionworker.vm.network :private_network, ip: "192.168.56.108"
  270.  
  271. compressionworker.vm.synced_folder "~/dev/compressionworker/src", "/home/pixieset/public/compressionworker",
  272. owner: "www-data", group: "www-data"
  273. compressionworker.vm.synced_folder "~/dev/ansible-pixieset/", "/ansible",
  274. owner: "root", group: "root"
  275. compressionworker.vm.synced_folder "~/.aws/", "/var/www/.aws", create: true,
  276. owner: "www-data", group: "www-data"
  277. compressionworker.vm.synced_folder "~/.aws/", "/home/vagrant/.aws", create: true
  278.  
  279. compressionworker.vm.provider :virtualbox do |v|
  280. v.customize ["modifyvm", :id, "--memory", 768]
  281. v.customize ["modifyvm", :id, "--name", "compressionworker"]
  282. v.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 2000]
  283. end
  284. compressionworker.vm.provision "ansible_local" do |ansible|
  285. ansible.playbook = "/ansible/dev-compressionworker.yml"
  286. ansible.become = true
  287. ansible.install = true
  288. ansible.compatibility_mode = "2.0"
  289. end
  290. end
  291.  
  292. # Centralized Services
  293. config.vm.define "centralizedservices" do |centralizedservices|
  294. # centralizedservices.vm.box = "ubuntu/focal64"
  295. centralizedservices.vm.hostname = 'centralizedservices'
  296. # centralizedservices.vm.box_url = "ubuntu/focal64"
  297. centralizedservices.vm.network :private_network, ip: "192.168.56.109"
  298.  
  299. centralizedservices.vm.synced_folder "~/dev/centralized-services/src", "/home/pixieset/public/centralized-services",
  300. owner: "www-data", group: "www-data"
  301. centralizedservices.vm.synced_folder "~/dev/ansible-pixieset", "/ansible",
  302. owner: "root", group: "root"
  303. centralizedservices.vm.synced_folder "~/.aws/", "/var/www/.aws", create: true,
  304. owner: "www-data", group: "www-data"
  305. centralizedservices.vm.synced_folder "~/.aws/", "/home/vagrant/.aws", create: true
  306.  
  307. # centralizedservices.vm.provider :virtualbox do |v|
  308. # v.customize ["modifyvm", :id, "--memory", 512]
  309. # v.customize ["modifyvm", :id, "--name", "centralizedservices"]
  310. # v.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 2000]
  311. # end
  312. centralizedservices.vm.provision "ansible_local" do |ansible|
  313. ansible.playbook = "/ansible/dev-centralizedservices.yml"
  314. ansible.become = true
  315. ansible.install = true
  316. ansible.compatibility_mode = "2.0"
  317. end
  318. end
  319. # end of the configuration
  320. end
  321.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement