avst-cloud 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []