danarchy_deploy 0.2.11 → 0.2.12

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e323bccc146729696cefbbe7783e779ccfee0c3e2f58c73149c64862dd1f1c95
4
- data.tar.gz: 45602e1b2852556ab4cb48324af4b8bb25e580aca57646a006df08f20841d495
3
+ metadata.gz: d983a99ae7625895008802d7aefb21d055f45e3b70dfd365ca2881d2349a29d6
4
+ data.tar.gz: 55d5b7477a5d2b43bcffe6d86d11977add6739e49336cd963fde8141b374f13a
5
5
  SHA512:
6
- metadata.gz: 76aca576a0734fbed266ea5c14070276019c73aa3e4d9671fde21eacd1362cd23cae7faa17df62132d3cdccf0b61f25994163b35b97e88978e79cd7c0003cb20
7
- data.tar.gz: 43a9f174a9e1048546c17a6a8b88dbc6940d419fa087a1e3acb3d1aaf88c98fb3b1d2e6eb2bf60037ce070825fb7581fc1d907169cf1d2ce14e3dc0bb7bb64fa
6
+ metadata.gz: 4b42720a0e7433080ff22b9104bde15f347ba6fea32e405a37dc122c46527c27a0e022da4242ff4f44d3e810c82834aa745eb0df9673c4642901da7c726a5e4b
7
+ data.tar.gz: 8f0aab58a7132063b3383f9a4a7b310f2dc5fb026f15f0b7850325864098bac55900c1c6e0aacd8e628e620efcc593fdb4e3b26f25ad1741803f38bca41507eb
data/.asdf_versions.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "ruby": [
3
- "latest:3.2.2"
3
+ "latest:3.2.4"
4
4
  ]
5
5
  }
data/.tool-versions CHANGED
@@ -1 +1 @@
1
- ruby 3.2.2
1
+ ruby 3.2.4
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ patch_0.2.12
2
+ - Rename bin/console
3
+ - Change emerge --sync cron to /etc/cron.daily/
4
+ - Init::OpenRC: cleanup service in wrong runlevels
5
+ - add skip_install option
6
+
1
7
  patch_0.2.11
2
8
  - gentoo: fix portage cron permissions
3
9
  - restructure bin/exe dirs, update gemspec
data/exe/danarchy_deploy CHANGED
@@ -4,13 +4,16 @@ require 'danarchy_couchdb'
4
4
  require 'optparse'
5
5
 
6
6
  deployment = nil
7
- options = { couchdb: "#{ENV['HOME']}/.danarchy/danarchy_deploy/danarchy_couchdb.json",
8
- deploy_dir: '/danarchy/deploy',
9
- deploy_file: nil,
10
- first_run: false,
11
- pretend: false,
12
- ssh_verbose: false,
13
- vars_verbose: false }
7
+ options = {
8
+ couchdb: "#{ENV['HOME']}/.danarchy/danarchy_deploy/danarchy_couchdb.json",
9
+ deploy_dir: '/danarchy/deploy',
10
+ deploy_file: nil,
11
+ first_run: false,
12
+ pretend: false,
13
+ ssh_verbose: false,
14
+ vars_verbose: false,
15
+ skip_install: false
16
+ }
14
17
 
15
18
  ARGV.push('--help') if ARGV.empty?
16
19
  optparse = OptionParser.new do |opts|
@@ -53,6 +56,10 @@ optparse = OptionParser.new do |opts|
53
56
  options[:vars_verbose] = true
54
57
  end
55
58
 
59
+ opts.on('--skip-install', "Skip package installation and updates.") do |val|
60
+ options[:skip_install] = true
61
+ end
62
+
56
63
  opts.on('--version', "Print #{$PROGRAM_NAME} version.") do |val|
57
64
  puts "DanarchyDeploy: #{DanarchyDeploy::VERSION}"
58
65
  exit 1
@@ -101,7 +108,7 @@ elsif location == 'local'
101
108
  puts ' ! Ctrl-c out if this is not what you want to do!'
102
109
  10.downto(0) do |i|
103
110
  trap('SIGINT') { abort("\nExiting!") }
104
- print "\rDeploying in #{i} seconds"
111
+ print "\rDeploying in #{i} seconds. "
105
112
  sleep(1)
106
113
  end
107
114
 
@@ -3,10 +3,11 @@ module DanarchyDeploy
3
3
  module Services
4
4
  class Init
5
5
  class Openrc
