avst-cloud 0.1.7
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 +15 -0
- data/.gitignore +36 -0
- data/.travis.yml +16 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +191 -0
- data/README.md +201 -0
- data/Rakefile +4 -0
- data/avst-cloud.gemspec +28 -0
- data/bin/avst-cloud +99 -0
- data/bin/avst-cloud-puppet +173 -0
- data/bin/avst-cloud-rackspace +87 -0
- data/config/custom_system_config/hiera-configs/defaults/example.yaml +1 -0
- data/config/custom_system_config/hiera-configs/hostname1.yaml +12 -0
- data/config/custom_system_config/hiera-configs/hostname1_facts.yaml +53 -0
- data/config/custom_system_config/hiera-configs/templates/example.yaml +137 -0
- data/config/deploy.rb +79 -0
- data/config/deploy/production.rb +48 -0
- data/lib/avst-cloud.rb +28 -0
- data/lib/avst-cloud/aws_connection.rb +203 -0
- data/lib/avst-cloud/aws_server.rb +56 -0
- data/lib/avst-cloud/cloud_connection.rb +39 -0
- data/lib/avst-cloud/cloud_server.rb +89 -0
- data/lib/avst-cloud/logging.rb +36 -0
- data/lib/avst-cloud/rackspace_connection.rb +141 -0
- data/lib/avst-cloud/rackspace_server.rb +58 -0
- data/lib/avst-cloud/task.rb +288 -0
- data/lib/capistrano/tasks/prepare_puppet_and_execute.rake +90 -0
- metadata +188 -0
@@ -0,0 +1,90 @@
|
|
1
|
+
# Copyright 2015 Adaptavist.com Ltd.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
require 'json'
|
15
|
+
|
16
|
+
desc "Install stuff"
|
17
|
+
task :prepare_puppet_and_execute do
|
18
|
+
on roles(:app) do |host|
|
19
|
+
if ENV["puppet_runner"]
|
20
|
+
SSHKit.config.command_map[:link_puppet] = "sudo su -c 'ln -s /var/opt/puppet/current /etc/puppet'"
|
21
|
+
SSHKit.config.command_map[:link_hiera] = "sudo su -c 'cd /etc && sudo rm -f hiera.yaml && sudo ln -sf /var/opt/puppet/current/hiera.yaml .'"
|
22
|
+
SSHKit.config.command_map[:clear_puppet] = "sudo su -c 'rm -fr /etc/puppet'"
|
23
|
+
SSHKit.config.command_map[:create_puppet_files] = "sudo su -c 'if [ ! -d /var/opt/puppet/current/files ]; then mkdir /var/opt/puppet/current/files; fi'"
|
24
|
+
SSHKit.config.command_map[:r10k] = "source /usr/local/rvm/scripts/rvm; r10k puppetfile install"
|
25
|
+
SSHKit.config.command_map[:execute_puppet_runner] = "sudo su -c 'source /usr/local/rvm/scripts/rvm; #{ENV["puppet_runner"]}'"
|
26
|
+
|
27
|
+
# create folder in /tmp to store custom configs, this will be deleted by clean command
|
28
|
+
avst_cloud_tmp_folder = ENV["avst_cloud_tmp_folder"]
|
29
|
+
execute "mkdir #{avst_cloud_tmp_folder}"
|
30
|
+
|
31
|
+
if File.exist?("config/custom_system_config")
|
32
|
+
upload! "config/custom_system_config", avst_cloud_tmp_folder, recursive: true
|
33
|
+
execute "cp -rf #{avst_cloud_tmp_folder}/custom_system_config/* /var/opt/puppet/current/."
|
34
|
+
end
|
35
|
+
|
36
|
+
if ENV['puppet_runner_prepare']
|
37
|
+
SSHKit.config.command_map[:puppet_runner_prepare] = "sudo su -c 'source /usr/local/rvm/scripts/rvm; #{ENV["puppet_runner_prepare"]}'"
|
38
|
+
within '/var/opt/puppet/current' do
|
39
|
+
execute :puppet_runner_prepare
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
within '/var/opt/puppet/current' do
|
44
|
+
execute :r10k
|
45
|
+
end
|
46
|
+
|
47
|
+
puts "Done r10k puppetfile install"
|
48
|
+
|
49
|
+
execute :clear_puppet
|
50
|
+
execute :create_puppet_files
|
51
|
+
execute :link_puppet
|
52
|
+
execute :link_hiera
|
53
|
+
|
54
|
+
if File.exist?("config/keys")
|
55
|
+
upload! "config/keys", "/etc/puppet/config", recursive: true
|
56
|
+
end
|
57
|
+
|
58
|
+
within '/etc/puppet' do
|
59
|
+
begin
|
60
|
+
execute :execute_puppet_runner
|
61
|
+
rescue Exception => e
|
62
|
+
# Puppet apply is running with --detailed-exitcodes, exit codes are:
|
63
|
+
# '2' means there were changes, an exit code of '4' means there were failures during the transaction,
|
64
|
+
# and an exit code of '6' means there were both changes and failures.
|
65
|
+
ret_code = e.message.gsub("execute_puppet_runner exit status: ", "").strip.to_i
|
66
|
+
# in case the code is not 2, raise exception as there were failures
|
67
|
+
if ( ret_code != 2)
|
68
|
+
raise e
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
if ENV["custom_provisioning_commands"]
|
75
|
+
parsed = JSON.parse(ENV["custom_provisioning_commands"])
|
76
|
+
if parsed.is_a?(Array)
|
77
|
+
parsed.each do |command|
|
78
|
+
command_name = command.to_sym
|
79
|
+
SSHKit.config.command_map[command_name] = command
|
80
|
+
execute command_name
|
81
|
+
end
|
82
|
+
else
|
83
|
+
SSHKit.config.command_map[:custom_provisioning_commands] = ENV["custom_provisioning_commands"]
|
84
|
+
execute :custom_provisioning_commands
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
puts "Done running puppet apply"
|
89
|
+
end
|
90
|
+
end
|
metadata
ADDED
@@ -0,0 +1,188 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: avst-cloud
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.7
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Martin Brehovsky
|
8
|
+
- Jon Bevan
|
9
|
+
- Matthew Hope
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2016-01-21 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: bundler
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.6'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '1.6'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: rake
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ! '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: fog
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: capistrano
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 3.2.1
|
64
|
+
type: :runtime
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - '='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 3.2.1
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: capistrano-rvm
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :runtime
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: derelict
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ! '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
type: :runtime
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: docopt
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 0.5.0
|
106
|
+
type: :runtime
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ! '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 0.5.0
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: colorize
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 0.7.3
|
120
|
+
type: :runtime
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 0.7.3
|
127
|
+
description: Currently supports AWS
|
128
|
+
email:
|
129
|
+
- mbrehovsky@adaptavist.com
|
130
|
+
- jbevan@adaptavist.com
|
131
|
+
- mhope@adaptavist.com
|
132
|
+
executables:
|
133
|
+
- avst-cloud
|
134
|
+
- avst-cloud-puppet
|
135
|
+
- avst-cloud-rackspace
|
136
|
+
extensions: []
|
137
|
+
extra_rdoc_files: []
|
138
|
+
files:
|
139
|
+
- .gitignore
|
140
|
+
- .travis.yml
|
141
|
+
- Gemfile
|
142
|
+
- LICENSE.txt
|
143
|
+
- README.md
|
144
|
+
- Rakefile
|
145
|
+
- avst-cloud.gemspec
|
146
|
+
- bin/avst-cloud
|
147
|
+
- bin/avst-cloud-puppet
|
148
|
+
- bin/avst-cloud-rackspace
|
149
|
+
- config/custom_system_config/hiera-configs/defaults/example.yaml
|
150
|
+
- config/custom_system_config/hiera-configs/hostname1.yaml
|
151
|
+
- config/custom_system_config/hiera-configs/hostname1_facts.yaml
|
152
|
+
- config/custom_system_config/hiera-configs/templates/example.yaml
|
153
|
+
- config/deploy.rb
|
154
|
+
- config/deploy/production.rb
|
155
|
+
- lib/avst-cloud.rb
|
156
|
+
- lib/avst-cloud/aws_connection.rb
|
157
|
+
- lib/avst-cloud/aws_server.rb
|
158
|
+
- lib/avst-cloud/cloud_connection.rb
|
159
|
+
- lib/avst-cloud/cloud_server.rb
|
160
|
+
- lib/avst-cloud/logging.rb
|
161
|
+
- lib/avst-cloud/rackspace_connection.rb
|
162
|
+
- lib/avst-cloud/rackspace_server.rb
|
163
|
+
- lib/avst-cloud/task.rb
|
164
|
+
- lib/capistrano/tasks/prepare_puppet_and_execute.rake
|
165
|
+
homepage: http://www.adaptavist.com
|
166
|
+
licenses: []
|
167
|
+
metadata: {}
|
168
|
+
post_install_message:
|
169
|
+
rdoc_options: []
|
170
|
+
require_paths:
|
171
|
+
- lib
|
172
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ! '>='
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
177
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
requirements: []
|
183
|
+
rubyforge_project:
|
184
|
+
rubygems_version: 2.4.5
|
185
|
+
signing_key:
|
186
|
+
specification_version: 4
|
187
|
+
summary: Automated creation, bootstrapping and provisioning of servers
|
188
|
+
test_files: []
|