concourse-deployer 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25c2a4453ab7efcd1e0866deea1dff9ff2a343c7977e0ac62496409eeb8cf99e
4
- data.tar.gz: d8400270b0a80d7238ecd774596c451cd6b4e8f0f88e5ad44f7f6f36eb2c5329
3
+ metadata.gz: 9961c750811bf5c2b0be8ccb7903655c1597f00ad643c74b2a2b470a03cb2afc
4
+ data.tar.gz: 8e32bdeb837566cbc5478cc4c7c9464cd8edd1b6c68297e151828afe6c3df707
5
5
  SHA512:
6
- metadata.gz: a2c7aa9c926366bca72b17d43184ca815cd4cfd23e642a7f87c033e61a4ba116d0d9647853713b45471944c3b09d2d156775f92ab61c1d4a2d55db4d3541aaa3
7
- data.tar.gz: cd7b31dce5e2c977d503c4b36cba068536b622b618993ca26fd5b791b7848de298da05b342cd4134d12c42e3a6627b127ee8dfa77fecd15a43dfc207fa6ad547
6
+ metadata.gz: d8bb2e00967f3c3cbd284f35f34e6b59855c795916a6b85d581a42aca0448f494035bc5abb660e7edb7d11a251cc1de2212dc219fa32019e3c4afced43fb0563
7
+ data.tar.gz: 7457cb3e89f63f9b53b2afcbb98e08a70e7a7c936f98e86b0bb0acc76d9906249e9cc275ee0a36da4168b3185f4cad1f2f0fbace987a735a91971aac31663764
@@ -1,5 +1,12 @@
1
1
  # Changelog for `concourse-deployer`
2
2
 
3
+ ## v0.3.0 / 2019-02-16
4
+
5
+ Features:
6
+
7
+ - Upgrade concourse-bosh-deployment to a specific version.
8
+
9
+
3
10
  ## v0.2.0 / 2019-02-10
4
11
 
5
12
  Features:
@@ -12,16 +12,16 @@ module Concourse
12
12
  include Rake::DSL
13
13
  include Concourse::Deployer::Utils
14
14
 
15
- GCP_SERVICE_ACCOUNT_FILE = "service-account.key.json"
16
- ENVRC_FILE = ".envrc"
15
+ GCP_SERVICE_ACCOUNT_FILE = "service-account.key.json"
16
+ ENVRC_FILE = ".envrc"
17
17
 
18
- BBL_STATE_FILE = "bbl-state.json"
19
- BBL_VARS_DIR = "vars"
18
+ BBL_STATE_FILE = "bbl-state.json"
19
+ BBL_VARS_DIR = "vars"
20
20
 
21
- BOSH_DEPLOYMENT = "concourse"
22
- BOSH_SECRETS = "secrets.yml"
23
- BOSH_VARS_STORE = "cluster-creds.yml"
24
- BOSH_OPERATIONS = "operations.yml"
21
+ BOSH_DEPLOYMENT = "concourse"
22
+ BOSH_SECRETS = "secrets.yml"
23
+ BOSH_VARS_STORE = "cluster-creds.yml"
24
+ BOSH_OPERATIONS = "operations.yml"
25
25
 
26
26
  CONCOURSE_DEPLOYMENT_VARS = "deployment-vars.yml"
27
27
 
@@ -35,10 +35,10 @@ module Concourse
35
35
  return true unless File.exist?(GCP_SERVICE_ACCOUNT_FILE)
36
36
 
37
37
  overwrite = prompt "A #{GCP_SERVICE_ACCOUNT_FILE} file already exists. Do you want to overwrite it? (y/n)", "n"
38
- return !! (overwrite =~ /^y/i)
38
+ return !!(overwrite =~ /^y/i)
39
39
  end
40
40
 
41
- def bbl_gcp_init project_id
41
+ def bbl_gcp_init(project_id)
42
42
  bbl_init
43
43
  unless_which "gcloud", "https://cloud.google.com/sdk/downloads"
44
44
  ensure_in_gitcrypt GCP_SERVICE_ACCOUNT_FILE
@@ -57,7 +57,7 @@ module Concourse
57
57
  end
58
58
 
59
59
  def bbl_gcp_up
