takelage 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/lib/takelage/default.yml +19 -5
- data/lib/takelage/docker/container/check/module.rb +6 -10
- data/lib/takelage/docker/container/cli.rb +2 -2
- data/lib/takelage/docker/container/module.rb +53 -55
- data/lib/takelage/docker/image/cli.rb +1 -1
- data/lib/takelage/docker/image/module.rb +9 -3
- data/lib/takelage/docker/image/tag/check/cli.rb +1 -1
- data/lib/takelage/docker/image/tag/check/module.rb +8 -6
- data/lib/takelage/docker/image/tag/latest/cli.rb +1 -1
- data/lib/takelage/docker/image/tag/list/cli.rb +1 -1
- data/lib/takelage/docker/image/tag/list/module.rb +6 -4
- data/lib/takelage/lib/system.rb +1 -1
- data/lib/takelage/version +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d4e9f1786e7e4c7d21e9cada3ed8f29b332aba1e9a4c9d6ad9883aad14aa643
|
4
|
+
data.tar.gz: 73028ac09504b53a127cc8c02d9b7d912e1e24962513955f08fe401f2ab2931f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff27f4263162d199b3aa7f9f54ee01b8eb537e3dc6f9a260689fa499f9fdc6e700483657d5d2b72198d431a3ca454c8a4cbc07e256c354bc538fe7bb5395bf86
|
7
|
+
data.tar.gz: 49dd92f06b1ad60f87f1af59ac96b6ad3fbc17005de3eaf29c748e396fd88d2232a1db4e0b7bd2e3400e6fb6fae8acba82c49b15ae15aa450a0c823f8840f386
|
data/README.md
CHANGED
@@ -16,6 +16,7 @@ The takelage devops framework consists of these projects:
|
|
16
16
|
|
17
17
|
| App | Description |
|
18
18
|
| --- | ----------- |
|
19
|
+
| *[takelage-doc](https://github.com/geospin-takelage/takelage-doc)* | takelage documentation |
|
19
20
|
| *[takelage-dev](https://github.com/geospin-takelage/takelage-dev)* | takelage development environment |
|
20
21
|
| *[takelage-var](https://github.com/geospin-takelage/takelage-var)* | takelage test plugin |
|
21
22
|
| *[takelage-cli](https://github.com/geospin-takelage/takelage-cli)* | takelage command line interface |
|
@@ -30,7 +31,7 @@ through the [gem](https://github.com/rubygems/rubygems)
|
|
30
31
|
command line tool:
|
31
32
|
|
32
33
|
```bash
|
33
|
-
gem install takelage
|
34
|
+
gem install takelage
|
34
35
|
```
|
35
36
|
|
36
37
|
## Commands
|
@@ -140,7 +141,7 @@ to overwrite defaults like:
|
|
140
141
|
|
141
142
|
```yaml
|
142
143
|
---
|
143
|
-
|
144
|
+
docker_repo: takelage-mock
|
144
145
|
```
|
145
146
|
|
146
147
|
### Project Files
|
data/lib/takelage/default.yml
CHANGED
@@ -5,22 +5,34 @@ bit_dev: 'takelage'
|
|
5
5
|
bit_export_to_scope: 'bit export --skip-update %{scope}'
|
6
6
|
bit_export_all: 'bit export --skip-update --all'
|
7
7
|
bit_import_all: 'bit import --ignore-package-json --ignore-dist --skip-update'
|
8
|
-
bit_import_cid: 'bit import --ignore-package-json --ignore-dist -
|
8
|
+
bit_import_cid: 'bit import --ignore-package-json --ignore-dist --skip-update --path %{dir} %{cid}'
|
9
9
|
bit_list_remotes: 'bit remote --skip-update'
|
10
10
|
bit_list_scope: 'bit list --skip-update --json %{scope}'
|
11
11
|
bit_remote: ''
|
12
12
|
bit_repo: 'bit list'
|
13
13
|
bit_scope_root: '/bit'
|
14
14
|
bit_scope_list: 'find -L %{root} -name scope.json'
|
15
|
-
bit_scope_new: 'mkdir -p %{root}/%{scope} && cd %{root}/%{scope} && bit init
|
16
|
-
bit_scope_remove: 'rm
|
15
|
+
bit_scope_new: 'mkdir -p %{root}/%{scope} && cd %{root}/%{scope} && bit init --bare'
|
16
|
+
bit_scope_remove: 'rm --force --recursive %{root}/%{scope}'
|
17
17
|
bit_ssh: ''
|
18
18
|
bit_tag_id: 'bit tag --skip-update --skip-tests %{id}'
|
19
19
|
bit_tag_all: 'bit tag --skip-update --skip-tests --all'
|
20
|
+
docker_create: 'docker run --detach --env GEOSPIN_PROJECT_BASE_DIR=%{workdir} --env GOOGLE_APPLICATION_CREDENTIALS=/srv/google/default.json --env TAKELAGE_PROJECT_BASE_DIR=%{workdir} --env TZ=%{timezone} --hostname %{container} --name %{container} --network %{container} --privileged --rm --tty --volume %{dockersock}:/var/run/docker.sock --volume %{homedir}/.config/gcloud:/srv/gcloud --volume %{homedir}/.google:/srv/google --volume %{homedir}:/homedir --volume %{workdir}:/project %{volume_dev} --workdir /project %{image} %{entrypoint} --gid %{gid} --home %{homedir} --uid %{uid} --username %{username}'
|
21
|
+
docker_create_network: 'docker network create %{network}'
|
20
22
|
docker_debug: 'ansible/roles/takel-takelage/files/pyscripts'
|
21
|
-
|
22
|
-
|
23
|
+
docker_enter: 'docker exec --interactive --tty %{container} %{loginpoint} --username %{username}'
|
24
|
+
docker_existing: 'docker ps --filter name=^%{container}$ --quiet'
|
25
|
+
docker_get: 'docker ps --all --filter name=^%{docker_repo}_ --quiet'
|
26
|
+
docker_get_container_name_by_id: 'docker ps --filter id=%{container} --format "{{.Names}}"'
|
23
27
|
docker_repo: 'takelage'
|
28
|
+
docker_images: 'docker images --quiet %{image}'
|
29
|
+
docker_info: 'docker info'
|
30
|
+
docker_network: 'docker network ls --quiet --filter name=^%{network}$'
|
31
|
+
docker_orphaned: 'docker exec --interactive %{container} ps a'
|
32
|
+
docker_pull_latest: 'docker pull %{docker_user}/%{docker_repo}:%{tag_latest_remote}'
|
33
|
+
docker_remove_network: 'docker network rm %{network}'
|
34
|
+
docker_user: 'takelage'
|
35
|
+
docker_run_command: 'docker exec %{container} su %{username} -c "LANG=en_US.UTF-8 %{command}"'
|
24
36
|
docker_socket_agent_port: 20000
|
25
37
|
docker_socket_agent_ssh_port: 20001
|
26
38
|
docker_socket_agent_extra_port: 20002
|
@@ -29,7 +41,9 @@ docker_socket_ps: 'sudo ps a -o pid,command'
|
|
29
41
|
docker_socket_gpgconf: 'gpgconf --list-dirs'
|
30
42
|
docker_socket_kill: 'sudo kill -SIGTERM %{pid}'
|
31
43
|
docker_socket_start: 'sudo socat TCP-LISTEN:%{port},bind=%{host},reuseaddr,fork UNIX-CLIENT:%{path}'
|
44
|
+
docker_stop: 'docker stop %{container}'
|
32
45
|
docker_tag: 'latest'
|
46
|
+
docker_tags: 'docker images %{docker_user}\/%{docker_repo} --format "{{.Tag}}"'
|
33
47
|
docker_tagsurl: 'https://hub.docker.com/v2/repositories/takelage/takelage/tags'
|
34
48
|
git_branch: 'git symbolic-ref HEAD'
|
35
49
|
git_repo: 'git -C . rev-parse'
|
@@ -8,9 +8,8 @@ module DockerContainerCheckModule
|
|
8
8
|
|
9
9
|
return false unless docker_check_running
|
10
10
|
|
11
|
-
cmd_docker_existing =
|
12
|
-
|
13
|
-
'--quiet'
|
11
|
+
cmd_docker_existing =
|
12
|
+
config.active['docker_existing'] % {container: container}
|
14
13
|
|
15
14
|
stdout_str = run cmd_docker_existing
|
16
15
|
|
@@ -30,9 +29,8 @@ module DockerContainerCheckModule
|
|
30
29
|
|
31
30
|
return false unless docker_check_running
|
32
31
|
|
33
|
-
cmd_docker_network =
|
34
|
-
'
|
35
|
-
"--filter name=^#{network}$"
|
32
|
+
cmd_docker_network =
|
33
|
+
config.active['docker_network'] % {network: network}
|
36
34
|
|
37
35
|
stdout_str = run cmd_docker_network
|
38
36
|
|
@@ -52,10 +50,8 @@ module DockerContainerCheckModule
|
|
52
50
|
|
53
51
|
return false unless docker_check_running
|
54
52
|
|
55
|
-
cmd_docker_orphaned =
|
56
|
-
'
|
57
|
-
"#{container} " +
|
58
|
-
'ps a'
|
53
|
+
cmd_docker_orphaned =
|
54
|
+
config.active['docker_orphaned'] % {container: container}
|
59
55
|
|
60
56
|
stdout_str = run cmd_docker_orphaned
|
61
57
|
|
@@ -22,8 +22,8 @@ module Takelage
|
|
22
22
|
|
23
23
|
@docker_debug = config.active['docker_debug']
|
24
24
|
|
25
|
+
@docker_user = config.active['docker_user']
|
25
26
|
@docker_repo = config.active['docker_repo']
|
26
|
-
@docker_image = config.active['docker_image']
|
27
27
|
@docker_tag = config.active['docker_tag']
|
28
28
|
|
29
29
|
@dockersock = '/var/run/docker.sock'
|
@@ -34,7 +34,7 @@ module Takelage
|
|
34
34
|
|
35
35
|
@homedir = ENV['HOME'] ? ENV['HOME'] : '/tmp'
|
36
36
|
@workdir = Dir.getwd
|
37
|
-
@hostname = "#{@
|
37
|
+
@hostname = "#{@docker_repo}_#{File.basename(@workdir)}"
|
38
38
|
|
39
39
|
@timezone = 'Europe/Berlin'
|
40
40
|
|
@@ -7,7 +7,7 @@ module DockerContainerModule
|
|
7
7
|
|
8
8
|
return false unless docker_check_running
|
9
9
|
|
10
|
-
return false unless configured? %w(docker_repo
|
10
|
+
return false unless configured? %w(docker_user docker_repo docker_tag)
|
11
11
|
|
12
12
|
docker_socket_start
|
13
13
|
|
@@ -22,7 +22,7 @@ module DockerContainerModule
|
|
22
22
|
|
23
23
|
return false unless docker_check_running
|
24
24
|
|
25
|
-
return false unless configured? %w(docker_repo
|
25
|
+
return false unless configured? %w(docker_user docker_repo docker_tag)
|
26
26
|
|
27
27
|
_create_network @hostname unless docker_container_check_network @hostname
|
28
28
|
_create_container @hostname unless docker_container_check_existing @hostname
|
@@ -34,7 +34,7 @@ module DockerContainerModule
|
|
34
34
|
|
35
35
|
return false unless docker_check_running
|
36
36
|
|
37
|
-
return false unless configured? %w(docker_repo
|
37
|
+
return false unless configured? %w(docker_user docker_repo docker_tag)
|
38
38
|
|
39
39
|
docker_socket_start
|
40
40
|
|
@@ -49,7 +49,7 @@ module DockerContainerModule
|
|
49
49
|
|
50
50
|
return false unless docker_check_running
|
51
51
|
|
52
|
-
return false unless configured? %w(
|
52
|
+
return false unless configured? %w(docker_repo)
|
53
53
|
|
54
54
|
networks = []
|
55
55
|
|
@@ -70,7 +70,7 @@ module DockerContainerModule
|
|
70
70
|
|
71
71
|
return false unless docker_check_running
|
72
72
|
|
73
|
-
return false unless configured? %w(
|
73
|
+
return false unless configured? %w(docker_repo)
|
74
74
|
|
75
75
|
networks = []
|
76
76
|
|
@@ -97,7 +97,7 @@ module DockerContainerModule
|
|
97
97
|
tag = docker_image_tag_latest_local
|
98
98
|
end
|
99
99
|
|
100
|
-
image = "#{@
|
100
|
+
image = "#{@docker_user}/#{@docker_repo}:#{tag}"
|
101
101
|
|
102
102
|
log.debug "Using docker image \"#{image}\""
|
103
103
|
|
@@ -113,31 +113,20 @@ module DockerContainerModule
|
|
113
113
|
volume_dev = "--volume #{@workdir}/#{@docker_debug}:/debug "
|
114
114
|
end
|
115
115
|
|
116
|
-
cmd_docker_create =
|
117
|
-
'
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
"--volume #{@homedir}/.google:/srv/google " +
|
131
|
-
"--volume #{@homedir}:/homedir " +
|
132
|
-
"--volume #{@workdir}:/project " +
|
133
|
-
volume_dev +
|
134
|
-
'--workdir /project ' +
|
135
|
-
"#{image} " +
|
136
|
-
entrypoint +
|
137
|
-
"--gid #{@gid} " +
|
138
|
-
"--home #{@homedir} " +
|
139
|
-
"--uid #{@uid} " +
|
140
|
-
"--username #{@username}"
|
116
|
+
cmd_docker_create =
|
117
|
+
config.active['docker_create'] % {
|
118
|
+
workdir: @workdir,
|
119
|
+
timezone: @timezone,
|
120
|
+
container: container,
|
121
|
+
dockersock: @dockersock,
|
122
|
+
homedir: @homedir,
|
123
|
+
volume_dev: volume_dev,
|
124
|
+
image: image,
|
125
|
+
entrypoint: entrypoint,
|
126
|
+
gid: @gid,
|
127
|
+
uid: @uid,
|
128
|
+
username: @username
|
129
|
+
}
|
141
130
|
|
142
131
|
run cmd_docker_create
|
143
132
|
end
|
@@ -146,8 +135,10 @@ module DockerContainerModule
|
|
146
135
|
def _create_network(network)
|
147
136
|
log.debug "Create network \"#{network}\""
|
148
137
|
|
149
|
-
cmd_create_network =
|
150
|
-
|
138
|
+
cmd_create_network =
|
139
|
+
config.active['docker_create_network'] % {
|
140
|
+
network: network
|
141
|
+
}
|
151
142
|
|
152
143
|
run cmd_create_network
|
153
144
|
end
|
@@ -161,12 +152,12 @@ module DockerContainerModule
|
|
161
152
|
loginpoint = '/loginpoint.py --debug '
|
162
153
|
end
|
163
154
|
|
164
|
-
cmd_docker_enter =
|
165
|
-
'
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
155
|
+
cmd_docker_enter =
|
156
|
+
config.active['docker_enter'] % {
|
157
|
+
container: container,
|
158
|
+
loginpoint: loginpoint,
|
159
|
+
username: @username
|
160
|
+
}
|
170
161
|
|
171
162
|
run_and_exit cmd_docker_enter
|
172
163
|
end
|
@@ -175,9 +166,10 @@ module DockerContainerModule
|
|
175
166
|
def _get_container_name_by_id container
|
176
167
|
log.debug "Getting name of container \"#{container}\""
|
177
168
|
|
178
|
-
cmd_get_container_name_by_id =
|
179
|
-
|
180
|
-
|
169
|
+
cmd_get_container_name_by_id =
|
170
|
+
config.active['docker_get_container_name_by_id'] % {
|
171
|
+
container: container
|
172
|
+
}
|
181
173
|
|
182
174
|
stdout_str = run cmd_get_container_name_by_id
|
183
175
|
|
@@ -191,12 +183,12 @@ module DockerContainerModule
|
|
191
183
|
# Get all docker containers.
|
192
184
|
# @return [Array] list of docker containers
|
193
185
|
def _get_containers
|
194
|
-
log.debug "Getting all containers of image \"#{@
|
186
|
+
log.debug "Getting all containers of image \"#{@docker_repo}\""
|
195
187
|
|
196
|
-
cmd_docker_get =
|
197
|
-
'
|
198
|
-
|
199
|
-
|
188
|
+
cmd_docker_get =
|
189
|
+
config.active['docker_get'] % {
|
190
|
+
docker_repo: @docker_repo
|
191
|
+
}
|
200
192
|
|
201
193
|
stdout_str = run cmd_docker_get
|
202
194
|
|
@@ -208,8 +200,10 @@ module DockerContainerModule
|
|
208
200
|
def _remove_network network
|
209
201
|
log.debug "Remove network \"#{network}\""
|
210
202
|
|
211
|
-
cmd_remove_network =
|
212
|
-
|
203
|
+
cmd_remove_network =
|
204
|
+
config.active['docker_remove_network'] % {
|
205
|
+
network: network
|
206
|
+
}
|
213
207
|
|
214
208
|
run cmd_remove_network
|
215
209
|
end
|
@@ -218,10 +212,12 @@ module DockerContainerModule
|
|
218
212
|
def _run_command_in_container(container, command)
|
219
213
|
log.debug "Running command \"#{command}\" in container \"#{container}\""
|
220
214
|
|
221
|
-
cmd_docker_run_command =
|
222
|
-
|
223
|
-
|
224
|
-
|
215
|
+
cmd_docker_run_command =
|
216
|
+
config.active['docker_run_command'] % {
|
217
|
+
container: container,
|
218
|
+
username: @username,
|
219
|
+
command: command
|
220
|
+
}
|
225
221
|
|
226
222
|
run_and_exit cmd_docker_run_command
|
227
223
|
end
|
@@ -230,8 +226,10 @@ module DockerContainerModule
|
|
230
226
|
def _stop_container(container)
|
231
227
|
log.debug "Stopping container \"#{container}\""
|
232
228
|
|
233
|
-
cmd_docker_stop =
|
234
|
-
|
229
|
+
cmd_docker_stop =
|
230
|
+
config.active['docker_stop'] % {
|
231
|
+
container: container
|
232
|
+
}
|
235
233
|
|
236
234
|
run cmd_docker_stop
|
237
235
|
end
|
@@ -17,8 +17,8 @@ module Takelage
|
|
17
17
|
# initialize thor parent class
|
18
18
|
super args, local_options, configuration
|
19
19
|
|
20
|
+
@docker_user = config.active['docker_user']
|
20
21
|
@docker_repo = config.active['docker_repo']
|
21
|
-
@docker_image = config.active['docker_image']
|
22
22
|
@docker_tagsurl = config.active['docker_tagsurl']
|
23
23
|
end
|
24
24
|
|
@@ -5,7 +5,7 @@ module DockerImageModule
|
|
5
5
|
def docker_image_update
|
6
6
|
return false unless docker_check_running
|
7
7
|
|
8
|
-
return false unless configured? %w(docker_repo
|
8
|
+
return false unless configured? %w(docker_user docker_repo docker_tagsurl)
|
9
9
|
|
10
10
|
tag_latest_remote = docker_image_tag_latest_remote
|
11
11
|
|
@@ -23,9 +23,15 @@ module DockerImageModule
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
log.info "Updating to docker image \"#{@
|
26
|
+
log.info "Updating to docker image \"#{@docker_user}/#{@docker_repo}:#{tag_latest_remote}\""
|
27
|
+
|
28
|
+
cmd_docker_pull_latest =
|
29
|
+
config.active['docker_pull_latest'] % {
|
30
|
+
docker_user: @docker_user,
|
31
|
+
docker_repo: @docker_repo,
|
32
|
+
tag_latest_remote: tag_latest_remote
|
33
|
+
}
|
27
34
|
|
28
|
-
cmd_docker_pull_latest = "docker pull #{@docker_repo}/#{@docker_image}:#{tag_latest_remote}"
|
29
35
|
run_and_exit cmd_docker_pull_latest
|
30
36
|
end
|
31
37
|
end
|
@@ -16,8 +16,8 @@ module Takelage
|
|
16
16
|
# initialize thor parent class
|
17
17
|
super args, local_options, configuration
|
18
18
|
|
19
|
+
@docker_user = config.active['docker_user']
|
19
20
|
@docker_repo = config.active['docker_repo']
|
20
|
-
@docker_image = config.active['docker_image']
|
21
21
|
@docker_tagsurl = config.active['docker_tagsurl']
|
22
22
|
end
|
23
23
|
|
@@ -8,17 +8,19 @@ module DockerImageTagCheckModule
|
|
8
8
|
|
9
9
|
return false unless docker_check_running
|
10
10
|
|
11
|
-
return false unless configured? %w(docker_repo
|
11
|
+
return false unless configured? %w(docker_user docker_repo)
|
12
12
|
|
13
13
|
if tag.to_s.strip.empty?
|
14
14
|
log.warn "No local docker image tag specified"
|
15
15
|
return false
|
16
16
|
end
|
17
17
|
|
18
|
-
image = "#{@
|
18
|
+
image = "#{@docker_user}/#{@docker_repo}:#{tag}"
|
19
19
|
|
20
|
-
cmd_docker_images =
|
21
|
-
|
20
|
+
cmd_docker_images =
|
21
|
+
config.active['docker_images'] % {
|
22
|
+
image: image
|
23
|
+
}
|
22
24
|
|
23
25
|
stdout_str = run cmd_docker_images
|
24
26
|
|
@@ -38,14 +40,14 @@ module DockerImageTagCheckModule
|
|
38
40
|
|
39
41
|
return false unless docker_check_running
|
40
42
|
|
41
|
-
return false unless configured? %w(docker_repo
|
43
|
+
return false unless configured? %w(docker_user docker_repo docker_tagsurl)
|
42
44
|
|
43
45
|
if tag .to_s.strip.empty?
|
44
46
|
log.warn "No remote docker image tag specified"
|
45
47
|
return false
|
46
48
|
end
|
47
49
|
|
48
|
-
image = "#{@
|
50
|
+
image = "#{@docker_user}/#{@docker_repo}:#{tag}"
|
49
51
|
|
50
52
|
tags = docker_image_tag_list_remote
|
51
53
|
|
@@ -16,8 +16,8 @@ module Takelage
|
|
16
16
|
# initialize thor parent class
|
17
17
|
super args, local_options, configuration
|
18
18
|
|
19
|
+
@docker_user = config.active['docker_user']
|
19
20
|
@docker_repo = config.active['docker_repo']
|
20
|
-
@docker_image = config.active['docker_image']
|
21
21
|
@docker_tagsurl = config.active['docker_tagsurl']
|
22
22
|
end
|
23
23
|
|
@@ -15,8 +15,8 @@ module Takelage
|
|
15
15
|
# initialize thor parent class
|
16
16
|
super args, local_options, configuration
|
17
17
|
|
18
|
+
@docker_user = config.active['docker_user']
|
18
19
|
@docker_repo = config.active['docker_repo']
|
19
|
-
@docker_image = config.active['docker_image']
|
20
20
|
@docker_tagsurl = config.active['docker_tagsurl']
|
21
21
|
end
|
22
22
|
|
@@ -6,11 +6,13 @@ module DockerImageTagListModule
|
|
6
6
|
def docker_image_tag_list_local
|
7
7
|
tags = []
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
cmd_docker_tags =
|
10
|
+
config.active['docker_tags'] % {
|
11
|
+
docker_user: @docker_user,
|
12
|
+
docker_repo: @docker_repo
|
13
|
+
}
|
12
14
|
|
13
|
-
stdout_str = run
|
15
|
+
stdout_str = run cmd_docker_tags
|
14
16
|
|
15
17
|
tags = stdout_str.split("\n")
|
16
18
|
|
data/lib/takelage/lib/system.rb
CHANGED
data/lib/takelage/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.1
|