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 +4 -4
- data/.asdf_versions.json +1 -1
- data/.tool-versions +1 -1
- data/CHANGELOG.md +6 -0
- data/exe/danarchy_deploy +15 -8
- data/lib/danarchy_deploy/services/init/openrc.rb +15 -5
- data/lib/danarchy_deploy/system/fstab.rb +2 -2
- data/lib/danarchy_deploy/system/gentoo.rb +10 -30
- data/lib/danarchy_deploy/system.rb +5 -18
- data/lib/danarchy_deploy/version.rb +1 -1
- data/templates/deploy_template.json +4 -3
- data/templates/portage/portage_sync.sh +5 -0
- metadata +29 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d983a99ae7625895008802d7aefb21d055f45e3b70dfd365ca2881d2349a29d6
|
4
|
+
data.tar.gz: 55d5b7477a5d2b43bcffe6d86d11977add6739e49336cd963fde8141b374f13a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b42720a0e7433080ff22b9104bde15f347ba6fea32e405a37dc122c46527c27a0e022da4242ff4f44d3e810c82834aa745eb0df9673c4642901da7c726a5e4b
|
7
|
+
data.tar.gz: 8f0aab58a7132063b3383f9a4a7b310f2dc5fb026f15f0b7850325864098bac55900c1c6e0aacd8e628e620efcc593fdb4e3b26f25ad1741803f38bca41507eb
|
data/.asdf_versions.json
CHANGED
data/.tool-versions
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby 3.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 = {
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
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])
|
51
|
-
|
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 =~ /(
|
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: '/
|
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
|
-
|
99
|
-
|
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: '
|
104
|
-
group: '
|
105
|
-
mode: '
|
106
|
-
}
|
107
|
-
|
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
|
@@ -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
|
-
"
|
73
|
+
"runlevel": "default",
|
74
|
+
"actions": [
|
74
75
|
"enable",
|
75
|
-
"
|
76
|
+
"start"
|
76
77
|
]
|
77
78
|
},
|
78
79
|
"archives": [
|
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.
|
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:
|
11
|
+
date: 2025-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
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: '
|
26
|
+
version: '2.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
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: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: danarchy_couchdb
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
type: :
|
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: '
|
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.
|
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.
|