aethernal-agent 0.3.6 → 0.4.0
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/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
|