bebox 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/Gemfile.lock +11 -1
- data/README.md +1 -0
- data/bebox.gemspec +2 -0
- data/lib/bebox/node.rb +1 -1
- data/lib/bebox/provision.rb +0 -32
- data/lib/bebox/vagrant_helper.rb +6 -4
- data/lib/bebox/version.rb +1 -1
- data/lib/bebox/wizards/environment_wizard.rb +4 -2
- data/lib/bebox/wizards/node_wizard.rb +9 -4
- data/lib/bebox/wizards/profile_wizard.rb +4 -2
- data/lib/bebox/wizards/project_wizard.rb +4 -3
- data/lib/bebox/wizards/provision_wizard.rb +6 -2
- data/lib/bebox/wizards/role_wizard.rb +14 -9
- data/lib/bebox/wizards/wizards_helper.rb +1 -0
- data/spec/environment_spec.rb +35 -18
- data/spec/factories/environment.rb +0 -12
- data/spec/factories/node.rb +0 -6
- data/spec/factories/project.rb +1 -7
- data/spec/fixtures/dot_bebox.test.erb +1 -1
- data/spec/node0.server1.test/prepare_phase_spec.rb +1 -1
- data/spec/node0.server1.test/provision_step_0_spec.rb +1 -1
- data/spec/node0.server1.test/provision_step_1_spec.rb +1 -1
- data/spec/node0.server1.test/provision_step_2_spec.rb +1 -1
- data/spec/node0.server1.test/provision_step_3_spec.rb +1 -1
- data/spec/node_role_spec.rb +7 -1
- data/spec/node_spec.rb +55 -17
- data/spec/ordered_phases_spec.rb +7 -3
- data/spec/pre_prepare_spec.rb +12 -9
- data/spec/pre_provision_steps_spec.rb +1 -1
- data/spec/profile_spec.rb +21 -8
- data/spec/project_spec.rb +54 -48
- data/spec/role_profiles_spec.rb +1 -1
- data/spec/role_spec.rb +40 -7
- data/spec/spec_helper.rb +20 -2
- data/spec/wizards/environment_wizard_spec.rb +33 -0
- data/spec/wizards/node_wizard_spec.rb +110 -0
- data/spec/wizards/profile_wizard_spec.rb +45 -0
- data/spec/wizards/project_wizard_spec.rb +90 -0
- data/spec/wizards/provision_wizard_spec.rb +45 -0
- data/spec/wizards/role_wizard_spec.rb +97 -0
- metadata +37 -4
- data/spec/node_wizard_spec.rb +0 -22
- data/spec/project_wizard_spec.rb +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb82ff2a6726fcc8b3d4ccd7a64fe23c593c71b7
|
4
|
+
data.tar.gz: a46d4bde8d6db798ff9b2d8b0011bb4008221b4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac94dff23adf6866b9739d96891ec41d42b6d36423c26836101dca0b5e7ba41f350fca81dc8c08f680c71bb59d052e6eb4e413096d2a0e7c7308aeba27cc4b3b
|
7
|
+
data.tar.gz: 33ba1cfcb5f89871b01b6e54f7937113f50f1a73cab8b6ab01d5028aea191906b60ef00e88e4e93415d181459bd7b326fc1453d6e6e8564ce9e405e79dc1aaec
|
data/.gitignore
CHANGED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
bebox (0.1.
|
4
|
+
bebox (0.1.1)
|
5
5
|
colorize (= 0.6.0)
|
6
6
|
gli (= 2.10.0)
|
7
7
|
highline (= 1.6.21)
|
@@ -36,6 +36,8 @@ GEM
|
|
36
36
|
builder (3.2.2)
|
37
37
|
childprocess (0.5.3)
|
38
38
|
ffi (~> 1.0, >= 1.0.11)
|
39
|
+
codeclimate-test-reporter (0.4.0)
|
40
|
+
simplecov (>= 0.7.1, < 1.0.0)
|
39
41
|
coderay (1.1.0)
|
40
42
|
colorize (0.6.0)
|
41
43
|
columnize (0.8.9)
|
@@ -55,6 +57,7 @@ GEM
|
|
55
57
|
debugger-ruby_core_source (1.3.2)
|
56
58
|
diff-lcs (1.2.5)
|
57
59
|
diffy (3.0.4)
|
60
|
+
docile (1.1.5)
|
58
61
|
erubis (2.7.0)
|
59
62
|
factory_girl (4.3.0)
|
60
63
|
activesupport (>= 3.0.0)
|
@@ -134,6 +137,11 @@ GEM
|
|
134
137
|
net-ssh
|
135
138
|
rspec (~> 2.13)
|
136
139
|
specinfra (~> 1.11)
|
140
|
+
simplecov (0.9.0)
|
141
|
+
docile (~> 1.1.0)
|
142
|
+
multi_json
|
143
|
+
simplecov-html (~> 0.8.0)
|
144
|
+
simplecov-html (0.8.0)
|
137
145
|
slop (3.5.0)
|
138
146
|
specinfra (1.12.0)
|
139
147
|
thor (0.19.1)
|
@@ -149,8 +157,10 @@ PLATFORMS
|
|
149
157
|
DEPENDENCIES
|
150
158
|
aruba (= 0.5.4)
|
151
159
|
bebox!
|
160
|
+
codeclimate-test-reporter (= 0.4.0)
|
152
161
|
factory_girl (= 4.3.0)
|
153
162
|
jazz_hands (= 0.5.2)
|
154
163
|
rake (= 10.3.1)
|
155
164
|
rspec (= 2.14.1)
|
156
165
|
serverspec (= 1.6.0)
|
166
|
+
simplecov (= 0.9.0)
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@ Bebox
|
|
2
2
|
=====
|
3
3
|
|
4
4
|
[](https://codeclimate.com/github/codescrum/bebox)
|
5
|
+
[](https://codeclimate.com/github/codescrum/bebox)
|
5
6
|
|
6
7
|
Introduction
|
7
8
|
------------
|
data/bebox.gemspec
CHANGED
@@ -31,6 +31,8 @@ spec = Gem::Specification.new do |s|
|
|
31
31
|
s.add_development_dependency('jazz_hands', '0.5.2')
|
32
32
|
s.add_development_dependency('serverspec', '1.6.0')
|
33
33
|
s.add_development_dependency('factory_girl', '4.3.0')
|
34
|
+
s.add_development_dependency('codeclimate-test-reporter', '0.4.0')
|
35
|
+
s.add_development_dependency('simplecov', '0.9.0')
|
34
36
|
s.add_runtime_dependency('gli','2.10.0')
|
35
37
|
s.add_runtime_dependency('tilt', '2.0.1')
|
36
38
|
s.add_runtime_dependency('highline', '1.6.21')
|
data/lib/bebox/node.rb
CHANGED
@@ -170,7 +170,7 @@ module Bebox
|
|
170
170
|
end
|
171
171
|
end
|
172
172
|
|
173
|
-
# Obtain the node creation_at
|
173
|
+
# Obtain the node creation_at parameter for a node
|
174
174
|
def self.node_creation_date(project_root, environment, node_type, node)
|
175
175
|
node_config = YAML.load_file("#{project_root}/.checkpoints/environments/#{environment}/#{node_type}/#{node}.yml")
|
176
176
|
(node_type == 'nodes') ? node_config['created_at'] : node_config['finished_at']
|
data/lib/bebox/provision.rb
CHANGED
@@ -42,27 +42,6 @@ module Bebox
|
|
42
42
|
`cp -R #{Bebox::FilesHelper::templates_path}/puppet/#{self.step}/modules/* #{self.project_root}/puppet/steps/#{step_name}/modules/`
|
43
43
|
end
|
44
44
|
|
45
|
-
# Generate the hiera data for step from the template
|
46
|
-
def generate_hiera
|
47
|
-
generate_hiera_yaml
|
48
|
-
generate_hiera_data_common
|
49
|
-
end
|
50
|
-
|
51
|
-
def generate_hiera_yaml
|
52
|
-
generate_file_from_template("#{Bebox::FilesHelper::templates_path}/puppet/#{self.step}/hiera/hiera.yaml.erb", "#{self.project_root}/puppet/steps/#{step_name}/hiera/hiera.yaml", {step_dir: step_name})
|
53
|
-
end
|
54
|
-
|
55
|
-
def generate_hiera_data_common
|
56
|
-
ssh_key = Bebox::Project.public_ssh_key_from_file(self.project_root, self.environment)
|
57
|
-
project_name = Bebox::Project.shortname_from_file(self.project_root)
|
58
|
-
generate_file_from_template("#{Bebox::FilesHelper::templates_path}/puppet/#{self.step}/hiera/data/common_apply.yaml.erb", "#{self.project_root}/puppet/steps/#{step_name}/hiera/data/common.yaml", {ssh_key: ssh_key, project_name: project_name})
|
59
|
-
end
|
60
|
-
|
61
|
-
# Generate the site.pp manifests file for step
|
62
|
-
def self.generate_manifests(project_root, step, nodes)
|
63
|
-
generate_file_from_template("#{Bebox::FilesHelper::templates_path}/puppet/#{step}/manifests/site_apply.pp.erb", "#{project_root}/puppet/steps/#{Bebox::Provision.step_name(step)}/manifests/site.pp", {nodes: nodes})
|
64
|
-
end
|
65
|
-
|
66
45
|
# Generate the hiera templates for each step
|
67
46
|
def self.generate_hiera_for_steps(project_root, template_file, filename, options)
|
68
47
|
Bebox::PROVISION_STEPS.each do |step|
|
@@ -123,12 +102,6 @@ module Bebox
|
|
123
102
|
|
124
103
|
# Set a role for a node in the step-2 manifests file
|
125
104
|
def self.associate_node_role(project_root, environment, node_name, role_name)
|
126
|
-
# Create the manifests site.pp file for step-2 if not exist
|
127
|
-
unless Bebox::Provision.manifests_exists?(project_root, 'step-2')
|
128
|
-
nodes = Bebox::Node.nodes_in_environment(project_root, environment, 'nodes')
|
129
|
-
Bebox::Provision.generate_manifests(project_root, self.step, nodes)
|
130
|
-
end
|
131
|
-
# Set the role for a node
|
132
105
|
Bebox::Provision.remove_role(project_root, node_name, 'step-2')
|
133
106
|
Bebox::Provision.add_role(project_root, node_name, role_name)
|
134
107
|
end
|
@@ -190,11 +163,6 @@ module Bebox
|
|
190
163
|
File.open(manifest_path, 'wb') { |file| file.write(content) }
|
191
164
|
end
|
192
165
|
|
193
|
-
# Check if a manifests for a step exist
|
194
|
-
def self.manifests_exists?(project_root, step)
|
195
|
-
File.exist?("#{project_root}/puppet/steps/#{Bebox::Provision.step_name(step)}/manifests/site.pp")
|
196
|
-
end
|
197
|
-
|
198
166
|
# Apply step via capistrano in the machine
|
199
167
|
def apply_step
|
200
168
|
# Create deploy directories
|
data/lib/bebox/vagrant_helper.rb
CHANGED
@@ -43,8 +43,8 @@ module Bebox
|
|
43
43
|
|
44
44
|
# Add the vagrant hosts to the local hosts file
|
45
45
|
def add_to_local_hosts(node)
|
46
|
-
host_command =
|
47
|
-
host_command
|
46
|
+
host_command = "sudo echo '#{node.ip} #{node.hostname} # Added by bebox' >> #{local_hosts_path}/hosts"
|
47
|
+
`#{host_command}` unless (file_content_trimmed("#{local_hosts_path}/hosts") =~ /#{node.ip}\s+#{node.hostname}/)
|
48
48
|
end
|
49
49
|
|
50
50
|
# Obtain the local hosts file for the OS
|
@@ -64,13 +64,15 @@ module Bebox
|
|
64
64
|
def add_vagrant_node(project_name, vagrant_box_base, node)
|
65
65
|
already_installed_boxes = installed_vagrant_box_names(node)
|
66
66
|
box_name = "#{project_name}-#{node.hostname}"
|
67
|
-
info "Adding server to vagrant: #{node.hostname}
|
67
|
+
info "Adding server to vagrant: #{node.hostname}"
|
68
|
+
info "Please enter the network interface number if asked, and wait until the machine is up."
|
68
69
|
`cd #{node.project_root} && vagrant box add #{box_name} #{vagrant_box_base}` unless already_installed_boxes.include? box_name
|
69
70
|
end
|
70
71
|
|
71
72
|
# Up the vagrant boxes in Vagrantfile
|
72
73
|
def self.up_vagrant_nodes(project_root)
|
73
|
-
|
74
|
+
pid = fork {exec("cd #{project_root} && vagrant up --provision")}
|
75
|
+
Process.wait(pid)
|
74
76
|
end
|
75
77
|
|
76
78
|
# Halt the vagrant boxes running
|
data/lib/bebox/version.rb
CHANGED
@@ -10,8 +10,9 @@ module Bebox
|
|
10
10
|
return error("The '#{environment_name}' environment already exist!.") if Bebox::Environment.environment_exists?(project_root, environment_name)
|
11
11
|
# Environment creation
|
12
12
|
environment = Bebox::Environment.new(environment_name, project_root)
|
13
|
-
environment.create
|
13
|
+
output = environment.create
|
14
14
|
ok 'Environment created!.'
|
15
|
+
return output
|
15
16
|
end
|
16
17
|
|
17
18
|
# Removes an existing environment
|
@@ -22,8 +23,9 @@ module Bebox
|
|
22
23
|
return warn('No changes were made.') unless confirm_action?('Are you sure that you want to delete the environment?')
|
23
24
|
# Environment deletion
|
24
25
|
environment = Bebox::Environment.new(environment_name, project_root)
|
25
|
-
environment.remove
|
26
|
+
output = environment.remove
|
26
27
|
ok 'Environment removed!.'
|
28
|
+
return output
|
27
29
|
end
|
28
30
|
end
|
29
31
|
end
|
@@ -13,8 +13,9 @@ module Bebox
|
|
13
13
|
ip = ask_ip(environment)
|
14
14
|
# Node creation
|
15
15
|
node = Bebox::Node.new(environment, project_root, hostname, ip)
|
16
|
-
node.create
|
16
|
+
output = node.create
|
17
17
|
ok 'Node created!.'
|
18
|
+
return output
|
18
19
|
end
|
19
20
|
|
20
21
|
# Removes an existing node
|
@@ -24,14 +25,16 @@ module Bebox
|
|
24
25
|
if nodes.count > 0
|
25
26
|
hostname = choose_option(nodes, 'Choose the node to remove:')
|
26
27
|
else
|
27
|
-
|
28
|
+
error "There are no nodes in the '#{environment}' environment to remove. No changes were made."
|
29
|
+
return true
|
28
30
|
end
|
29
31
|
# Ask for deletion confirmation
|
30
32
|
return warn('No changes were made.') unless confirm_action?('Are you sure that you want to delete the node?')
|
31
33
|
# Node deletion
|
32
34
|
node = Bebox::Node.new(environment, project_root, hostname, nil)
|
33
|
-
node.remove
|
35
|
+
output = node.remove
|
34
36
|
ok 'Node removed!.'
|
37
|
+
return output
|
35
38
|
end
|
36
39
|
|
37
40
|
# Associate a role with a node in a environment
|
@@ -40,8 +43,9 @@ module Bebox
|
|
40
43
|
nodes = Bebox::Node.list(project_root, environment, 'nodes')
|
41
44
|
node = choose_option(nodes, 'Choose an existing node:')
|
42
45
|
role = choose_option(roles, 'Choose an existing role:')
|
43
|
-
Bebox::Provision.associate_node_role(project_root, environment, node, role)
|
46
|
+
output = Bebox::Provision.associate_node_role(project_root, environment, node, role)
|
44
47
|
ok 'Role associated to node!.'
|
48
|
+
return output
|
45
49
|
end
|
46
50
|
|
47
51
|
# Prepare the nodes in a environment
|
@@ -69,6 +73,7 @@ module Bebox
|
|
69
73
|
else
|
70
74
|
warn 'There are no nodes to prepare. No changes were made.'
|
71
75
|
end
|
76
|
+
return true
|
72
77
|
end
|
73
78
|
|
74
79
|
# Check the nodes already prepared and ask confirmation to re-do-it
|
@@ -31,8 +31,9 @@ module Bebox
|
|
31
31
|
return error("The profile '#{profile_path}' already exist. No changes were made.") if profile_exists?(project_root, profile_path)
|
32
32
|
# Profile creation
|
33
33
|
profile = Bebox::Profile.new(profile_name, project_root, profile_base_path)
|
34
|
-
profile.create
|
34
|
+
output = profile.create
|
35
35
|
ok "Profile '#{profile_path}' created!."
|
36
|
+
return output
|
36
37
|
end
|
37
38
|
|
38
39
|
# Removes an existing profile
|
@@ -51,8 +52,9 @@ module Bebox
|
|
51
52
|
profile_name = profile.split('/').last
|
52
53
|
profile_base_path = profile.split('/')[0...-1].join('/')
|
53
54
|
profile = Bebox::Profile.new(profile_name, project_root, profile_base_path)
|
54
|
-
profile.remove
|
55
|
+
output = profile.remove
|
55
56
|
ok 'Profile removed!.'
|
57
|
+
return output
|
56
58
|
end
|
57
59
|
|
58
60
|
# Lists existing profiles
|
@@ -21,13 +21,14 @@ module Bebox
|
|
21
21
|
default_environments = %w{vagrant staging production}
|
22
22
|
# Project creation
|
23
23
|
project = Bebox::Project.new(project_name, vagrant_box_base, Dir.pwd, vagrant_box_provider, default_environments)
|
24
|
-
project.create
|
24
|
+
output = project.create
|
25
25
|
ok "Project '#{project_name}' created!.\nMake: cd #{project_name}\nNow you can add new environments or new nodes to your project.\nSee bebox help."
|
26
|
+
return output
|
26
27
|
end
|
27
28
|
|
28
29
|
# If choose to download/select new box get a valid uri
|
29
30
|
def get_valid_box_uri(current_box)
|
30
|
-
return
|
31
|
+
return current_box unless current_box.nil?
|
31
32
|
# Keep asking for valid uri or overwriting until confirmation
|
32
33
|
confirm = false
|
33
34
|
begin
|
@@ -64,7 +65,7 @@ module Bebox
|
|
64
65
|
def set_box(box_uri)
|
65
66
|
require 'uri'
|
66
67
|
uri = URI.parse(box_uri)
|
67
|
-
if uri.scheme
|
68
|
+
if %w{http https}.include?(uri.scheme)
|
68
69
|
info 'Downloading box ...'
|
69
70
|
download_box(uri)
|
70
71
|
else
|
@@ -13,10 +13,12 @@ module Bebox
|
|
13
13
|
nodes_for_provisioning(nodes_to_step, step)
|
14
14
|
# Apply the nodes provisioning for step-N
|
15
15
|
in_step_nodes = Bebox::Node.list(project_root, environment, "steps/#{step}")
|
16
|
+
outputs = []
|
16
17
|
nodes_to_step.each do |node|
|
17
18
|
next unless check_node_to_step(node, in_step_nodes, step)
|
18
|
-
provision_step_in_node(project_root, environment, step, in_step_nodes, node)
|
19
|
+
outputs << provision_step_in_node(project_root, environment, step, in_step_nodes, node)
|
19
20
|
end
|
21
|
+
return outputs
|
20
22
|
end
|
21
23
|
|
22
24
|
def provision_step_in_node(project_root, environment, step, in_step_nodes, node)
|
@@ -28,7 +30,9 @@ module Bebox
|
|
28
30
|
# Before apply generate the roles and profiles modules structure for puppet step
|
29
31
|
Bebox::Provision.generate_roles_and_profiles(project_root, step, role, profiles)
|
30
32
|
provision = Bebox::Provision.new(project_root, environment, node, step)
|
31
|
-
provision.apply.success?
|
33
|
+
output = provision.apply.success?
|
34
|
+
output ? (ok "Node '#{node.hostname}' provisioned to #{step}.") : (error "An error ocurred in the provision of #{step} for node '#{node.hostname}'")
|
35
|
+
return output
|
32
36
|
end
|
33
37
|
|
34
38
|
def check_node_to_step(node, in_step_nodes, step)
|
@@ -18,8 +18,9 @@ module Bebox
|
|
18
18
|
return error("The '#{role_name}' role already exist. No changes were made.") if role_exists?(project_root, role_name)
|
19
19
|
# Role creation
|
20
20
|
role = Bebox::Role.new(role_name, project_root)
|
21
|
-
role.create
|
21
|
+
output = role.create
|
22
22
|
ok 'Role created!.'
|
23
|
+
return output
|
23
24
|
end
|
24
25
|
|
25
26
|
# Removes an existing role
|
@@ -36,8 +37,9 @@ module Bebox
|
|
36
37
|
return warn('No changes were made.') unless confirm_action?('Are you sure that you want to delete the role?')
|
37
38
|
# Role deletion
|
38
39
|
role = Bebox::Role.new(role_name, project_root)
|
39
|
-
role.remove
|
40
|
+
output = role.remove
|
40
41
|
ok 'Role removed!.'
|
42
|
+
return output
|
41
43
|
end
|
42
44
|
|
43
45
|
# Add a profile to a role
|
@@ -47,11 +49,13 @@ module Bebox
|
|
47
49
|
role = choose_option(roles, 'Choose an existing role:')
|
48
50
|
profile = choose_option(profiles, 'Choose the profile to add:')
|
49
51
|
if Bebox::Role.profile_in_role?(project_root, role, profile)
|
50
|
-
|
52
|
+
warn "Profile '#{profile}' already in the Role '#{role}'. No changes were made."
|
53
|
+
output = false
|
51
54
|
else
|
52
|
-
Bebox::Role.add_profile(project_root, role, profile)
|
53
|
-
|
55
|
+
output = Bebox::Role.add_profile(project_root, role, profile)
|
56
|
+
ok "Profile '#{profile}' added to Role '#{role}'."
|
54
57
|
end
|
58
|
+
return output
|
55
59
|
end
|
56
60
|
|
57
61
|
# Remove a profile in a role
|
@@ -61,12 +65,13 @@ module Bebox
|
|
61
65
|
role = choose_option(roles, 'Choose an existing role:')
|
62
66
|
profile = choose_option(profiles, 'Choose the profile to remove:')
|
63
67
|
if Bebox::Role.profile_in_role?(project_root, role, profile)
|
64
|
-
Bebox::Role.remove_profile(project_root, role, profile)
|
65
|
-
|
68
|
+
output = Bebox::Role.remove_profile(project_root, role, profile)
|
69
|
+
ok "Profile '#{profile}' removed from Role '#{role}'."
|
66
70
|
else
|
67
|
-
|
71
|
+
warn "Profile '#{profile}' is not in the Role '#{role}'. No changes were made."
|
72
|
+
output = false
|
68
73
|
end
|
69
|
-
|
74
|
+
return output
|
70
75
|
end
|
71
76
|
|
72
77
|
# Check if there's an existing role in the project
|
data/spec/environment_spec.rb
CHANGED
@@ -1,24 +1,33 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require_relative '../spec/factories/environment.rb'
|
3
3
|
|
4
|
-
describe 'Test
|
4
|
+
describe 'Test 07: Bebox::Environment' do
|
5
5
|
|
6
6
|
describe 'Environment management' do
|
7
7
|
|
8
8
|
subject { build(:environment) }
|
9
9
|
|
10
|
-
it '
|
10
|
+
it 'list the current environments' do
|
11
11
|
current_environments = %w{vagrant staging production}
|
12
12
|
environments = Bebox::Environment.list(subject.project_root)
|
13
13
|
expect(environments).to include(*current_environments)
|
14
14
|
end
|
15
15
|
|
16
16
|
context 'environment creation' do
|
17
|
+
before :all do
|
18
|
+
subject.create
|
19
|
+
end
|
17
20
|
|
18
|
-
it '
|
21
|
+
it 'generates SSH keys for a given environment' do
|
22
|
+
subject.generate_puppet_user_keys(subject.name)
|
23
|
+
%w{id_rsa id_rsa.pub}.each do |key|
|
24
|
+
expect(File.exist?("#{subject.project_root}/config/keys/environments/#{subject.name}/#{key}")).to be (true)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'creates checkpoints' do
|
19
29
|
expected_directories = [subject.name, 'nodes', 'prepared_nodes',
|
20
30
|
'steps', 'step-0', 'step-1', 'step-2', 'step-3']
|
21
|
-
subject.create_checkpoints
|
22
31
|
directories = []
|
23
32
|
directories << Dir["#{subject.project_root}/.checkpoints/environments/#{subject.name}/"].map { |f| File.basename(f) }
|
24
33
|
directories << Dir["#{subject.project_root}/.checkpoints/environments/#{subject.name}/*/"].map { |f| File.basename(f) }
|
@@ -26,20 +35,17 @@ describe 'Test 02: Bebox::Environment' do
|
|
26
35
|
expect(directories.flatten).to include(*expected_directories)
|
27
36
|
end
|
28
37
|
|
29
|
-
it '
|
30
|
-
subject.create_capistrano_base
|
38
|
+
it 'generates a capistrano base' do
|
31
39
|
expect(Dir.exist?("#{subject.project_root}/config/keys/environments/#{subject.name}")).to be (true)
|
32
40
|
end
|
33
41
|
|
34
|
-
it '
|
35
|
-
subject.generate_deploy_file
|
42
|
+
it 'generates a deploy file' do
|
36
43
|
deploy_content = File.read("#{subject.project_root}/config/deploy/#{subject.name}.rb").gsub(/\s+/, ' ').strip
|
37
44
|
deploy_output_content = File.read("spec/fixtures/config/deploy/environment.test").gsub(/\s+/, ' ').strip
|
38
45
|
expect(deploy_content).to eq(deploy_output_content)
|
39
46
|
end
|
40
47
|
|
41
|
-
it '
|
42
|
-
subject.generate_hiera_template
|
48
|
+
it 'generates a hiera data file' do
|
43
49
|
Bebox::PROVISION_STEPS.each do |step|
|
44
50
|
content = File.read("spec/fixtures/puppet/steps/#{step}/hiera/data/#{subject.name}.yaml.test")
|
45
51
|
output = File.read("#{subject.project_root}/puppet/steps/#{Bebox::Provision.step_name(step)}/hiera/data/#{subject.name}.yaml")
|
@@ -49,11 +55,13 @@ describe 'Test 02: Bebox::Environment' do
|
|
49
55
|
end
|
50
56
|
|
51
57
|
context 'environment deletion' do
|
58
|
+
before :all do
|
59
|
+
subject.remove
|
60
|
+
end
|
52
61
|
|
53
|
-
it '
|
62
|
+
it 'removes checkpoints' do
|
54
63
|
environment_directories = [subject.name, 'nodes', 'prepared_nodes',
|
55
64
|
'steps', 'step-0', 'step-1', 'step-2', 'step-3']
|
56
|
-
subject.remove_checkpoints
|
57
65
|
directories = []
|
58
66
|
directories << Dir["#{subject.project_root}/.checkpoints/environments/#{subject.name}/"].map { |f| File.basename(f) }
|
59
67
|
directories << Dir["#{subject.project_root}/.checkpoints/environments/#{subject.name}/*/"].map { |f| File.basename(f) }
|
@@ -61,22 +69,31 @@ describe 'Test 02: Bebox::Environment' do
|
|
61
69
|
expect(directories.flatten).to_not include(*environment_directories)
|
62
70
|
end
|
63
71
|
|
64
|
-
it '
|
65
|
-
subject.remove_capistrano_base
|
72
|
+
it 'removes the capistrano base' do
|
66
73
|
expect(Dir.exist?("#{subject.project_root}/config/keys/environments/#{subject.name}")).to be (false)
|
67
74
|
end
|
68
75
|
|
69
|
-
it '
|
70
|
-
subject.remove_deploy_file
|
76
|
+
it 'removes the deploy file' do
|
71
77
|
expect(File.exist?("#{subject.project_root}/config/deploy/#{subject.name}.rb")).to be (false)
|
72
78
|
end
|
73
79
|
|
74
|
-
it '
|
75
|
-
subject.remove_hiera_template
|
80
|
+
it 'removes the hiera node files' do
|
76
81
|
Bebox::PROVISION_STEPS.each do |step|
|
77
82
|
expect(File.exist?("#{subject.project_root}/puppet/steps/#{Bebox::Provision.step_name(step)}/hiera/data/#{subject.name}.yaml")).to be (false)
|
78
83
|
end
|
79
84
|
end
|
80
85
|
end
|
86
|
+
|
87
|
+
context 'self methods' do
|
88
|
+
it 'checks for environment access keys' do
|
89
|
+
access = Bebox::Environment.check_environment_access(subject.project_root, 'vagrant')
|
90
|
+
expect(access).to eq(true)
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'obtains a vagrant box base' do
|
94
|
+
environment_existence = Bebox::Environment.environment_exists?(subject.project_root, 'vagrant')
|
95
|
+
expect(environment_existence).to eq(true)
|
96
|
+
end
|
97
|
+
end
|
81
98
|
end
|
82
99
|
end
|