6
- def initialize(service, runlevel, options)
6
+ def initialize(service, runlevel='default', options)
7
7
  @service = service
8
8
  @runlevel = runlevel
9
9
  @options = options
10
+ cleanup_runlevels
10
11
  end
11
12
 
12
13
  def status
@@ -64,10 +65,19 @@ module DanarchyDeploy
64
65
  end
65
66
 
66
67
  def disable
67
- Dir["/etc/runlevels/*/#{@service}"].each do |svc|
68
- runlevel, service = svc.split('/')[3,4]
69
- cmd = "rc-update del #{service} #{runlevel}"
70
- DanarchyDeploy::Helpers.run_command(cmd, @options)
68
+ cmd = "rc-update del #{@service} #{runlevel}"
69
+ DanarchyDeploy::Helpers.run_command(cmd, @options)
70
+ end
71
+
72
+ private
73
+ def cleanup_runlevels
74
+ Dir["/etc/runlevels/*/#{@service}"].each do |dir|
75
+ runlevel = File.basename(File.dirname(dir))
76
+ if runlevel != @runlevel
77
+ puts " |> Removing #{@service} from wrong runlevel: #{runlevel}"
78
+ cmd = "rc-update del #{@service} #{runlevel}"
79
+ DanarchyDeploy::Helpers.run_command(cmd, @options)
80
+ end
71
81
  end
72
82
  end
73
83
  end
@@ -47,8 +47,8 @@ module DanarchyDeploy
47
47
  abort(" ! Failed to run mkfs: #{mkfs[:stderr]}") if mkfs[:stderr]
48
48
  end
49
49
 
50
- FileUtils.mkdir_p(mount[:mountpoint]) if !options[:pretend] &&
51
- !Dir.exist?(mount[:mountpoint])
50
+ FileUtils.mkdir_p(mount[:mountpoint]) unless options[:pretend] &&
51
+ Dir.exist?(mount[:mountpoint])
52
52
  end
53
53
  end
54
54
 
@@ -48,7 +48,7 @@ module DanarchyDeploy
48
48
  puts " |> Continuing with emerge!"
49
49
  end
50
50
 
51
- def self.emerge_sync(sync, options)
51
+ def self.emerge_sync(sync=false, options)
52
52
  puts "\n > Gentoo Emerge Sync"
53
53
  if sync.nil?
54
54
  install_sync_cron(sync, options)
@@ -65,7 +65,7 @@ module DanarchyDeploy
65
65
  DanarchyDeploy::Helpers.run_command("rm -rf #{@repo_path}/.tmp-unverified-download-quarantine", options)
66
66
  end
67
67
  end
68
- elsif sync =~ /([0-9]{1,2}|\*|\@[a-z]{4,7})/i
68
+ elsif sync =~ /(cron|schedule)/i
69
69
  install_sync_cron(sync, options)
70
70
  else
71
71
  puts "\n ! Unknown sync cron time: #{sync}. Not running emerge sync!"
@@ -88,41 +88,21 @@ module DanarchyDeploy
88
88
  'id portage | grep cron >/dev/null && usermod -r -G cron portage',
89
89
  options)
90
90
 
91
- templates.push({ target: '/var/spool/cron/crontabs/portage',
91
+ templates.push({ target: '/etc/cron.daily/portage_sync.sh',
92
92
  remove: true })
93
93
  else
94
94
  DanarchyDeploy::Helpers.run_command(
95
95
  'id portage | grep cron >/dev/null || usermod -a -G cron portage',
96
96
  options)
97
97
 
98
- # User must be a member of the 'cron' group.
99
- # User's actual crontab file is chown'd as ${user}:crontab
100
- templates.push({ source: 'builtin::system/crontab.erb',
101
- target: '/var/spool/cron/crontabs/portage',
98
+ templates.push({ source: 'builtin::portage/portage_sync.sh',
99
+ target: '/etc/cron.daily/portage_sync.sh',
102
100
  file_perms: {
103
- owner: 'portage',
104
- group: 'crontab',
105
- mode: '0600'
106
- },
107
- variables: {
108
- shell: '/bin/bash',
109
- path: '/usr/local/sbin:/usr/local/bin:/usr/bin',
110
- env: '',
111
- jobs: [
112
- {
113
- schedule: sync,
114
- command: 'emerge --sync &>/var/log/emerge-sync.log'
115
- },
116
- {
117
- schedule: '@daily',
118
- command: 'eclean-dist &>/dev/null'
119
- },
120
- {
121
- schedule: '@daily',
122
- command: 'eclean-pkg &>/dev/null'
123
- }
124
- ]
125
- } })
101
+ owner: 'root',
102
+ group: 'root',
103
+ mode: '0740'
104
+ }
105
+ })
126
106
  end
127
107
 
128
108
  DanarchyDeploy::Templater.new(templates, options)
@@ -15,6 +15,11 @@ module DanarchyDeploy
15
15
  installer, updater, cleaner = prep_operating_system(deployment, options)
16
16
  install_result, updater_result = nil, nil
17
17
 
18
+ if options[:skip_install]
19
+ puts "\n > Skipping package installation due to --skip-install"
20
+ return deployment
21
+ end
22
+
18
23
  puts "\n > Package Installation"
19
24
  if [true, 'all', 'selected', nil].include?(deployment[:system][:update]) &&
20
25
  deployment[:packages].any?
@@ -87,23 +92,5 @@ module DanarchyDeploy
87
92
 
88
93
  [installer, updater, cleaner]
89
94
  end
90
-
91
- def self.fstab_mount(deployment, options)
92
- fstab = deployment[:system][:templates].collect { |t| t if t[:target] == '/etc/fstab' }.compact
93
- fstab.each do |t|
94
- t[:variables].each do |v|
95
- if !Dir.exist?(v[:mountpoint])
96
- puts "Creating mountpoint: #{v[:mountpoint]}"
97
- FileUtils.mkdir_p(v[:mountpoint]) if !options[:pretend]
98
- end
99
- end
100
- end
101
-
102
- puts "\n > Mounting Filesystems"
103
- if !options[:pretend]
104
- mount_result = DanarchyDeploy::Helpers.run_command('mount -a', options)
105
- abort(' |! Failed to mount filesystems!') if mount_result[:stderr]
106
- end
107
- end
108
95
  end
109
96
  end
@@ -1,3 +1,3 @@
1
1
  module DanarchyDeploy
2
- VERSION = "0.2.11"
2
+ VERSION = "0.2.12"
3
3
  end
@@ -24,7 +24,7 @@
24
24
  }
25
25
  },
26
26
  "portage": {
27
- "sync": false,
27
+ "sync": false || false || "cron || schedule",
28
28
  "templates": [
29
29
  {
30
30
  "target": "/etc/portage/make.conf",
@@ -70,9 +70,10 @@
70
70
  "services": {
71
71
  "service_name": {
72
72
  "init": {
73
- "service": [
73
+ "runlevel": "default",
74
+ "actions": [
74
75
  "enable",
75
- "restart"
76
+ "start"
76
77
  ]
77
78
  },
78
79
  "archives": [
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+
3
+ /usr/bin/emerge --sync &> /var/log/emerge-sync.log
4
+ /usr/bin/eclean-dist
5
+ /usr/bin/eclean-pkg
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danarchy_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.11
4
+ version: 0.2.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan James
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-28 00:00:00.000000000 Z
11
+ date: 2025-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: danarchy_couchdb
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.1'
20
- type: :runtime
19
+ version: '2.6'
20
+ type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.1'
26
+ version: '2.6'
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.5'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2.5'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
42
+ name: danarchy_couchdb
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '13.0'
48
- type: :development
47
+ version: '0.1'
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '13.0'
54
+ version: '0.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mongo
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.20'
69
+ - !ruby/object:Gem::Dependency
70
+ name: openssl
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.3'
69
83
  description: DanarchyDeploy intends to simplify Gentoo Linux (and other distro) deployments
70
84
  down to a single template from an input JSON or YAML file, or from a CouchDB file.
71
85
  email:
@@ -131,6 +145,7 @@ files:
131
145
  - templates/portage/make.conf.erb
132
146
  - templates/portage/package.use/bindist
133
147
  - templates/portage/package.use/documentation
148
+ - templates/portage/portage_sync.sh
134
149
  - templates/services/memcached/memcached.erb
135
150
  - templates/services/mysql/my.cnf.erb
136
151
  - templates/services/mysql/root_my.cnf.erb
@@ -173,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
188
  - !ruby/object:Gem::Version
174
189
  version: '0'
175
190
  requirements: []
176
- rubygems_version: 3.5.11
191
+ rubygems_version: 3.4.19
177
192
  signing_key:
178
193
  specification_version: 4
179
194
  summary: Pushes deployments locally or remotely based on a JSON/YAML/CouchDB template.