60
- unless ENV['BBL_GCP_PROJECT_ID']
60
+ unless ENV["BBL_GCP_PROJECT_ID"]
61
61
  error "Environment variable BBL_GCP_PROJECT_ID is not set. Did you run `rake bbl:gcp:init` and `direnv allow`?"
62
62
  end
63
63
 
@@ -97,7 +97,7 @@ module Concourse
97
97
 
98
98
  v["postgres_client_cert"] = (v["postgres_client_cert"] || {}).tap do |cert|
99
99
  cert["certificate"] ||= prompt_for_file_contents "Path to client-cert.pem"
100
- cert["private_key"] ||= prompt_for_file_contents "Path to client-key.pem"
100
+ cert["private_key"] ||= prompt_for_file_contents "Path to client-key.pem"
101
101
  end
102
102
  v["postgres_ca_cert"] = (v["postgres_ca_cert"] || {}).tap do |cert|
103
103
  cert["certificate"] ||= prompt_for_file_contents "Path to server-ca.pem"
@@ -129,8 +129,9 @@ module Concourse
129
129
  end
130
130
  end
131
131
 
132
- def bosh_update_concourse_deployment
133
- update_git_submodule "https://github.com/concourse/concourse-bosh-deployment", "master"
132
+ def bosh_update_concourse_deployment(branch_or_tag)
133
+ branch_or_tag ||= "master"
134
+ ensure_git_submodule "https://github.com/concourse/concourse-bosh-deployment", branch_or_tag
134
135
  end
135
136
 
136
137
  def bosh_update_ubuntu_stemcell
@@ -155,7 +156,7 @@ module Concourse
155
156
  # bosh_update_release "cloudfoundry-incubator/windows-utilities-release"
156
157
  # end
157
158
 
158
- def bosh_deploy command: "deploy"
159
+ def bosh_deploy(command: "deploy")
159
160
  unless File.exists?(BOSH_SECRETS)
160
161
  error "File #{BOSH_SECRETS} does not exist. Please run `rake bosh:init` first."
161
162
  end
@@ -167,7 +168,7 @@ module Concourse
167
168
  ensure_in_gitcrypt BOSH_SECRETS
168
169
  ensure_in_gitcrypt BOSH_VARS_STORE
169
170
 
170
- external_dns_name = bosh_secrets['external_dns_name']
171
+ external_dns_name = bosh_secrets["external_dns_name"]
171
172
  external_url = "https://#{external_dns_name}"
172
173
 
173
174
  ops_files = Dir[File.join(File.dirname(__FILE__), "deployer", "operations", "*.yml")]
@@ -212,15 +213,15 @@ module Concourse
212
213
  tempfile_key = Tempfile.new
213
214
  tempfile_ca = Tempfile.new
214
215
  begin
215
- tempfile_cert.write bosh_secrets['postgres_client_cert']['certificate']
216
- tempfile_key.write bosh_secrets['postgres_client_cert']['private_key']
217
- tempfile_ca.write bosh_secrets['postgres_ca_cert']['certificate']
216
+ tempfile_cert.write bosh_secrets["postgres_client_cert"]["certificate"]
217
+ tempfile_key.write bosh_secrets["postgres_client_cert"]["private_key"]
218
+ tempfile_ca.write bosh_secrets["postgres_ca_cert"]["certificate"]
218
219
 
219
220
  tempfile_cert.close
220
221
  tempfile_key.close
221
222
  tempfile_ca.close
222
223
 
223
- command = %Q{psql "sslmode=verify-ca sslrootcert=#{tempfile_ca.path} sslcert=#{tempfile_cert.path} sslkey=#{tempfile_key.path} hostaddr=#{bosh_secrets['postgres_host']} user=#{bosh_secrets['postgres_role']} dbname=atc"}
224
+ command = %Q{psql "sslmode=verify-ca sslrootcert=#{tempfile_ca.path} sslcert=#{tempfile_cert.path} sslkey=#{tempfile_key.path} hostaddr=#{bosh_secrets["postgres_host"]} user=#{bosh_secrets["postgres_role"]} dbname=atc"}
224
225
 
225
226
  sh command
226
227
  ensure
@@ -263,8 +264,8 @@ module Concourse
263
264
 
264
265
  namespace "update" do
265
266
  desc "update the git submodule for concourse-bosh-deployment"
