takeltau 0.43.10 → 0.43.15
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/lib/takeltau/default.yml +8 -6
- data/lib/takeltau/docker/check/daemon.rb +3 -3
- data/lib/takeltau/docker/container/list.rb +1 -1
- data/lib/takeltau/ship/cli.rb +6 -0
- data/lib/takeltau/ship/container/check/existing.rb +2 -2
- data/lib/takeltau/ship/container/cli.rb +17 -3
- data/lib/takeltau/ship/container/lib.rb +41 -8
- data/lib/takeltau/ship/container/list.rb +36 -0
- data/lib/takeltau/ship/container/login.rb +1 -1
- data/lib/takeltau/ship/container/podman.rb +1 -1
- data/lib/takeltau/ship/container/update.rb +1 -1
- data/lib/takeltau/ship/project/start.rb +1 -1
- data/lib/takeltau/version +1 -1
- data/lib/takeltau.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bffbfd83d32f80c65710d44484f6efc3ca2cd1aedecfd045c48acc7d7662476f
|
4
|
+
data.tar.gz: 49032edfaa569d46693240c6776aad04ce234ff8ffdc63fc2609d2f97b556c4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3809662ed4e64854cf7324862816dd26c172da554e084d0d8504eff6a4a87d8bb177a082ce28ccb04c1e24350e13441a798dce667cf0472c4f73e1184190504
|
7
|
+
data.tar.gz: 73a636ac6b86704d68747ce8f278680df734289b5a429d38a37f4eb8ad8320df29866cbb0db13078f972e15f8d9264c8918962c9632e63bad92fe0efccf6240e
|
data/lib/takeltau/default.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
---
|
2
2
|
cmd_docker: 'docker'
|
3
|
-
|
3
|
+
cmd_docker_check_daemon_docker_version: '%{docker} --version'
|
4
4
|
cmd_docker_container_check_existing_docker_ps: '%{docker} ps --filter name=^%{container}$ --quiet'
|
5
5
|
cmd_docker_container_check_network_docker_network: '%{docker} network ls --quiet --filter name=^%{network}$'
|
6
6
|
cmd_docker_container_check_orphaned_docker_exec: '%{docker} exec --interactive %{container} ps a'
|
@@ -87,9 +87,11 @@ ship_takelship_yml: '%{pwd}/%{ship_data_dir}/compose/projects/takelship.yml'
|
|
87
87
|
ship_podman_localhost: '127.0.0.1'
|
88
88
|
ship_docker_host: '32375'
|
89
89
|
ship_default_docker_host: '32375'
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
90
|
+
cmd_ship_docker: 'docker'
|
91
|
+
cmd_ship_project_start_docker_run_nonprivileged: '%{ship_docker} run --rm --interactive %{image} %{command}'
|
92
|
+
cmd_ship_project_start_docker_run_privileged: '%{ship_docker} run --privileged --rm --detach --name %{ship_hostname} --hostname %{ship_hostname} %{ship_env} %{ports} --volume ./%{ship_data_dir}:/home/podman/takelship %{image} %{command}'
|
93
|
+
cmd_ship_project_start_docker_stop: '%{ship_docker} stop %{ship_hostname}'
|
94
|
+
cmd_ship_container_check_existing_docker_ps: '%{ship_docker} ps --filter name=^%{ship_name}$ --quiet'
|
95
|
+
cmd_ship_container_docker: '%{ship_docker} exec --interactive %{tty} %{ship_hostname} %{command}'
|
95
96
|
cmd_ship_container_login: 'bash'
|
97
|
+
cmd_docker_container_get_mounted_dir: '%{ship_docker} container inspect %{ship_hostname} --format "{{ (index .Mounts 0).Source }}"'
|
@@ -6,7 +6,7 @@ module DockerCheckDaemon
|
|
6
6
|
# @return [Boolean] is the docker daemon running?
|
7
7
|
# rubocop:disable Metrics/MethodLength
|
8
8
|
# rubocop:disable Metrics/AbcSize
|
9
|
-
def docker_check_daemon
|
9
|
+
def docker_check_daemon(docker = 'cmd_docker')
|
10
10
|
return true if @docker_daemon_running
|
11
11
|
|
12
12
|
return false unless command_available_else_error? config.active['cmd_docker']
|
@@ -14,8 +14,8 @@ module DockerCheckDaemon
|
|
14
14
|
log.debug 'Check if the docker daemon is running'
|
15
15
|
|
16
16
|
cmd_docker_info = format(
|
17
|
-
config.active['
|
18
|
-
docker: config.active[
|
17
|
+
config.active['cmd_docker_check_daemon_docker_version'],
|
18
|
+
docker: config.active[docker]
|
19
19
|
)
|
20
20
|
status = try cmd_docker_info
|
21
21
|
|
data/lib/takeltau/ship/cli.rb
CHANGED
@@ -25,6 +25,12 @@ module Takeltau
|
|
25
25
|
Takeltau::SelfConfig.new.active
|
26
26
|
end
|
27
27
|
|
28
|
+
desc 'list', 'Alias for tau ship container list'
|
29
|
+
# ship list: {Takeltau::ShipContainer#list}
|
30
|
+
def list
|
31
|
+
Takeltau::ShipContainer.new.list
|
32
|
+
end
|
33
|
+
|
28
34
|
desc 'login', 'Alias for tau ship container login'
|
29
35
|
# ship login: {Takeltau::ShipContainer#login}
|
30
36
|
def login
|
@@ -8,7 +8,7 @@ module ShipContainerCheckExisting
|
|
8
8
|
ship_hostname = _ship_container_lib_ship_hostname
|
9
9
|
log.debug "Checking if takelship \"#{ship_hostname}\" is existing"
|
10
10
|
|
11
|
-
return false unless docker_check_daemon
|
11
|
+
return false unless docker_check_daemon 'cmd_ship_docker'
|
12
12
|
|
13
13
|
stdout_str = run _ship_container_cmd_check_existing ship_hostname
|
14
14
|
|
@@ -27,7 +27,7 @@ module ShipContainerCheckExisting
|
|
27
27
|
def _ship_container_cmd_check_existing(ship_hostname)
|
28
28
|
format(
|
29
29
|
config.active['cmd_ship_container_check_existing_docker_ps'],
|
30
|
-
|
30
|
+
ship_docker: config.active['cmd_ship_docker'],
|
31
31
|
ship_name: ship_hostname
|
32
32
|
)
|
33
33
|
end
|
@@ -7,9 +7,11 @@ module Takeltau
|
|
7
7
|
include SystemModule
|
8
8
|
include ConfigModule
|
9
9
|
include DockerCheckDaemon
|
10
|
+
include DockerContainerLib
|
10
11
|
include ShipInfoLib
|
11
12
|
include ShipContainerCheckExisting
|
12
13
|
include ShipContainerLib
|
14
|
+
include ShipContainerList
|
13
15
|
include ShipContainerLogin
|
14
16
|
include ShipContainerPodman
|
15
17
|
include ShipContainerUpdate
|
@@ -17,14 +19,26 @@ module Takeltau
|
|
17
19
|
desc 'check [COMMAND]', 'Check takelship container'
|
18
20
|
subcommand 'check', ShipContainerCheck
|
19
21
|
|
22
|
+
#
|
23
|
+
# ship container list
|
24
|
+
#
|
25
|
+
desc 'list', 'list command'
|
26
|
+
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
27
|
+
Run list command
|
28
|
+
LONGDESC
|
29
|
+
# Run list command.
|
30
|
+
def list
|
31
|
+
say ship_container_list
|
32
|
+
end
|
33
|
+
|
20
34
|
#
|
21
35
|
# ship container login
|
22
36
|
#
|
23
|
-
desc 'login', '
|
37
|
+
desc 'login', 'Log in to a takelship'
|
24
38
|
long_desc <<-LONGDESC.gsub("\n", "\x5")
|
25
|
-
|
39
|
+
Log in to a takelship
|
26
40
|
LONGDESC
|
27
|
-
#
|
41
|
+
# Log in to a takelship.
|
28
42
|
def login
|
29
43
|
ship_container_login
|
30
44
|
end
|
@@ -6,11 +6,11 @@ module ShipContainerLib
|
|
6
6
|
|
7
7
|
# Run nonprivileged docker command
|
8
8
|
def _ship_container_lib_docker_nonprivileged(command)
|
9
|
-
return false unless docker_check_daemon
|
9
|
+
return false unless docker_check_daemon 'cmd_ship_docker'
|
10
10
|
|
11
11
|
cmd_docker_run_command = format(
|
12
12
|
config.active['cmd_ship_project_start_docker_run_nonprivileged'],
|
13
|
-
|
13
|
+
ship_docker: config.active['cmd_ship_docker'],
|
14
14
|
image: _ship_container_lib_image,
|
15
15
|
command: command
|
16
16
|
)
|
@@ -21,7 +21,7 @@ module ShipContainerLib
|
|
21
21
|
# rubocop:disable Metrics/AbcSize
|
22
22
|
# rubocop:disable Metrics/MethodLength
|
23
23
|
def _ship_container_lib_docker_privileged(ports, command)
|
24
|
-
return false unless docker_check_daemon
|
24
|
+
return false unless docker_check_daemon 'cmd_ship_docker'
|
25
25
|
|
26
26
|
ship_data_dir = config.active['ship_data_dir']
|
27
27
|
ship_env = config.active['ship_env']
|
@@ -29,7 +29,7 @@ module ShipContainerLib
|
|
29
29
|
ports = config.active['ports'] unless config.active['ship_ports'].empty?
|
30
30
|
cmd_docker_run_command = format(
|
31
31
|
config.active['cmd_ship_project_start_docker_run_privileged'],
|
32
|
-
|
32
|
+
ship_docker: config.active['cmd_ship_docker'],
|
33
33
|
ship_hostname: _ship_container_lib_ship_hostname,
|
34
34
|
ship_env: ship_env,
|
35
35
|
ports: ports,
|
@@ -39,16 +39,17 @@ module ShipContainerLib
|
|
39
39
|
)
|
40
40
|
run cmd_docker_run_command
|
41
41
|
end
|
42
|
+
|
42
43
|
# rubocop:enable Metrics/MethodLength
|
43
44
|
# rubocop:enable Metrics/AbcSize
|
44
45
|
|
45
46
|
# Run a docker command in a takelship container
|
46
47
|
def _ship_container_lib_docker(command, tty = '--tty')
|
47
|
-
return false unless docker_check_daemon
|
48
|
+
return false unless docker_check_daemon 'cmd_ship_docker'
|
48
49
|
|
49
50
|
cmd_docker_run_command = format(
|
50
51
|
config.active['cmd_ship_container_docker'],
|
51
|
-
|
52
|
+
ship_docker: config.active['cmd_ship_docker'],
|
52
53
|
ship_hostname: _ship_container_lib_ship_hostname,
|
53
54
|
tty: tty,
|
54
55
|
command: command
|
@@ -58,13 +59,13 @@ module ShipContainerLib
|
|
58
59
|
|
59
60
|
# Run takelship docker stop command
|
60
61
|
def _ship_container_lib_docker_stop
|
61
|
-
return false unless docker_check_daemon
|
62
|
+
return false unless docker_check_daemon 'cmd_ship_docker'
|
62
63
|
|
63
64
|
return false unless ship_container_check_existing
|
64
65
|
|
65
66
|
cmd_docker_stop_command = format(
|
66
67
|
config.active['cmd_ship_project_start_docker_stop'],
|
67
|
-
|
68
|
+
ship_docker: config.active['cmd_ship_docker'],
|
68
69
|
ship_hostname: _ship_container_lib_ship_hostname
|
69
70
|
)
|
70
71
|
run cmd_docker_stop_command
|
@@ -100,4 +101,36 @@ module ShipContainerLib
|
|
100
101
|
end
|
101
102
|
publish.join(' ')
|
102
103
|
end
|
104
|
+
|
105
|
+
# Get all takelship containers.
|
106
|
+
# @return [Array] list of takelship containers
|
107
|
+
def _ship_container_lib_get_containers
|
108
|
+
ship_name = config.active['ship_name']
|
109
|
+
log.debug "Getting all #{ship_name} containers"
|
110
|
+
|
111
|
+
cmd_docker_get = format(
|
112
|
+
config.active['cmd_docker_container_get_containers'],
|
113
|
+
docker: config.active['cmd_docker'],
|
114
|
+
docker_repo: ship_name
|
115
|
+
)
|
116
|
+
|
117
|
+
# convert stdout lines to array and return array
|
118
|
+
(run cmd_docker_get).split(/\n+/)
|
119
|
+
end
|
120
|
+
|
121
|
+
# Get the mounted takelship directory
|
122
|
+
def _ship_container_lib_get_mounted_dir
|
123
|
+
ship_hostname = _ship_container_lib_ship_hostname
|
124
|
+
log.debug 'Getting mounted directory from ' \
|
125
|
+
"takelship container \"#{ship_hostname}\""
|
126
|
+
|
127
|
+
cmd_get_mounted_dir = format(
|
128
|
+
config.active['cmd_docker_container_get_mounted_dir'],
|
129
|
+
ship_docker: config.active['cmd_ship_docker'],
|
130
|
+
docker: config.active['cmd_ship_docker'],
|
131
|
+
ship_hostname: ship_hostname
|
132
|
+
)
|
133
|
+
|
134
|
+
run cmd_get_mounted_dir
|
135
|
+
end
|
103
136
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# tau ship container list
|
4
|
+
module ShipContainerList
|
5
|
+
# List takelship containers.
|
6
|
+
def ship_container_list
|
7
|
+
log.debug 'List takelship containers'
|
8
|
+
|
9
|
+
return false unless docker_check_daemon 'cmd_ship_docker'
|
10
|
+
|
11
|
+
_ship_container_list_get_inventory.to_yaml
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
# Get the current inventory
|
17
|
+
def _ship_container_list_get_inventory
|
18
|
+
ship_name = config.active['ship_name']
|
19
|
+
inventory = _ship_container_list_new_inventory ship_name
|
20
|
+
_ship_container_lib_get_containers.each do |container|
|
21
|
+
name = _docker_container_lib_get_container_name_by_id container
|
22
|
+
dir = _ship_container_lib_get_mounted_dir.strip
|
23
|
+
inventory[ship_name]['hosts'] << { name => dir }
|
24
|
+
end
|
25
|
+
inventory
|
26
|
+
end
|
27
|
+
|
28
|
+
# Create a new inventory
|
29
|
+
def _ship_container_list_new_inventory(ship_name)
|
30
|
+
{
|
31
|
+
ship_name => {
|
32
|
+
'hosts' => []
|
33
|
+
}
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
data/lib/takeltau/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.43.
|
1
|
+
0.43.15
|
data/lib/takeltau.rb
CHANGED
@@ -88,6 +88,7 @@ require_relative 'takeltau/ship/container/lib'
|
|
88
88
|
require_relative 'takeltau/ship/container/check/existing'
|
89
89
|
require_relative 'takeltau/ship/container/check/cli'
|
90
90
|
require_relative 'takeltau/ship/info/lib'
|
91
|
+
require_relative 'takeltau/ship/container/list'
|
91
92
|
require_relative 'takeltau/ship/container/login'
|
92
93
|
require_relative 'takeltau/ship/container/podman'
|
93
94
|
require_relative 'takeltau/ship/container/update'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: takeltau
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.43.
|
4
|
+
version: 0.43.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takelwerk
|
@@ -290,6 +290,7 @@ files:
|
|
290
290
|
- lib/takeltau/ship/container/check/existing.rb
|
291
291
|
- lib/takeltau/ship/container/cli.rb
|
292
292
|
- lib/takeltau/ship/container/lib.rb
|
293
|
+
- lib/takeltau/ship/container/list.rb
|
293
294
|
- lib/takeltau/ship/container/login.rb
|
294
295
|
- lib/takeltau/ship/container/podman.rb
|
295
296
|
- lib/takeltau/ship/container/update.rb
|