takelage 0.31.0 → 0.32.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8e474304722d66fb300d61b9802a63887e813d4d6fa15894fc3ed8d7a325e798
4
- data.tar.gz: 4eb757cb8eb7b441b7d3f2f700b4891201bcba0caf46ec8acaa256cde3ca8add
3
+ metadata.gz: 6da2e24ce8c09334e2d3bc396e5ee529eab1564216719fc2f362edcb78b6a480
4
+ data.tar.gz: 5b1ca2322fa5277110e7ed54f9f9e2c2dc8618c1cdcefaadeabbbe744398f2e7
5
5
  SHA512:
6
- metadata.gz: f110bf58872049c6900262fa5eb28a7f58516845fc887917b605fe1eac90098f88073ba39a37e53bbed9e6cd5cdd88f1500afa8b6a5e5dbf4c9e09bc4b2b158c
7
- data.tar.gz: 0fc82eb52b09b927079b470673b9adde8f4a28d5b8e4126f7ab7ed21dac548999bb993ffcf2d31e55bab2a97978a02f28619f9c11acab807461c9a9956854186
6
+ metadata.gz: 986fc63051162a239d4e4ef310f1c0113fe48858d7dfda51b37fcdbb8bfadf7c43f80aa7a4c6804a1ced4cd689422a973b11636a2c676d35639eba13da74d511
7
+ data.tar.gz: 191305505829cd4da5ee1f8d2bc7e06cb54461a6970ec5af86910d2d0c05f6d66d56b11e107bad12fbfa95a50cc9a1049caf4fb6200b763c19e19be8d3bc7a61
data/README.md CHANGED
@@ -101,6 +101,7 @@ tau [info status gopass](features/cucumber/features/info/info.status.gopass.feat
101
101
  tau [info status gpg](features/cucumber/features/info/info.status.gpg.feature) | Check gpg status
102
102
  tau [info status mutagen](features/cucumber/features/info/info.status.mutagen.feature) | Check mutagen status
103
103
  tau [info status ssh](features/cucumber/features/info/info.status.ssh.feature) | Check ssh status
104
+ tau [init packer docker](features/cucumber/features/info/init.packer.docker.feature) | Initialize packer project for docker images
104
105
  tau [mutagen check daemon](features/cucumber/features/mutagen/mutagen.check.daemon.feature)) | Check if mutagen host conenction is available
105
106
  tau [mutagen socket check](features/cucumber/features/mutagen/mutagen.socket.check.feature) [SOCKET] | Check if mutagen [SOCKET] exists
106
107
  tau [mutagen socket create](features/cucumber/features/mutagen/mutagen.socket.create.feature) [NAME] [IN] [OUT] | Create a mutagen socket [NAME] from [IN] to [OUT] of the container
data/lib/takelage.rb CHANGED
@@ -44,6 +44,10 @@ require_relative 'takelage/bit/require/import'
44
44
  require_relative 'takelage/bit/require/cli'
45
45
  require_relative 'takelage/bit/cli'
46
46
  require_relative 'takelage/completion/cli'
47
+ require_relative 'takelage/init/packer/lib'
48
+ require_relative 'takelage/init/packer/docker'
49
+ require_relative 'takelage/init/packer/cli'
50
+ require_relative 'takelage/init/cli'
47
51
  require_relative 'takelage/mutagen/check/daemon'
48
52
  require_relative 'takelage/mutagen/socket/check'
49
53
  require_relative 'takelage/mutagen/socket/create'
@@ -147,6 +151,9 @@ module Takelage
147
151
  desc 'info [COMMAND] ', 'Get information'
148
152
  subcommand 'info', Info
149
153
 
154
+ desc 'init [COMMAND] ', 'Init projects'
155
+ subcommand 'init', Init
156
+
150
157
  desc 'mutagen [COMMAND] ', 'Manage mutagen'
151
158
  subcommand 'mutagen', Mutagen
152
159
 
@@ -4,7 +4,8 @@ bit_remote: ''
4
4
  bit_require_file: 'bitrequire.yml'
5
5
  bit_root: '/bit'
6
6
  bit_ssh: ''
7
- cmd_bit_check_workspace_bit_list: 'bit list'
7
+ cmd_bit: 'bit'
8
+ cmd_bit_check_workspace_bit_list: 'bit status'
8
9
  cmd_bit_check_workspace_pwd: 'pwd'
9
10
  cmd_bit_clipboard_lib_bit_status: 'bit status'
10
11
  cmd_bit_clipboard_copy_bit_list_scope: 'bit list --skip-update --json %{scope}'
@@ -46,6 +47,7 @@ cmd_docker_image_tag_check_docker_images: 'docker images --quiet %{image}'
46
47
  cmd_docker_image_tag_list_docker_images: 'docker images %{docker_user}\/%{docker_repo} --format "{{.Tag}}"'
47
48
  cmd_docker_image_update_docker_pull_latest: 'docker pull %{docker_user}/%{docker_repo}:latest'
48
49
  cmd_docker_image_update_docker_remove_dangling: 'docker image prune --force'
50
+ cmd_git: 'git'
49
51
  cmd_git_check_clean_git_unstaged: 'git diff --exit-code'
50
52
  cmd_git_check_clean_git_uncommitted: 'git diff --cached --exit-code'
51
53
  cmd_git_check_clean_git_status: 'git status --porcelain'
@@ -61,6 +63,10 @@ cmd_info_status_gpg_agent: 'gpg-connect-agent /bye'
61
63
  cmd_info_status_gpg_keys: 'gpg --list-keys'
62
64
  cmd_info_status_ssh_keys: 'ssh-add -l'
63
65
  cmd_info_status_ssh_socket: 'gpgconf --list-dirs agent-ssh-socket'
66
+ cmd_init_packer_lib_bit_init: 'bit init'
67
+ cmd_init_packer_lib_git_init: 'git init && git checkout -b main'
68
+ cmd_init_packer_lib_git_add_all: 'git add --all'
69
+ cmd_init_packer_lib_git_commit_initial: 'git commit -m "Initial commit"'
64
70
  cmd_mutagen: 'mutagen'
65
71
  cmd_mutagen_check_daemon_host_connection: 'mutagen forward list --label-selector="%{hostlabel}"'
66
72
  cmd_mutagen_check_daemon_version: 'mutagen version'
@@ -81,6 +87,7 @@ docker_user: 'takelage'
81
87
  git_bit_branch: 'main'
82
88
  info_project_main: 'project.yml'
83
89
  info_project_private: 'private/project.yml'
90
+ init_packer_docker_bit_require_import: 'true'
84
91
  login_wait_for_sockets: '0'
85
92
  mutagen_socket_path_mutagen: '~/.mutagen/daemon/daemon.sock'
86
93
  mutagen_socket_path_gpg: '~/.gnupg/S.gpg-agent'
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takelage
4
+ # takelage init
5
+ class Init < SubCommandBase
6
+ desc 'packer [COMMAND]', 'Init packer project'
7
+ subcommand 'packer', InitPacker
8
+ end
9
+ end
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takelage
4
+ # takelage info project
5
+ class InitPacker < SubCommandBase
6
+ include Thor::Actions
7
+ include LoggingModule
8
+ include SystemModule
9
+ include ConfigModule
10
+ include ProjectModule
11
+ include GitCheckClean
12
+ include GitCheckBit
13
+ include GitCheckWorkspace
14
+ include BitCheckWorkspace
15
+ include BitClipboardLib
16
+ include BitClipboardCopy
17
+ include BitClipboardPaste
18
+ include BitRequireLib
19
+ include BitRequireImport
20
+ include InitPackerLib
21
+ include InitPackerDocker
22
+
23
+ argument :name
24
+
25
+ # Initialize bit require
26
+ # rubocop:disable Metrics/MethodLength
27
+ def initialize(args = [], local_options = {}, configuration = {})
28
+ # initialize thor parent class
29
+ super args, local_options, configuration
30
+
31
+ @bit_require_file = config.active['bit_require_file']
32
+
33
+ @ansiblelint = {
34
+ name: 'ansible/.ansible-lint',
35
+ template: 'templates/ansiblelint.tt'
36
+ }
37
+ @bitrequireyml = {
38
+ name: 'bitrequire.yml',
39
+ template: 'templates/bitrequireyml.tt'
40
+ }
41
+ @gitignore = {
42
+ name: '.gitignore',
43
+ template: 'templates/gitignore.tt'
44
+ }
45
+ @groupvarsprojectyml = {
46
+ name: 'ansible/group_vars/project.yml',
47
+ template: 'templates/groupvarsprojectyml.tt'
48
+ }
49
+ @playbooksiteyml = {
50
+ name: 'ansible/playbook-site.yml',
51
+ template: 'templates/playbooksiteyml.tt'
52
+ }
53
+ @projectyml = {
54
+ name: 'project.yml',
55
+ template: 'templates/projectyml.tt'
56
+ }
57
+ @rakefile = {
58
+ name: 'Rakefile',
59
+ template: 'templates/Rakefile.tt'
60
+ }
61
+ end
62
+ # rubocop:enable Metrics/MethodLength
63
+
64
+ # Provide template path for Thor:Actions
65
+ def self.source_root
66
+ File.dirname(__FILE__)
67
+ end
68
+
69
+ #
70
+ # init packer docker
71
+ #
72
+ desc 'docker [NAME]', 'Initialize packer project [NAME] for docker images'
73
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
74
+ Initialize packer project [NAME] for docker images
75
+ LONGDESC
76
+ # Initialize packer project [NAME] for docker images.
77
+ def docker
78
+ exit init_packer_docker
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage init packer docker
4
+ module InitPackerDocker
5
+ def init_packer_docker
6
+ log.debug 'Initialize packer project for docker images'
7
+
8
+ files = _init_packer_docker_files_get
9
+
10
+ return false unless _init_packer_docker_lib_check_prerequisites files
11
+
12
+ exit_code = _init_packer_docker_lib_create_project files
13
+
14
+ # reinitialize config with newly created files
15
+ initialize_config
16
+
17
+ return false unless _init_packer_docker_bit_require_import
18
+
19
+ return false unless exit_code
20
+
21
+ true
22
+ end
23
+
24
+ private
25
+
26
+ def _init_packer_docker_files_get
27
+ [
28
+ @ansiblelint,
29
+ @bitrequireyml,
30
+ @gitignore,
31
+ @groupvarsprojectyml,
32
+ @playbooksiteyml,
33
+ @projectyml,
34
+ @rakefile
35
+ ]
36
+ end
37
+
38
+ def _init_packer_docker_bit_require_import
39
+ if config.active['init_packer_docker_bit_require_import'] == 'true'
40
+ log.info 'Importing bit components'
41
+ return false unless bit_require_import
42
+ end
43
+
44
+ true
45
+ end
46
+ end
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ # takelage info status lib
4
+ module InitPackerLib
5
+ private
6
+
7
+ def _init_packer_docker_lib_check_prerequisites(files)
8
+ return false unless _init_packer_lib_git_check
9
+
10
+ return false unless _init_packer_lib_bit_check
11
+
12
+ return false unless _init_packer_lib_files_check files
13
+
14
+ true
15
+ end
16
+
17
+ def _init_packer_docker_lib_create_project(files)
18
+ exit_code = true
19
+
20
+ exit_code &&= _init_packer_lib_git_init
21
+ exit_code &&= _init_packer_lib_bit_init
22
+ exit_code &&= _init_packer_lib_files_create files
23
+ exit_code &&= _init_packer_lib_git_add_all
24
+ exit_code &&= _init_packer_lib_git_commit_initial
25
+
26
+ exit_code
27
+ end
28
+
29
+ def _init_packer_lib_bit_check
30
+ return false unless command_available_else_error? config.active['cmd_bit']
31
+ return true unless bit_check_workspace
32
+
33
+ log.error 'bit is already initialized!'
34
+ false
35
+ end
36
+
37
+ def _init_packer_lib_bit_init
38
+ log.info 'Initializing bit workspace'
39
+ return false unless try config.active['cmd_init_packer_lib_bit_init']
40
+
41
+ true
42
+ end
43
+
44
+ def _init_packer_lib_git_check
45
+ return false unless command_available_else_error? config.active['cmd_git']
46
+ return true unless git_check_workspace
47
+
48
+ log.error 'git is already initialized!'
49
+ false
50
+ end
51
+
52
+ def _init_packer_lib_git_init
53
+ log.info 'Initializing git workspace'
54
+ return false unless try config.active['cmd_init_packer_lib_git_init']
55
+
56
+ true
57
+ end
58
+
59
+ def _init_packer_lib_files_check(files)
60
+ exit_status = true
61
+ files.each do |file|
62
+ if _file_exists? file[:name]
63
+ log.error "File exists: #{file[:name]}"
64
+ exit_status = false
65
+ end
66
+ end
67
+ exit_status
68
+ end
69
+
70
+ def _init_packer_lib_files_create(files)
71
+ files.each do |file|
72
+ template file[:template], file[:name]
73
+ end
74
+ true
75
+ end
76
+
77
+ # git add --all.
78
+ def _init_packer_lib_git_add_all
79
+ log.info 'Preparing initial git commit'
80
+ return false unless try config.active['cmd_init_packer_lib_git_add_all']
81
+
82
+ true
83
+ end
84
+
85
+ # git commit -m "Initial commit".
86
+ def _init_packer_lib_git_commit_initial
87
+ log.info 'Saving initial git commit'
88
+ return false unless try config.active['cmd_init_packer_lib_git_commit_initial']
89
+
90
+ true
91
+ end
92
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ load 'rake/meta/Rakefile'
@@ -0,0 +1,3 @@
1
+ ---
2
+ skip_list:
3
+ - role-name
@@ -0,0 +1,13 @@
1
+ ---
2
+ scopes:
3
+ takelage.ansible:
4
+ - name: ansible/molecule/default
5
+ - name: ansible/molecule/image
6
+ - name: ansible/roles/takel-cleanup
7
+ takelage.packer:
8
+ - name: packer/templates/takelage/docker
9
+ takelage.rake:
10
+ - name: rake/ansible
11
+ - name: rake/images
12
+ - name: rake/meta
13
+ - name: rake/rubylint
@@ -0,0 +1,16 @@
1
+ .DS_Store
2
+ .idea
3
+ *.iml
4
+ *.iso
5
+ packer/images
6
+ packer/packer_cache
7
+ __pycache__/
8
+ *.pyc
9
+ .pytest_cache
10
+ pytestdebug.log
11
+ *.retry
12
+ takelage.log
13
+ takelage.yml
14
+ .vagrant
15
+ vault-password-file
16
+ *.vdi
@@ -0,0 +1,2 @@
1
+ ---
2
+ project: "{{ lookup('pipe', 'tau project') | from_yaml }}"
@@ -0,0 +1,6 @@
1
+ ---
2
+ - name: (playbook-site) create project
3
+ hosts: all
4
+ gather_facts: false
5
+ roles:
6
+ - takel-cleanup
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: <%= name %>
3
+ version: 0.1.0
4
+
5
+ pipelines:
6
+ - prod
7
+
8
+ images:
9
+ project:
10
+ base_user: takelage
11
+ base_repo: takelslim
12
+ base_tag: latest
13
+ layers:
14
+ - site
15
+ omit_pipeline_name: prod
16
+ target_user: takelage
17
+ target_repo: init
18
+
19
+ local_user: packer_local
@@ -68,7 +68,7 @@ module ConfigModule
68
68
  if config_key == 'project_root_dir'
