Advertisement
Guest User

Untitled

a guest
Jul 29th, 2015
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.37 KB | None | 0 0
  1. require 'yaml'
  2.  
  3. dir = File.dirname(File.expand_path(__FILE__))
  4.  
  5. configValues = YAML.load_file("#{dir}/puphpet/config.yaml")
  6. data = configValues['vagrantfile-local']
  7.  
  8. Vagrant.require_version '>= 1.6.0'
  9.  
  10. Vagrant.configure('2') do |config|
  11. config.vm.box = "#{data['vm']['box']}"
  12. config.vm.box_url = "#{data['vm']['box_url']}"
  13.  
  14. if data['vm']['hostname'].to_s.strip.length != 0
  15. config.vm.hostname = "#{data['vm']['hostname']}"
  16. end
  17.  
  18. if data['vm']['network']['private_network'].to_s != ''
  19. config.vm.network 'private_network', ip: "#{data['vm']['network']['private_network']}"
  20. end
  21.  
  22. data['vm']['network']['forwarded_port'].each do |i, port|
  23. if port['guest'] != '' && port['host'] != ''
  24. config.vm.network :forwarded_port, guest: port['guest'].to_i, host: port['host'].to_i
  25. end
  26. end
  27.  
  28. if !data['vm']['post_up_message'].nil?
  29. config.vm.post_up_message = "#{data['vm']['post_up_message']}"
  30. end
  31.  
  32. if Vagrant.has_plugin?('vagrant-hostmanager')
  33. hosts = Array.new()
  34.  
  35. if !configValues['apache']['install'].nil? &&
  36. configValues['apache']['install'].to_i == 1 &&
  37. configValues['apache']['vhosts'].is_a?(Hash)
  38. configValues['apache']['vhosts'].each do |i, vhost|
  39. hosts.push(vhost['servername'])
  40.  
  41. if vhost['serveraliases'].is_a?(Array)
  42. vhost['serveraliases'].each do |vhost_alias|
  43. hosts.push(vhost_alias)
  44. end
  45. end
  46. end
  47. elsif !configValues['nginx']['install'].nil? &&
  48. configValues['nginx']['install'].to_i == 1 &&
  49. configValues['nginx']['vhosts'].is_a?(Hash)
  50. configValues['nginx']['vhosts'].each do |i, vhost|
  51. hosts.push(vhost['server_name'])
  52.  
  53. if vhost['server_aliases'].is_a?(Array)
  54. vhost['server_aliases'].each do |x, vhost_alias|
  55. hosts.push(vhost_alias)
  56. end
  57. end
  58. end
  59. end
  60.  
  61. if hosts.any?
  62. contents = File.open("#{dir}/puphpet/shell/ascii-art/hostmanager-notice.txt", 'r'){ |file| file.read }
  63. puts "n33[32m#{contents}33[0mn"
  64.  
  65. if config.vm.hostname.to_s.strip.length == 0
  66. config.vm.hostname = 'puphpet-dev-machine'
  67. end
  68.  
  69. config.hostmanager.enabled = true
  70. config.hostmanager.manage_host = true
  71. config.hostmanager.ignore_private_ip = false
  72. config.hostmanager.include_offline = false
  73. config.hostmanager.aliases = hosts
  74. end
  75. end
  76.  
  77. if Vagrant.has_plugin?('vagrant-cachier')
  78. config.cache.scope = :box
  79. end
  80.  
  81. data['vm']['synced_folder'].each do |i, folder|
  82. if folder['source'] != '' && folder['target'] != ''
  83. if folder['sync_type'] == 'nfs'
  84. config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: 'nfs'
  85. config.vm.network "private_network", type: "dhcp"
  86. elsif folder['sync_type'] == 'smb'
  87. config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: 'smb'
  88. elsif folder['sync_type'] == 'rsync'
  89. rsync_args = !folder['rsync']['args'].nil? ? folder['rsync']['args'] : ['--verbose', '--archive', '-z']
  90. rsync_auto = !folder['rsync']['auto'].nil? ? folder['rsync']['auto'] : true
  91. rsync_exclude = !folder['rsync']['exclude'].nil? ? folder['rsync']['exclude'] : ['.vagrant/']
  92.  
  93. config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
  94. rsync__args: rsync_args, rsync__exclude: rsync_exclude, rsync__auto: rsync_auto, type: 'rsync'
  95. else
  96. config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
  97. group: 'www-data', owner: 'www-data', mount_options: ['dmode=777', 'fmode=777']
  98. end
  99. end
  100. end
  101.  
  102. config.vm.usable_port_range = (data['vm']['usable_port_range']['start'].to_i..data['vm']['usable_port_range']['stop'].to_i)
  103.  
  104. if data['vm']['chosen_provider'].empty? || data['vm']['chosen_provider'] == 'virtualbox'
  105. ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
  106.  
  107. config.vm.provider :virtualbox do |virtualbox|
  108. data['vm']['provider']['virtualbox']['modifyvm'].each do |key, value|
  109. if key == 'memory'
  110. next
  111. end
  112. if key == 'cpus'
  113. next
  114. end
  115.  
  116. if key == 'natdnshostresolver1'
  117. value = value ? 'on' : 'off'
  118. end
  119.  
  120. virtualbox.customize ['modifyvm', :id, "--#{key}", "#{value}"]
  121. end
  122.  
  123. virtualbox.customize ['modifyvm', :id, '--memory', "#{data['vm']['memory']}"]
  124. virtualbox.customize ['modifyvm', :id, '--cpus', "#{data['vm']['cpus']}"]
  125.  
  126. if data['vm']['hostname'].to_s.strip.length != 0
  127. virtualbox.customize ['modifyvm', :id, '--name', config.vm.hostname]
  128. end
  129. end
  130. end
  131.  
  132. if data['vm']['chosen_provider'] == 'vmware_fusion' || data['vm']['chosen_provider'] == 'vmware_workstation'
  133. ENV['VAGRANT_DEFAULT_PROVIDER'] = (data['vm']['chosen_provider'] == 'vmware_fusion') ? 'vmware_fusion' : 'vmware_workstation'
  134.  
  135. config.vm.provider 'vmware_fusion' do |v|
  136. data['vm']['provider']['vmware'].each do |key, value|
  137. if key == 'memsize'
  138. next
  139. end
  140. if key == 'cpus'
  141. next
  142. end
  143.  
  144. v.vmx["#{key}"] = "#{value}"
  145. end
  146.  
  147. v.vmx['memsize'] = "#{data['vm']['memory']}"
  148. v.vmx['numvcpus'] = "#{data['vm']['cpus']}"
  149.  
  150. if data['vm']['hostname'].to_s.strip.length != 0
  151. v.vmx['displayName'] = config.vm.hostname
  152. end
  153. end
  154. end
  155.  
  156. if data['vm']['chosen_provider'] == 'parallels'
  157. ENV['VAGRANT_DEFAULT_PROVIDER'] = 'parallels'
  158.  
  159. config.vm.provider 'parallels' do |v|
  160. data['vm']['provider']['parallels'].each do |key, value|
  161. if key == 'memsize'
  162. next
  163. end
  164. if key == 'cpus'
  165. next
  166. end
  167.  
  168. v.customize ['set', :id, "--#{key}", "#{value}"]
  169. end
  170.  
  171. v.memory = "#{data['vm']['memory']}"
  172. v.cpus = "#{data['vm']['cpus']}"
  173.  
  174. if data['vm']['hostname'].to_s.strip.length != 0
  175. v.name = config.vm.hostname
  176. end
  177. end
  178. end
  179.  
  180. ssh_username = !data['ssh']['username'].nil? ? data['ssh']['username'] : 'vagrant'
  181.  
  182. config.vm.provision 'shell' do |s|
  183. s.path = 'puphpet/shell/initial-setup.sh'
  184. s.args = '/vagrant/puphpet'
  185. end
  186. config.vm.provision 'shell' do |kg|
  187. kg.path = 'puphpet/shell/ssh-keygen.sh'
  188. kg.args = "#{ssh_username}"
  189. end
  190. config.vm.provision :shell, :path => 'puphpet/shell/install-ruby.sh'
  191. config.vm.provision :shell, :path => 'puphpet/shell/install-puppet.sh'
  192.  
  193. config.vm.provision :puppet do |puppet|
  194. puppet.facter = {
  195. 'ssh_username' => "#{ssh_username}",
  196. 'provisioner_type' => ENV['VAGRANT_DEFAULT_PROVIDER'],
  197. 'vm_target_key' => 'vagrantfile-local',
  198. }
  199. puppet.manifests_path = "#{data['vm']['provision']['puppet']['manifests_path']}"
  200. puppet.manifest_file = "#{data['vm']['provision']['puppet']['manifest_file']}"
  201. puppet.module_path = "#{data['vm']['provision']['puppet']['module_path']}"
  202.  
  203. if !data['vm']['provision']['puppet']['options'].empty?
  204. puppet.options = data['vm']['provision']['puppet']['options']
  205. end
  206. end
  207.  
  208. config.vm.provision :shell do |s|
  209. s.path = 'puphpet/shell/execute-files.sh'
  210. s.args = ['exec-once', 'exec-always']
  211. end
  212. config.vm.provision :shell, run: 'always' do |s|
  213. s.path = 'puphpet/shell/execute-files.sh'
  214. s.args = ['startup-once', 'startup-always']
  215. end
  216. config.vm.provision :shell, :path => 'puphpet/shell/important-notices.sh'
  217.  
  218. if File.file?("#{dir}/puphpet/files/dot/ssh/id_rsa")
  219. config.ssh.private_key_path = [
  220. "#{dir}/puphpet/files/dot/ssh/id_rsa",
  221. "#{dir}/puphpet/files/dot/ssh/insecure_private_key"
  222. ]
  223. end
  224.  
  225. if !data['ssh']['host'].nil?
  226. config.ssh.host = "#{data['ssh']['host']}"
  227. end
  228. if !data['ssh']['port'].nil?
  229. config.ssh.port = "#{data['ssh']['port']}"
  230. end
  231. if !data['ssh']['username'].nil?
  232. config.ssh.username = "#{data['ssh']['username']}"
  233. end
  234. if !data['ssh']['guest_port'].nil?
  235. config.ssh.guest_port = data['ssh']['guest_port']
  236. end
  237. if !data['ssh']['shell'].nil?
  238. config.ssh.shell = "#{data['ssh']['shell']}"
  239. end
  240. if !data['ssh']['keep_alive'].nil?
  241. config.ssh.keep_alive = data['ssh']['keep_alive']
  242. end
  243. if !data['ssh']['forward_agent'].nil?
  244. config.ssh.forward_agent = data['ssh']['forward_agent']
  245. end
  246. if !data['ssh']['forward_x11'].nil?
  247. config.ssh.forward_x11 = data['ssh']['forward_x11']
  248. end
  249. if !data['vagrant']['host'].nil?
  250. config.vagrant.host = data['vagrant']['host'].gsub(':', '').intern
  251. end
  252. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement