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.
@@ -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: []