ops_manager_cli 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -1
- data/Dockerfile +1 -1
- data/README.md +31 -2
- data/lib/ops_manager/api/base.rb +11 -3
- data/lib/ops_manager/api/opsman.rb +1 -1
- data/lib/ops_manager/cli.rb +11 -1
- data/lib/ops_manager/deployments/vsphere.rb +1 -1
- data/lib/ops_manager/product_deployment.rb +10 -4
- data/lib/ops_manager/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8af7fdbbb2293c2f7f6a1e609776f7bc0f66ec9
|
4
|
+
data.tar.gz: dd774257ac657f9602d02583d657896fe483cf29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c598d8b6023fb4d2d6d8b95fc1c7d246be7d4c5bdd5f738c9664ce6f0d39184b8d72851c26e6f16b5e02b9669a36b7194d76b39135cdefe6151e1c8ce1a6faa
|
7
|
+
data.tar.gz: e1e533f82c2ac7e7b7dc0fc9114b5d0ef79ed7ff8f6131610d79230a4653526d941a7d50cf24ca6d7e163ce23d8cc90b61fadcc1811890ebab4d22a014f6cb7e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v0.4.1](https://github.com/compozed/ops_manager_cli/tree/v0.4.1) (2016-10-21)
|
4
|
+
[Full Changelog](https://github.com/compozed/ops_manager_cli/compare/v0.4.0...v0.4.1)
|
5
|
+
|
6
|
+
**Fixed bugs:**
|
7
|
+
|
8
|
+
- Director template generator does not delete UAA sensitive data [\#13](https://github.com/compozed/ops_manager_cli/issues/13)
|
9
|
+
- Product template generator does not delete stemcell metadata properties [\#12](https://github.com/compozed/ops_manager_cli/issues/12)
|
10
|
+
|
3
11
|
## [v0.4.0](https://github.com/compozed/ops_manager_cli/tree/v0.4.0) (2016-10-20)
|
4
12
|
[Full Changelog](https://github.com/compozed/ops_manager_cli/compare/v0.3.0...v0.4.0)
|
5
13
|
|
@@ -37,4 +45,4 @@
|
|
37
45
|
## [v0.1.1](https://github.com/compozed/ops_manager_cli/tree/v0.1.1) (2016-05-06)
|
38
46
|
|
39
47
|
|
40
|
-
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
48
|
+
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
data/Dockerfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# OpsManagerCli [![Build Status](https://travis-ci.org/compozed/ops_manager_cli.png?branch=master)](https://travis-ci.org/compozed/ops_manager_cli) [![Code Climate](https://codeclimate.com/github/compozed/ops_manager_cli.png)](https://codeclimate.com/github/compozed/ops_manager_cli)
|
1
|
+
# OpsManagerCli [![Build Status](https://travis-ci.org/compozed/ops_manager_cli.png?branch=master)](https://travis-ci.org/compozed/ops_manager_cli) [![Code Climate](https://codeclimate.com/github/compozed/ops_manager_cli.png)](https://codeclimate.com/github/compozed/ops_manager_cli) [![Gem Version](https://badge.fury.io/rb/ops_manager_cli.svg)](https://badge.fury.io/rb/ops_manager_cli)
|
2
2
|
|
3
3
|
|
4
4
|
Command line tool to interact with Pivotal Operations Manager through its API, because GUIs are evil.
|
@@ -75,6 +75,35 @@ All dependencies must be installed and available in user PATH
|
|
75
75
|
|
76
76
|
./ops_manager deploy-product product_deployment.yml
|
77
77
|
|
78
|
+
### Regenerating SSL Certificates
|
79
|
+
|
80
|
+
Ops Manager generates certificates for BOSH director and UAA automatically before deploying director.
|
81
|
+
[Periodically you will want to regenerate this certificates.](https://discuss.pivotal.io/hc/en-us/articles/115000453368)
|
82
|
+
There is a workaround on how to do this with ops_manager_cli:
|
83
|
+
|
84
|
+
1. Get director template:
|
85
|
+
|
86
|
+
$ ops_manager get-director-template > product_installation_settings.yml
|
87
|
+
|
88
|
+
2. Set director's cert and private key to null:
|
89
|
+
|
90
|
+
# product_installation_settings.yml
|
91
|
+
# For director ssl certs
|
92
|
+
+ director_ssl:
|
93
|
+
+ private_key_pem:
|
94
|
+
+ cert_pem:
|
95
|
+
|
96
|
+
# For director ssl certs
|
97
|
+
+ uaa_ssl:
|
98
|
+
+ private_key_pem:
|
99
|
+
+ cert_pem:
|
100
|
+
|
101
|
+
3. Perform director deployment:
|
102
|
+
|
103
|
+
$ ops_manager deploy-product product_deployment.yml
|
104
|
+
|
105
|
+
**Note:** remove this lines unless you want to regenerate certs on every single deployment :)
|
106
|
+
|
78
107
|
## Using with Docker
|
79
108
|
|
80
109
|
The ops_manager_cli tool can be installed in a docker container typically in conjunction with [Concourse CI](http://concourse.ci/). This allows users to build concourse pipelines to deploy and manage their Pivotal Cloud Foundry deployments.
|
@@ -96,7 +125,7 @@ The ops_manager_cli tool can be installed in a docker container typically in con
|
|
96
125
|
|
97
126
|
## Contributing
|
98
127
|
|
99
|
-
See our [
|
128
|
+
See our [CONTRIBUTING](CONTRIBUTING.md) section for more information.
|
100
129
|
|
101
130
|
|
102
131
|
## License
|
data/lib/ops_manager/api/base.rb
CHANGED
@@ -62,7 +62,6 @@ class OpsManager
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
|
66
65
|
body = opts[:body] || ''
|
67
66
|
request.body= body
|
68
67
|
|
@@ -82,6 +81,7 @@ class OpsManager
|
|
82
81
|
uri = uri_for(endpoint)
|
83
82
|
http = http_for(uri)
|
84
83
|
request = Net::HTTP::Put.new(uri.request_uri)
|
84
|
+
|
85
85
|
request.set_form_data(opts)
|
86
86
|
|
87
87
|
request.basic_auth(username, password) if self.respond_to?(:username)
|
@@ -91,7 +91,12 @@ class OpsManager
|
|
91
91
|
request[k] = v
|
92
92
|
end
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
|
+
request['Content-Type'] = 'application/json'
|
96
|
+
|
97
|
+
body = opts[:body] || ''
|
98
|
+
request.body= body
|
99
|
+
|
95
100
|
http.request(request).tap do |res|
|
96
101
|
logger.info("performing put to #{uri} with opts: #{opts.inspect} res.code: #{res.code}")
|
97
102
|
logger.info("put response body #{res.body}")
|
@@ -130,7 +135,10 @@ class OpsManager
|
|
130
135
|
request[k] = v
|
131
136
|
end
|
132
137
|
end
|
133
|
-
http.request(request)
|
138
|
+
http.request(request).tap do |res|
|
139
|
+
logger.info("performing delete to #{uri} with opts: #{opts.inspect} res.code: #{res.code}")
|
140
|
+
logger.info("post response body #{res.body}")
|
141
|
+
end
|
134
142
|
end
|
135
143
|
|
136
144
|
def uri_for(endpoint)
|
@@ -124,7 +124,7 @@ class OpsManager
|
|
124
124
|
def import_stemcell(filepath)
|
125
125
|
return unless filepath
|
126
126
|
tar = UploadIO.new(filepath, 'multipart/form-data')
|
127
|
-
print_green "====> Uploading stemcell: #{
|
127
|
+
print_green "====> Uploading stemcell: #{filepath} ..."
|
128
128
|
opts = { "stemcell[file]" => tar }
|
129
129
|
res = nil
|
130
130
|
|
data/lib/ops_manager/cli.rb
CHANGED
@@ -106,15 +106,20 @@ class OpsManager
|
|
106
106
|
end
|
107
107
|
|
108
108
|
class Curl < Clamp::Command
|
109
|
-
option ['-X', '--http-method'], "HTTP_METHOD", "HTTP Method (GET,POST)", default: 'GET'
|
109
|
+
option ['-X', '--http-method'], "HTTP_METHOD", "HTTP Method (DELETE, GET, POST, PUT)", default: 'GET'
|
110
|
+
option ['-d', '--data'], "HTTP_POST_DATA", "HTTP Post Data(POST, PUT)", default: ''
|
110
111
|
parameter "ENDPOINT", "OpsManager api endpoint. eg: /api/v0/installation_settings", required: true
|
111
112
|
|
112
113
|
def execute
|
113
114
|
puts case http_method.strip
|
114
115
|
when 'GET'
|
115
116
|
opsman.authenticated_get(@endpoint).body
|
117
|
+
when 'DELETE'
|
118
|
+
opsman.authenticated_delete(@endpoint).body
|
116
119
|
when 'POST'
|
117
120
|
opsman.authenticated_post(@endpoint).body
|
121
|
+
when 'PUT'
|
122
|
+
opsman.authenticated_put(@endpoint, body: strip(@data, "'")).body
|
118
123
|
else
|
119
124
|
"Unsupported method: #{http_method.strip}"
|
120
125
|
end
|
@@ -124,6 +129,11 @@ class OpsManager
|
|
124
129
|
def opsman
|
125
130
|
OpsManager::Api::Opsman.new(silent: true)
|
126
131
|
end
|
132
|
+
|
133
|
+
def strip(string, chars)
|
134
|
+
chars = Regexp.escape(chars)
|
135
|
+
string.strip.gsub(/\A[#{chars}]+|[#{chars}]+\z/, "")
|
136
|
+
end
|
127
137
|
end
|
128
138
|
|
129
139
|
class Version < Clamp::Command
|
@@ -18,7 +18,7 @@ class OpsManager
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def stop_current_vm(name)
|
21
|
-
print "====> Stopping vm #{name}...".green
|
21
|
+
print "====> Stopping vm #{name} ...".green
|
22
22
|
dc = vim.serviceInstance.find_datacenter(config.opts['vcenter']['datacenter'])
|
23
23
|
logger.info "finding vm: #{name}"
|
24
24
|
vm = dc.find_vm(name) or fail "VM not found"
|
@@ -41,7 +41,7 @@ class OpsManager
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def upload
|
44
|
-
print "====> Uploading product...".green
|
44
|
+
print "====> Uploading product ...".green
|
45
45
|
if ProductDeployment.exists?(config.name, config.desired_version)
|
46
46
|
puts "product already exists".green
|
47
47
|
elsif config.filepath
|
@@ -60,6 +60,7 @@ class OpsManager
|
|
60
60
|
puts "====> Upgrading #{config.name} version from #{installation.current_version.to_s} to #{config.desired_version}...".green
|
61
61
|
upload
|
62
62
|
upgrade_product_installation(installation.guid, config.desired_version)
|
63
|
+
merge_product_installation_settings
|
63
64
|
OpsManager::InstallationRunner.trigger!.wait_for_result
|
64
65
|
|
65
66
|
puts "====> Finish!".green
|
@@ -75,14 +76,19 @@ class OpsManager
|
|
75
76
|
puts "====> Deploying #{config.name} version #{config.desired_version}...".green
|
76
77
|
upload
|
77
78
|
add_to_installation
|
78
|
-
|
79
|
-
puts `DEBUG=false spruce merge /tmp/is.yml #{config.installation_settings_file} > /tmp/new_is.yml`
|
80
|
-
upload_installation_settings('/tmp/new_is.yml')
|
79
|
+
merge_product_installation_settings
|
81
80
|
OpsManager::InstallationRunner.trigger!.wait_for_result
|
82
81
|
|
83
82
|
puts "====> Finish!".green
|
84
83
|
end
|
85
84
|
|
85
|
+
|
86
|
+
def merge_product_installation_settings
|
87
|
+
get_installation_settings({write_to: '/tmp/is.yml'})
|
88
|
+
puts `DEBUG=false spruce merge /tmp/is.yml #{config.installation_settings_file} > /tmp/new_is.yml`
|
89
|
+
upload_installation_settings('/tmp/new_is.yml')
|
90
|
+
end
|
91
|
+
|
86
92
|
def self.exists?(name, version)
|
87
93
|
res = JSON.parse(OpsManager::Api::Opsman.new.get_available_products.body)
|
88
94
|
!!res.find{ |o| o['name'] == name && o['product_version'].include?(version) }
|
data/lib/ops_manager/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ops_manager_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CompoZed
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|