forked from theodi/open-data-certificate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Vagrantfile
98 lines (85 loc) · 2.32 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
# -*- mode: ruby -*-
# vi: set ft=ruby :
defaults = {
count: 1,
flavor: /2GB/,
image: /Trusty/
}
nodesets = [
{
name: 'certificate',
count: 3,
chef_env: 'odc-prod',
run_list: [
"recipe[chef-open-data-certificate]"
]
},
{
name: 'memcached_certificate',
flavor: /1GB/,
chef_env: 'odc-prod',
run_list: [
"role[open-data-certificate-attrs]",
"role[memcached]"
]
},
{
name: 'staging_certificate',
chef_env: 'odc-staging',
run_list: [
"recipe[chef-open-data-certificate]"
]
},
{
name: 'staging_memcached_certificate',
flavor: /1GB/,
chef_env: 'odc-staging',
run_list: [
"role[open-data-certificate-attrs]",
"role[memcached]"
]
}
]
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.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