69
69
  log.error 'Please create a "Rakefile" in the project root directory'
70
70
  else
71
- log.error "Unset config key. Please configure \"#{config_key}\""
71
+ log.error "Missing config key. Please configure \"#{config_key}\""
72
72
  end
73
73
  @configured = false
74
74
  false
data/lib/takelage/version CHANGED
@@ -1 +1 @@
1
- 0.31.0
1
+ 0.32.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: takelage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.31.0
4
+ version: 0.32.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geospin
@@ -259,6 +259,17 @@ files:
259
259
  - lib/takelage/info/status/gpg.rb
260
260
  - lib/takelage/info/status/lib.rb
261
261
  - lib/takelage/info/status/ssh.rb
262
+ - lib/takelage/init/cli.rb
263
+ - lib/takelage/init/packer/cli.rb
264
+ - lib/takelage/init/packer/docker.rb
265
+ - lib/takelage/init/packer/lib.rb
266
+ - lib/takelage/init/packer/templates/Rakefile.tt
267
+ - lib/takelage/init/packer/templates/ansiblelint.tt
268
+ - lib/takelage/init/packer/templates/bitrequireyml.tt
269
+ - lib/takelage/init/packer/templates/gitignore.tt
270
+ - lib/takelage/init/packer/templates/groupvarsprojectyml.tt
271
+ - lib/takelage/init/packer/templates/playbooksiteyml.tt
272
+ - lib/takelage/init/packer/templates/projectyml.tt
262
273
  - lib/takelage/lib/config.rb
263
274
  - lib/takelage/lib/logging.rb
264
275
  - lib/takelage/lib/project.rb