obs_deploy 0.1.2 → 0.1.5
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 +4 -4
- data/Dockerfile +13 -0
- data/Gemfile.lock +3 -3
- data/README.md +33 -2
- data/bin/obs_deploy +2 -0
- data/dist/rubygem-obs_deploy.spec +2 -2
- data/entrypoint.sh +9 -0
- data/lib/obs_deploy.rb +4 -43
- data/lib/obs_deploy/cli/commands.rb +2 -0
- data/lib/obs_deploy/cli/commands/systemctl.rb +22 -0
- data/lib/obs_deploy/ssh.rb +10 -3
- data/lib/obs_deploy/version.rb +1 -1
- data/lib/obs_deploy/zypper.rb +35 -0
- data/lib/systemctl.rb +23 -0
- data/obs_deploy.gemspec +1 -1
- metadata +9 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ab8c1bfc4cf824dd5e4efd68d9276e034dfe91015686331e5630c0c558054f8
|
4
|
+
data.tar.gz: eb4100e89d9df67106937087ca61998a5ff00fc3631a465b4dbf9b1ff818a19a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea0f667fab7e119b895aaf4fe9215593d17d38af12451cfe679f09b4425bb8de13b3e4f1a8617da2e15fe0e4803f3b8dad697a9151376f5948e65610a226c99c
|
7
|
+
data.tar.gz: 07e2d1834cde084672db356d689f7fed31e25a6f384ccbd17a3a29525ff621949d986cc759e2238ae9b350f7158d1802b756803d60cafd6ba869c2ea805e5f01
|
data/Dockerfile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
FROM opensuse/tumbleweed
|
2
|
+
|
3
|
+
RUN zypper ar -f -G https://download.opensuse.org/repositories/home:/vpereirabr/openSUSE_Tumbleweed/home:vpereirabr.repo
|
4
|
+
RUN zypper --gpg-auto-import-keys refresh
|
5
|
+
RUN zypper install -y openssh vim iputils
|
6
|
+
RUN zypper install -y ruby2.6-rubygem-obs_deploy
|
7
|
+
|
8
|
+
COPY entrypoint.sh /entrypoint.sh
|
9
|
+
RUN chmod +x /entrypoint.sh
|
10
|
+
ENTRYPOINT ["/entrypoint.sh"]
|
11
|
+
|
12
|
+
|
13
|
+
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
obs_deploy (0.1.
|
4
|
+
obs_deploy (0.1.5)
|
5
5
|
cheetah
|
6
6
|
dry-cli
|
7
7
|
nokogiri
|
@@ -36,7 +36,7 @@ GEM
|
|
36
36
|
method_source (~> 1.0)
|
37
37
|
public_suffix (4.0.3)
|
38
38
|
rainbow (3.0.0)
|
39
|
-
rake (
|
39
|
+
rake (13.0.1)
|
40
40
|
rexml (3.2.4)
|
41
41
|
rspec (3.9.0)
|
42
42
|
rspec-core (~> 3.9.0)
|
@@ -74,7 +74,7 @@ DEPENDENCIES
|
|
74
74
|
bundler (~> 2.0)
|
75
75
|
obs_deploy!
|
76
76
|
pry
|
77
|
-
rake (~>
|
77
|
+
rake (~> 13.0)
|
78
78
|
rspec (~> 3.0)
|
79
79
|
rubocop
|
80
80
|
webmock
|
data/README.md
CHANGED
@@ -6,8 +6,15 @@ Simple tool to deploy OBS via zypper to our reference server
|
|
6
6
|
|
7
7
|
Just run:
|
8
8
|
|
9
|
-
```
|
10
|
-
gem
|
9
|
+
```
|
10
|
+
gem install obs_deploy
|
11
|
+
```
|
12
|
+
|
13
|
+
or
|
14
|
+
|
15
|
+
```
|
16
|
+
zypper ar https://download.opensuse.org/repositories/home:/vpereirabr/openSUSE_Tumbleweed/home:vpereirabr.repo
|
17
|
+
zypper in ruby2.6-rubygem-obs_deploy
|
11
18
|
```
|
12
19
|
|
13
20
|
## Usage
|
@@ -46,6 +53,30 @@ On the checked out source, run the following:
|
|
46
53
|
|
47
54
|
`ruby -Ilib bin/obs_deploy -v`
|
48
55
|
|
56
|
+
if you want to run it against the OBS appliance running on VirtualBox:
|
57
|
+
|
58
|
+
- Make sure that you can ssh without password into your VM
|
59
|
+
- Make sure the appliance is running in __bridge__ mode
|
60
|
+
- build the docker image as:
|
61
|
+
|
62
|
+
```
|
63
|
+
docker build -t $USER/obs_deploy .
|
64
|
+
```
|
65
|
+
|
66
|
+
- then run the container as:
|
67
|
+
|
68
|
+
```
|
69
|
+
docker run --rm -it -v "$HOME/.ssh:/tmp/.ssh:ro" $USER/obs_deploy bash
|
70
|
+
```
|
71
|
+
Now you are inside the container and should be able to ping the obs appliance.
|
72
|
+
|
73
|
+
From there:
|
74
|
+
|
75
|
+
```
|
76
|
+
$ obs_deploy refresh-repositories --host=$APPLIANCE_IP
|
77
|
+
```
|
78
|
+
|
79
|
+
|
49
80
|
## Hacking
|
50
81
|
|
51
82
|
If you want to add new command to the cli, please read the `dry-cli` documentation https://dry-rb.org/gems/dry-cli/0.4/. The commands are in the `obs_deploy/cli/commands` directory.
|
data/bin/obs_deploy
CHANGED
@@ -19,10 +19,10 @@
|
|
19
19
|
%define mod_name obs_deploy
|
20
20
|
%define mod_full_name %{mod_name}-%{version}
|
21
21
|
Name: rubygem-obs_deploy
|
22
|
-
Version: 0.1.
|
22
|
+
Version: 0.1.2
|
23
23
|
Release: 0
|
24
24
|
Summary: OBS Deployment tool
|
25
|
-
License:
|
25
|
+
License: MIT
|
26
26
|
Group: Development/Languages/Ruby
|
27
27
|
URL: https://openbuildservice.org
|
28
28
|
Source: https://rubygems.org/gems/%{mod_full_name}.gem
|
data/entrypoint.sh
ADDED
data/lib/obs_deploy.rb
CHANGED
@@ -3,54 +3,15 @@
|
|
3
3
|
require 'open-uri'
|
4
4
|
require 'net/http'
|
5
5
|
require 'cheetah'
|
6
|
+
require 'logger'
|
7
|
+
|
6
8
|
require 'nokogiri'
|
7
9
|
require 'obs_deploy/version'
|
8
10
|
require 'obs_deploy/check_diff'
|
9
11
|
require 'obs_deploy/ssh'
|
12
|
+
require 'obs_deploy/zypper'
|
13
|
+
require 'obs_deploy/systemctl'
|
10
14
|
|
11
15
|
module ObsDeploy
|
12
16
|
class Error < StandardError; end
|
13
|
-
class Systemctl
|
14
|
-
class << self
|
15
|
-
def status
|
16
|
-
'systemctl status obs-api-support.target'
|
17
|
-
end
|
18
|
-
|
19
|
-
def list_dependencies
|
20
|
-
'systemctl list-dependencies obs-api-support.target'
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
class Zypper
|
26
|
-
def update(dry_run: true)
|
27
|
-
if dry_run
|
28
|
-
run ['zypper'] + update_params + dry_run_params + package_name
|
29
|
-
else
|
30
|
-
run ['zypper'] + update_params + package_name
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def refresh
|
35
|
-
run ['zypper', '--non-interactive', '--gpg-auto-import-keys', 'refresh']
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
def run(params)
|
41
|
-
params
|
42
|
-
end
|
43
|
-
|
44
|
-
def package_name
|
45
|
-
['obs-api']
|
46
|
-
end
|
47
|
-
|
48
|
-
def update_params
|
49
|
-
['--non-interactive', 'update', '--best-effort', '--details']
|
50
|
-
end
|
51
|
-
|
52
|
-
def dry_run_params
|
53
|
-
['--dry-run --download-only']
|
54
|
-
end
|
55
|
-
end
|
56
17
|
end
|
@@ -9,6 +9,7 @@ module ObsDeploy
|
|
9
9
|
autoload :Deploy, File.join(__dir__, 'commands/deploy.rb')
|
10
10
|
autoload :GetPackageVersion, File.join(__dir__, 'commands/get_package_version.rb')
|
11
11
|
autoload :GetDeployedVersion, File.join(__dir__, 'commands/get_deployed_version.rb')
|
12
|
+
autoload :Systemctl, File.join(__dir__, 'commands/systemctl.rb')
|
12
13
|
|
13
14
|
# register the commands and its command line
|
14
15
|
register 'available-package', GetPackageVersion
|
@@ -16,6 +17,7 @@ module ObsDeploy
|
|
16
17
|
register 'version', Version, aliases: ['v', '-v', '--version']
|
17
18
|
register 'deploy', Deploy
|
18
19
|
register 'refresh-repositories', RefreshRepositories
|
20
|
+
register 'systemctl', Systemctl
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pry'
|
4
|
+
module ObsDeploy
|
5
|
+
module CLI
|
6
|
+
module Commands
|
7
|
+
class Systemctl < Dry::CLI::Command
|
8
|
+
desc 'run systemd commands to verify application state'
|
9
|
+
|
10
|
+
option :user, type: :string, default: 'root', desc: 'User'
|
11
|
+
option :host, type: :string, default: 'localhost', desc: 'Set the server address'
|
12
|
+
option :port, type: :int, default: 22, desc: 'Set the server port'
|
13
|
+
|
14
|
+
def call(user:, host:, port:, **)
|
15
|
+
ssh_driver = ObsDeploy::SSH.new(user: user, server: host, port: port)
|
16
|
+
ssh_driver.run(ObsDeploy::Systemctl.new.status)
|
17
|
+
ssh_driver.run(ObsDeploy::Systemctl.new.list_dependencies)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/obs_deploy/ssh.rb
CHANGED
@@ -9,6 +9,7 @@ module ObsDeploy
|
|
9
9
|
@server = opts[:server] || 'localhost'
|
10
10
|
@port = opts[:port] || 22
|
11
11
|
@identity_file = opts[:identity_file]
|
12
|
+
@debug = opts[:debug] || false
|
12
13
|
end
|
13
14
|
|
14
15
|
def build_command
|
@@ -18,9 +19,15 @@ module ObsDeploy
|
|
18
19
|
end
|
19
20
|
|
20
21
|
def run(cmd)
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
Cheetah.run(build_command + cmd, logger: logger)
|
23
|
+
end
|
24
|
+
|
25
|
+
def logger
|
26
|
+
Logger.new(STDOUT, level: logger_level)
|
27
|
+
end
|
28
|
+
|
29
|
+
def logger_level
|
30
|
+
@debug ? Logger::DEBUG : Logger::INFO
|
24
31
|
end
|
25
32
|
end
|
26
33
|
end
|
data/lib/obs_deploy/version.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ObsDeploy
|
4
|
+
class Zypper
|
5
|
+
def update(dry_run: true)
|
6
|
+
if dry_run
|
7
|
+
run ['zypper'] + update_params + dry_run_params + package_name
|
8
|
+
else
|
9
|
+
run ['zypper'] + update_params + package_name
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def refresh
|
14
|
+
run ['zypper', '--non-interactive', '--gpg-auto-import-keys', 'refresh']
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def run(params)
|
20
|
+
params
|
21
|
+
end
|
22
|
+
|
23
|
+
def package_name
|
24
|
+
['obs-api']
|
25
|
+
end
|
26
|
+
|
27
|
+
def update_params
|
28
|
+
['--non-interactive', 'update', '--best-effort', '--details']
|
29
|
+
end
|
30
|
+
|
31
|
+
def dry_run_params
|
32
|
+
['--dry-run --download-only']
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/systemctl.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ObsDeploy
|
4
|
+
class Systemctl
|
5
|
+
def status
|
6
|
+
run ['systemctl'] + ['status'] + target
|
7
|
+
end
|
8
|
+
|
9
|
+
def list_dependencies
|
10
|
+
run ['systemctl'] + ['list-dependencies'] + target
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def target
|
16
|
+
['obs-api-support.target']
|
17
|
+
end
|
18
|
+
|
19
|
+
def run(params)
|
20
|
+
params + ['--no-pager']
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/obs_deploy.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
|
30
30
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
31
31
|
spec.add_development_dependency 'pry'
|
32
|
-
spec.add_development_dependency 'rake', '~>
|
32
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
33
33
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
34
34
|
spec.add_development_dependency 'rubocop'
|
35
35
|
spec.add_development_dependency 'webmock'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: obs_deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Pereira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '13.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '13.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +150,7 @@ files:
|
|
150
150
|
- ".gitignore"
|
151
151
|
- ".rspec"
|
152
152
|
- ".travis.yml"
|
153
|
+
- Dockerfile
|
153
154
|
- Gemfile
|
154
155
|
- Gemfile.lock
|
155
156
|
- README.md
|
@@ -159,6 +160,7 @@ files:
|
|
159
160
|
- bin/setup
|
160
161
|
- dist/Makefile
|
161
162
|
- dist/rubygem-obs_deploy.spec
|
163
|
+
- entrypoint.sh
|
162
164
|
- lib/obs_deploy.rb
|
163
165
|
- lib/obs_deploy/check_diff.rb
|
164
166
|
- lib/obs_deploy/cli/commands.rb
|
@@ -166,9 +168,12 @@ files:
|
|
166
168
|
- lib/obs_deploy/cli/commands/get_deployed_version.rb
|
167
169
|
- lib/obs_deploy/cli/commands/get_package_version.rb
|
168
170
|
- lib/obs_deploy/cli/commands/refresh_repositories.rb
|
171
|
+
- lib/obs_deploy/cli/commands/systemctl.rb
|
169
172
|
- lib/obs_deploy/cli/commands/version.rb
|
170
173
|
- lib/obs_deploy/ssh.rb
|
171
174
|
- lib/obs_deploy/version.rb
|
175
|
+
- lib/obs_deploy/zypper.rb
|
176
|
+
- lib/systemctl.rb
|
172
177
|
- obs_deploy.gemspec
|
173
178
|
homepage: https://openbuildservice.org
|
174
179
|
licenses: []
|