266
- task "concourse_deployment" do
267
- bosh_update_concourse_deployment
267
+ task "concourse_deployment", ["branch_or_tag"] do |t, args|
268
+ bosh_update_concourse_deployment args["branch_or_tag"]
268
269
  end
269
270
 
270
271
  desc "upload ubuntu stemcell to the director"
@@ -272,25 +273,25 @@ module Concourse
272
273
  bosh_update_ubuntu_stemcell
273
274
  end
274
275
 
275
- # desc "upload windows stemcell to the director"
276
- # task "windows_stemcell" do
277
- # bosh_update_windows_stemcell
278
- # end
279
-
280
- # desc "upload concourse windows release to the director"
281
- # task "concourse_windows_release" do
282
- # bosh_update_concourse_windows_release
283
- # end
284
-
285
- # desc "upload windows-ruby-dev-tools release to the director"
286
- # task "windows_ruby_dev_tools" do
287
- # bosh_update_windows_ruby_dev_tools
288
- # end
289
-
290
- # desc "upload windows-utilities release to the director"
291
- # task "windows_utilities_release" do
292
- # bosh_update_windows_utilities_release
293
- # end
276
+ # desc "upload windows stemcell to the director"
277
+ # task "windows_stemcell" do
278
+ # bosh_update_windows_stemcell
279
+ # end
280
+
281
+ # desc "upload concourse windows release to the director"
282
+ # task "concourse_windows_release" do
283
+ # bosh_update_concourse_windows_release
284
+ # end
285
+
286
+ # desc "upload windows-ruby-dev-tools release to the director"
287
+ # task "windows_ruby_dev_tools" do
288
+ # bosh_update_windows_ruby_dev_tools
289
+ # end
290
+
291
+ # desc "upload windows-utilities release to the director"
292
+ # task "windows_utilities_release" do
293
+ # bosh_update_windows_utilities_release
294
+ # end
294
295
  end
295
296
 
296
297
  desc "deploy concourse"
@@ -1,43 +1,43 @@
1
- require 'term/ansicolor'
1
+ require "term/ansicolor"
2
2
 
3
3
  module Concourse
4
4
  class Deployer
5
5
  module Utils
6
6
  include Term::ANSIColor
7
7
 
8
- GITIGNORE_FILE = ".gitignore"
9
- GITATTRIBUTES_FILE = ".gitattributes"
8
+ GITIGNORE_FILE = ".gitignore"
9
+ GITATTRIBUTES_FILE = ".gitattributes"
10
10
 
11
- def sh command
11
+ def sh(command)
12
12
  running "(in #{Dir.pwd}) #{command}"
13
13
  super command, verbose: false
14
14
  end
15
15
 
16
- def running message
16
+ def running(message)
17
17
  print bold, red, "RUNNING: ", reset, message, "\n"
18
18
  end
19
19
 
20
- def note message
20
+ def note(message)
21
21
  print bold, green, "NOTE: ", reset, message, "\n"
22
22
  end
23
23
 
24
- def important message
24
+ def important(message)
25
25
  print bold, "NOTE: ", message, reset, "\n"
26
26
  end
27
27
 
28
- def error message, continue=false
28
+ def error(message, continue = false)
29
29
  print red, bold, "ERROR: #{message}", reset, "\n"
30
30
  exit 1 unless continue
31
31
  end
32
32
 
33
- def ensure_file filename, &block
33
+ def ensure_file(filename, &block)
34
34
  return if File.exist?(filename)
35
35
  File.open(filename, "w") do |f|
36
36
  block.call f
37
37
  end
38
38
  end
39
39
 
40
- def ensure_in_gitignore file_glob
40
+ def ensure_in_gitignore(file_glob)
41
41
  if File.exist?(GITIGNORE_FILE)
42
42
  if File.read(GITIGNORE_FILE).split("\n").include?(file_glob)
43
43
  note "found '#{file_glob}' already present in #{GITIGNORE_FILE}"
@@ -48,7 +48,7 @@ module Concourse
48
48
  File.open(GITIGNORE_FILE, "a") { |f| f.puts file_glob }
49
49
  end
50
50
 
51
- def ensure_in_gitcrypt file_glob
51
+ def ensure_in_gitcrypt(file_glob)
52
52
  crypt_entry = "#{file_glob} filter=git-crypt diff=git-crypt"
53
53
  if File.exist?(GITATTRIBUTES_FILE)
