-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy pathVagrantfile
80 lines (66 loc) · 1.96 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
# -*- mode: ruby -*-
# vi: set ft=ruby :
defaults = {
count: 1,
flavor: /2GB/,
image: /Trusty/,
run_list: [
'recipe[chef_certificates]'
]
}
nodesets = [
{
name: 'certs',
count: 2,
chef_env: 'certs-prod'
},
{
name: 'stg_certs',
chef_env: 'certs-stg'
}
]
require "yaml"
y = YAML.load File.open ".chef/rackspace_secrets.yaml"
Vagrant.configure("2") do |config|
config.butcher.enabled = true
config.butcher.verify_ssl = false
nodesets.each do |set|
set = defaults.merge(set)
set[:count].times do |num|
index = "%02d" % [num + 1]
chef_name = "%s-%s" % [
set[:name].gsub('_', '-'),
index
]
vagrant_name = "%s_theodi_org_%s" % [
set[:name],
index
]
config.vm.define :"#{set[:name]}_theodi_org_#{index}" do |config|
config.vm.box = "dummy"
config.vm.hostname = chef_name
config.ssh.private_key_path = "./.chef/id_rsa"
config.ssh.username = "root"
# config.ssh.private_key_path = "~/.ssh/id_rsa"
# config.ssh.username = "odi"
config.vm.provider :rackspace do |rs|
rs.username = y["username"]
rs.api_key = y["api_key"]
rs.flavor = set[:flavor]
rs.image = set[:image]
rs.public_key_path = "./.chef/id_rsa.pub"
rs.rackspace_region = :lon
end
config.vm.provision :shell, :inline => "wget https://opscode.com/chef/install.sh && bash install.sh"
config.vm.provision :chef_client do |chef|
chef.node_name = chef_name
chef.environment = "#{set[:chef_env]}"
chef.chef_server_url = "https://chef.theodi.org"
chef.validation_client_name = "chef-validator"
chef.validation_key_path = ".chef/chef-validator.pem"
chef.run_list = set[:run_list]
end
end
end
end
end