aethernal-agent 0.3.6 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +11 -5
- data/aethernal-agent.gemspec +2 -0
- data/bin/install-aa +8 -7
- data/exe/aa-cli +7 -0
- data/lib/aethernal_agent.rb +3 -0
- data/lib/aethernal_agent/app.rb +2 -7
- data/lib/aethernal_agent/cli/core.rb +11 -0
- data/lib/aethernal_agent/cli/services.rb +56 -0
- data/lib/aethernal_agent/plugins/plex-docker/plex_docker.rb +2 -0
- data/lib/aethernal_agent/plugins/portainer/portainer.rb +1 -14
- data/lib/aethernal_agent/plugins/radarr/manifest.yml +4 -0
- data/lib/aethernal_agent/plugins/resilio_docker/resilio_docker.rb +1 -0
- data/lib/aethernal_agent/plugins/resilio_docker/{files → templates}/resilio_docker.service.erb +0 -0
- data/lib/aethernal_agent/plugins/rutorrent/rutorrent.rb +2 -0
- data/lib/aethernal_agent/plugins/sonarr/manifest.yml +1 -0
- data/lib/aethernal_agent/utils.rb +16 -0
- data/lib/aethernal_agent/version.rb +1 -1
- metadata +35 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f64b513fb0eb9a86d74289efec2c7e9434f289abbfcf64f1431c011c09b7bc3
|
4
|
+
data.tar.gz: 36c7972cc224a9afedd8c3e44fb3aa2f2fb7ad96d7c1572c1a57293dc67f9991
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 268aeb60c33f57f8eab3b9fafff11ac281963aa2b02a9ac9681c5f334f4fc768a615d0be2622fc388f80152c1b382fc2d109eff5f262c40ad244e8effb154ff2
|
7
|
+
data.tar.gz: 1d99191e44b70103627c91979840e4784b680e4176ef6d75d5c42bb31a10f1f9e7195e77fda3502bdb5ebfa1fe26baa76046d182307795dcbdea589f79d21ae4
|
data/Gemfile.lock
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
aethernal-agent (0.
|
4
|
+
aethernal-agent (0.4.0)
|
5
5
|
activesupport
|
6
6
|
bcrypt
|
7
7
|
docker-api (~> 1.34.2)
|
8
8
|
sinatra (~> 2.0.7)
|
9
9
|
sinatra-contrib
|
10
10
|
sqlite3
|
11
|
+
terminal-table
|
12
|
+
thor
|
11
13
|
|
12
14
|
GEM
|
13
15
|
remote: https://rubygems.org/
|
14
16
|
specs:
|
15
|
-
activesupport (6.0.3.
|
17
|
+
activesupport (6.0.3.4)
|
16
18
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
17
19
|
i18n (>= 0.7, < 2)
|
18
20
|
minitest (~> 5.1)
|
@@ -26,7 +28,7 @@ GEM
|
|
26
28
|
docker-api (1.34.2)
|
27
29
|
excon (>= 0.47.0)
|
28
30
|
multi_json
|
29
|
-
excon (0.
|
31
|
+
excon (0.78.0)
|
30
32
|
i18n (1.8.5)
|
31
33
|
concurrent-ruby (~> 1.0)
|
32
34
|
method_source (1.0.0)
|
@@ -86,11 +88,15 @@ GEM
|
|
86
88
|
net-telnet (= 0.1.1)
|
87
89
|
sfl
|
88
90
|
sqlite3 (1.4.2)
|
91
|
+
terminal-table (2.0.0)
|
92
|
+
unicode-display_width (~> 1.1, >= 1.1.1)
|
93
|
+
thor (1.0.1)
|
89
94
|
thread_safe (0.3.6)
|
90
95
|
tilt (2.0.10)
|
91
|
-
tzinfo (1.2.
|
96
|
+
tzinfo (1.2.8)
|
92
97
|
thread_safe (~> 0.1)
|
93
|
-
|
98
|
+
unicode-display_width (1.7.0)
|
99
|
+
zeitwerk (2.4.2)
|
94
100
|
|
95
101
|
PLATFORMS
|
96
102
|
ruby
|
data/aethernal-agent.gemspec
CHANGED
data/bin/install-aa
CHANGED
@@ -42,14 +42,15 @@ aethernal_exists(){
|
|
42
42
|
[ -e "" ]
|
43
43
|
}
|
44
44
|
start_aa(){
|
45
|
-
run
|
46
|
-
run
|
45
|
+
run systemctl enable aethernal-agent
|
46
|
+
run systemctl start aethernal-agent
|
47
47
|
}
|
48
48
|
stop_aa(){
|
49
|
-
run
|
49
|
+
run systemctl stop aethernal-agent
|
50
50
|
}
|
51
51
|
restart_aa(){
|
52
|
-
|
52
|
+
stop_aa
|
53
|
+
start_aa
|
53
54
|
}
|
54
55
|
update_services(){
|
55
56
|
if ! curl -o /lib/systemd/system/aethernal-agent.service https://storage.googleapis.com/bysh-chef-files/aethernal-agent.service;then
|
@@ -68,7 +69,6 @@ install_deps(){
|
|
68
69
|
install_gem(){
|
69
70
|
info "Downloading latest Aethernal Agent gem release"
|
70
71
|
run gem install --no-doc aethernal-agent
|
71
|
-
restart_aa
|
72
72
|
}
|
73
73
|
|
74
74
|
install_ci(){
|
@@ -80,7 +80,6 @@ install_ci(){
|
|
80
80
|
|
81
81
|
run unzip -o /tmp/aa.zip -d /tmp/
|
82
82
|
run gem install --no-document /tmp/pkg/aethernal-agent*.gem
|
83
|
-
restart_aa
|
84
83
|
}
|
85
84
|
|
86
85
|
main() {
|
@@ -108,13 +107,15 @@ main() {
|
|
108
107
|
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
|
109
108
|
run apt-get install -y docker-ce
|
110
109
|
fi
|
111
|
-
update_services
|
112
110
|
|
113
111
|
if [[ "$1" = "from-ci" ]];then
|
114
112
|
install_ci
|
115
113
|
else
|
116
114
|
install_gem
|
117
115
|
fi
|
116
|
+
|
117
|
+
update_services
|
118
|
+
restart_aa
|
118
119
|
}
|
119
120
|
|
120
121
|
main $@
|
data/exe/aa-cli
ADDED
data/lib/aethernal_agent.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'thor'
|
2
3
|
require 'docker-api'
|
3
4
|
require 'sqlite3'
|
4
5
|
require 'active_support/core_ext/hash/indifferent_access'
|
@@ -10,6 +11,7 @@ require 'socket'
|
|
10
11
|
require 'logger'
|
11
12
|
require 'bcrypt'
|
12
13
|
require 'net/http'
|
14
|
+
require 'terminal-table'
|
13
15
|
|
14
16
|
require 'aethernal_agent/app'
|
15
17
|
require 'aethernal_agent/loader'
|
@@ -21,6 +23,7 @@ require 'aethernal_agent/template'
|
|
21
23
|
require 'aethernal_agent/operation'
|
22
24
|
require 'aethernal_agent/operation_pool'
|
23
25
|
require 'aethernal_agent/version'
|
26
|
+
require 'aethernal_agent/cli/core'
|
24
27
|
|
25
28
|
module AethernalAgent
|
26
29
|
|
data/lib/aethernal_agent/app.rb
CHANGED
@@ -91,6 +91,7 @@ module AethernalAgent
|
|
91
91
|
run_command("git clone #{self.manifest['package']['git']['url']} #{File.join(app_path)}")
|
92
92
|
when 'docker'
|
93
93
|
options = self.manifest.package['docker']
|
94
|
+
AethernalAgent.logger.info("Pulling Docker image #{options['image']}")
|
94
95
|
run_command("docker pull #{options['image']}")
|
95
96
|
end
|
96
97
|
end
|
@@ -150,15 +151,9 @@ module AethernalAgent
|
|
150
151
|
yield opts if block_given?
|
151
152
|
AethernalAgent.logger.debug("Done running custom plugin code.")
|
152
153
|
|
153
|
-
# This is probably not the best way to check if we need a docker image
|
154
154
|
if self.is_docker_install?
|
155
|
+
# We expect the image to be installed here by the install method
|
155
156
|
image = self.manifest.package['docker']['image']
|
156
|
-
AethernalAgent.logger.debug("Docker image information found")
|
157
|
-
|
158
|
-
# Pull the image
|
159
|
-
AethernalAgent.logger.debug("Pulling image #{image}")
|
160
|
-
::Docker::Image.create('fromImage' => image)
|
161
|
-
|
162
157
|
begin
|
163
158
|
container = self.container_settings.create_container(self.docker_container_name, image)
|
164
159
|
AethernalAgent.logger.debug("Starting: #{container.start}")
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
module AethernalAgent
|
4
|
+
module Cli
|
5
|
+
class Services < Thor
|
6
|
+
attr_accessor :user
|
7
|
+
include AethernalAgent::Utils
|
8
|
+
|
9
|
+
desc "start APP", "start the supplied application via systemd"
|
10
|
+
def start(app)
|
11
|
+
run_systemd_plain("start", app)
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "stop APP", "stop the supplied application via systemd"
|
15
|
+
def stop(app)
|
16
|
+
run_systemd_plain("stop", app)
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "restart APP", "restart the supplied application via systemd"
|
20
|
+
def restart(app)
|
21
|
+
run_systemd_plain("restart", app)
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "status APP", "get the status of the supplied application via systemd"
|
25
|
+
def status(app)
|
26
|
+
result = run_systemd_plain("status", app)
|
27
|
+
puts result
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "start-all", "Start all systemd managed applications"
|
31
|
+
def start_all
|
32
|
+
puts "Starting all known services"
|
33
|
+
service_files = `ls ~/.config/systemd/user/*.service`.split("\n")
|
34
|
+
result = service_files.collect do |s|
|
35
|
+
pn = Pathname.new(s)
|
36
|
+
app_name = pn.basename
|
37
|
+
puts "Starting #{app_name}"
|
38
|
+
run_systemd_plain("start", app_name)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
desc "list", "Lists all available user services and their status."
|
43
|
+
def list
|
44
|
+
service_files = `ls ~/.config/systemd/user/*.service`.split("\n")
|
45
|
+
result = service_files.collect do |s|
|
46
|
+
pn = Pathname.new(s)
|
47
|
+
app_name = pn.basename
|
48
|
+
status = systemd_text_for_service(app_name).split("\n")[2].strip
|
49
|
+
[app_name, status]
|
50
|
+
end
|
51
|
+
table = Terminal::Table.new :headings => ['Service', 'Status'], :rows => result
|
52
|
+
puts table
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -3,12 +3,8 @@ class AethernalAgent::Portainer < AethernalAgent::App
|
|
3
3
|
super(options)
|
4
4
|
end
|
5
5
|
|
6
|
-
def install_packages(options = {})
|
7
|
-
super(options)
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
6
|
def configure_app_user(options = {})
|
7
|
+
install_packages(options)
|
12
8
|
res = super(options) do |opts|
|
13
9
|
@opts = opts
|
14
10
|
end
|
@@ -39,13 +35,4 @@ class AethernalAgent::Portainer < AethernalAgent::App
|
|
39
35
|
|
40
36
|
return create_return_args(@opts)
|
41
37
|
end
|
42
|
-
|
43
|
-
def uninstall_packages(options = {})
|
44
|
-
super(options)
|
45
|
-
end
|
46
|
-
|
47
|
-
def remove_app_user(options = {})
|
48
|
-
uninstall_packages(options)
|
49
|
-
super(options)
|
50
|
-
end
|
51
38
|
end
|
@@ -51,6 +51,10 @@ actions:
|
|
51
51
|
estimated_size_mb: 23
|
52
52
|
package:
|
53
53
|
folder_name: Radarr
|
54
|
+
apt:
|
55
|
+
"1804":
|
56
|
+
packages:
|
57
|
+
- mediainfo
|
54
58
|
direct_download:
|
55
59
|
url: https://radarr.servarr.com/v1/update/nightly/updatefile?os=linux&runtime=netcore&arch=x64
|
56
60
|
target_name: Radarr.nightly.linux.tar.gz
|
@@ -8,6 +8,7 @@ class AethernalAgent::ResilioDocker < AethernalAgent::App
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def configure_app_user(options = {})
|
11
|
+
install_packages(options)
|
11
12
|
super(options) do |opts|
|
12
13
|
write_template(template_path('resilio_docker.conf.erb'),
|
13
14
|
File.join(opts[:data_volume], ('sync.conf')),
|
data/lib/aethernal_agent/plugins/resilio_docker/{files → templates}/resilio_docker.service.erb
RENAMED
File without changes
|
@@ -166,5 +166,21 @@ module AethernalAgent
|
|
166
166
|
def container_domain
|
167
167
|
"#{get_global_config(:container_name)}.#{get_global_config(:hostname)}"
|
168
168
|
end
|
169
|
+
|
170
|
+
def current_xdg_runtime_dir
|
171
|
+
"export XDG_RUNTIME_DIR=/run/user/#{get_current_uid}"
|
172
|
+
end
|
173
|
+
|
174
|
+
def get_current_uid
|
175
|
+
`id`.split("(")[0].split("=")[1]
|
176
|
+
end
|
177
|
+
|
178
|
+
def systemd_text_for_service(service_name)
|
179
|
+
run_systemd_plain("status", service_name)
|
180
|
+
end
|
181
|
+
|
182
|
+
def run_systemd_plain(action, service_name)
|
183
|
+
`#{current_xdg_runtime_dir} && systemctl --user #{action} #{service_name}`
|
184
|
+
end
|
169
185
|
end
|
170
186
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aethernal-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maran
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -150,10 +150,39 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 1.34.2
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: thor
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: terminal-table
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
153
181
|
description: Install and configure apps on the go.
|
154
182
|
email:
|
155
183
|
- maran@bytesized-hosting.com
|
156
184
|
executables:
|
185
|
+
- aa-cli
|
157
186
|
- aa-web
|
158
187
|
extensions: []
|
159
188
|
extra_rdoc_files: []
|
@@ -174,6 +203,7 @@ files:
|
|
174
203
|
- bin/install-aa
|
175
204
|
- bin/run-aa-for-test
|
176
205
|
- bin/setup
|
206
|
+
- exe/aa-cli
|
177
207
|
- exe/aa-web
|
178
208
|
- lib/aethernal_agent.rb
|
179
209
|
- lib/aethernal_agent/apache/apache.rb
|
@@ -181,6 +211,8 @@ files:
|
|
181
211
|
- lib/aethernal_agent/apache/templates/aa-user.conf.erb
|
182
212
|
- lib/aethernal_agent/app.rb
|
183
213
|
- lib/aethernal_agent/apt.rb
|
214
|
+
- lib/aethernal_agent/cli/core.rb
|
215
|
+
- lib/aethernal_agent/cli/services.rb
|
184
216
|
- lib/aethernal_agent/docker/container_settings.rb
|
185
217
|
- lib/aethernal_agent/docker/env.rb
|
186
218
|
- lib/aethernal_agent/docker/port_binding.rb
|
@@ -285,12 +317,12 @@ files:
|
|
285
317
|
- lib/aethernal_agent/plugins/radarr/radarr.rb
|
286
318
|
- lib/aethernal_agent/plugins/radarr/templates/config.xml.erb
|
287
319
|
- lib/aethernal_agent/plugins/radarr/templates/radarr.apache.conf.erb
|
288
|
-
- lib/aethernal_agent/plugins/resilio_docker/files/resilio_docker.service.erb
|
289
320
|
- lib/aethernal_agent/plugins/resilio_docker/manifest.yml
|
290
321
|
- lib/aethernal_agent/plugins/resilio_docker/meta/resilio.png
|
291
322
|
- lib/aethernal_agent/plugins/resilio_docker/resilio_docker.rb
|
292
323
|
- lib/aethernal_agent/plugins/resilio_docker/templates/resilio_docker.apache.conf.erb
|
293
324
|
- lib/aethernal_agent/plugins/resilio_docker/templates/resilio_docker.conf.erb
|
325
|
+
- lib/aethernal_agent/plugins/resilio_docker/templates/resilio_docker.service.erb
|
294
326
|
- lib/aethernal_agent/plugins/rutorrent/manifest.yml
|
295
327
|
- lib/aethernal_agent/plugins/rutorrent/meta/rtorrent.png
|
296
328
|
- lib/aethernal_agent/plugins/rutorrent/rutorrent.rb
|