54
54
  if File.read(GITATTRIBUTES_FILE).split("\n").include?(crypt_entry)
@@ -60,7 +60,7 @@ module Concourse
60
60
  File.open(GITATTRIBUTES_FILE, "a") { |f| f.puts crypt_entry }
61
61
  end
62
62
 
63
- def ensure_in_envrc entry_key, entry_value=nil
63
+ def ensure_in_envrc(entry_key, entry_value = nil)
64
64
  entries = if File.exist?(ENVRC_FILE)
65
65
  File.read(ENVRC_FILE).split("\n")
66
66
  else
@@ -108,30 +108,21 @@ module Concourse
108
108
  end
109
109
  end
110
110
 
111
- def ensure_git_submodule repo_url, commitish
111
+ def ensure_git_submodule(repo_url, commitish)
112
112
  repo_name = File.basename repo_url
113
113
  sh "git submodule add '#{repo_url}'" unless Dir.exists?(repo_name)
114
- Dir.chdir(repo_name) do
115
- sh "git checkout '#{commitish}'"
116
- end
117
- end
118
-
119
- def update_git_submodule repo_url, commitish
120
- ensure_git_submodule repo_url, commitish
121
-
122
- repo_name = File.basename repo_url
123
114
  Dir.chdir(repo_name) do
124
115
  sh "git remote update"
125
- sh "git pull --rebase"
116
+ sh "git checkout '#{commitish}'"
126
117
  end
127
118
  end
128
119
 
129
- def which command
120
+ def which(command)
130
121
  found = `which #{command}`
131
122
  return $?.success? ? found : nil
132
123
  end
133
124
 
134
- def unless_which command, whereto
125
+ def unless_which(command, whereto)
135
126
  if which command
136
127
  note "found command '#{command}'"
137
128
  return
@@ -139,7 +130,7 @@ module Concourse
139
130
  error "please install '#{command}' by visiting #{whereto}"
140
131
  end
141
132
 
142
- def prompt query, default=nil
133
+ def prompt(query, default = nil)
143
134
  loop do
144
135
  message = query
145
136
  message += " [#{default}]" if default
@@ -155,7 +146,7 @@ module Concourse
155
146
  end
156
147
  end
157
148
 
158
- def prompt_for_file_contents query
149
+ def prompt_for_file_contents(query)
159
150
  loop do
160
151
  path = prompt query
161
152
  return File.read(path) if File.exists?(path)
@@ -167,7 +158,7 @@ module Concourse
167
158
  `bbl lbs`.split(":").last.strip
168
159
  end
169
160
 
170
- def bosh_secrets &block
161
+ def bosh_secrets(&block)
171
162
  vars = File.exists?(BOSH_SECRETS) ? YAML.load_file(BOSH_SECRETS) : {}
172
163
  return vars unless block_given?
173
164
 
@@ -176,7 +167,7 @@ module Concourse
176
167
  vars
177
168
  end
178
169
 
179
- def bosh_update_stemcell name
170
+ def bosh_update_stemcell(name)
180
171
  doc = Nokogiri::XML(open("https://bosh.io/stemcells/#{name}"))
181
172
  url = doc.at_xpath("//a[contains(text(), 'Light Stemcell')]/@href")
182
173
  if url.nil?
@@ -185,7 +176,7 @@ module Concourse
185
176
  sh "bosh upload-stemcell #{url}"
186
177
  end
187
178
 
188
- def bosh_update_release repo
179
+ def bosh_update_release(repo)
189
180
  doc = Nokogiri::XML(open("https://bosh.io/releases/github.com/#{repo}?all=1"))
190
181
  url = doc.at_xpath("//a[contains(text(), 'Release Tarball')]/@href")
191
182
  if url.nil?
@@ -197,7 +188,7 @@ module Concourse
197
188
  sh "bosh upload-release #{url}"
198
189
  end
199
190
 
200
- def bosh_update_from_git_repo git
191
+ def bosh_update_from_git_repo(git)
201
192
  dirname = File.basename(git)
202
193
  Dir.mktmpdir do |dir|
203
194
  Dir.chdir dir do
@@ -1,5 +1,5 @@
1
1
  module Concourse
2
2
  class Deployer
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concourse-deployer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Dalessio
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-10 00:00:00.000000000 Z
11
+ date: 2019-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: term-ansicolor