danarchy_deploy 0.2.5 → 0.2.6
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/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +48 -0
- data/Gemfile.lock +3 -3
- data/bin/{danarchy_deploy-console → console-dd} +0 -0
- data/bin/danarchy_deploy +1 -1
- data/lib/danarchy_deploy/groups.rb +1 -0
- data/lib/danarchy_deploy/services/init.rb +5 -4
- data/lib/danarchy_deploy/services/mongodb.rb +1 -1
- data/lib/danarchy_deploy/services/mysql/new_server.rb +4 -4
- data/lib/danarchy_deploy/services/mysql.rb +3 -3
- data/lib/danarchy_deploy/services.rb +1 -0
- data/lib/danarchy_deploy/system/cryptsetup.rb +8 -4
- data/lib/danarchy_deploy/system/fstab.rb +6 -6
- data/lib/danarchy_deploy/system.rb +11 -4
- data/lib/danarchy_deploy/users.rb +1 -1
- data/lib/danarchy_deploy/version.rb +1 -1
- data/lib/danarchy_deploy.rb +7 -7
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4665ec27120f6fda4337da5a2b2cb465511534cef96b47c2a11791076012f64
|
4
|
+
data.tar.gz: e12104840e0273bf38d37a0465752ebc5bacc53d2d0f4a5b5783a936f5810afb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bc766ba4a3e8f6e0e691dd1904029f9c08cd6b040146214ae31fb0c18b3a779bae3258b033b1b50205f70c02ebfdbc1fcdd5756ae5ef7b727ce8225397cb4b4
|
7
|
+
data.tar.gz: 7b22f9218392944730cec707bbf62cf9cc9c696fd411eccf02e6d7ceff54748b141c76b2b3de6750867287e9221a17f0be08be524a29c58e14b38b6741da4036
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
danarchy_deploy
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.7.2
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
patch_0.2.6
|
2
|
+
- DanarchyDeploy: gem install --bindir
|
3
|
+
- DanarchyDeploy: return from each class if not defined in a deployment
|
4
|
+
- Services::MySQL: Check for defaults_file instead of /etc/my.cnf, SecureRandom.hex for passwords
|
5
|
+
- Services::Init: clean up output and if statement
|
6
|
+
- Add RVM .ruby-version .ruby-gemset
|
7
|
+
- Rename danarchy_deploy-console to console-dd
|
8
|
+
- Add CHANGELOG.md
|
9
|
+
|
10
|
+
patch_0.2.5
|
11
|
+
- Adds Fstab system service
|
12
|
+
- Adds Dmcrypt/LVM system service
|
13
|
+
- Enforce MongoDB security/limits.d/mongodb.conf if it doesn't exist
|
14
|
+
- Clarify some CLI output
|
15
|
+
- Ignore first SSH known_hosts error in RemoteDeploy.remote_mkdir
|
16
|
+
|
17
|
+
patch_0.2.4
|
18
|
+
- mongodb limits newlines
|
19
|
+
|
20
|
+
patch_0.2.2
|
21
|
+
- Fix MongoDB so it correctly applies security limits file count
|
22
|
+
|
23
|
+
release_0.2.0
|
24
|
+
- Adds Applicator #wordpress #nginx #phpfpm #ssl
|
25
|
+
- Adds Services #init #mongodb #mysql
|
26
|
+
- Adds System #centos #debian #gentoo #openssue
|
27
|
+
|
28
|
+
patch_0.1.6
|
29
|
+
- User/Groups commands should use sudo
|
30
|
+
|
31
|
+
patch_0.1.5
|
32
|
+
- Don't upload to couchdb if using a .json/.yaml template
|
33
|
+
|
34
|
+
patch_0.1.4
|
35
|
+
- sudoers.d/ file root owned
|
36
|
+
|
37
|
+
patch_0.1.3
|
38
|
+
- prevents packages from being an empty array
|
39
|
+
|
40
|
+
patch_0.1.2
|
41
|
+
- chown/chmod on ~/.ssh contents
|
42
|
+
- fix JSON parse error
|
43
|
+
|
44
|
+
release_0.1.1
|
45
|
+
- Re-order archive extraction and template creation so that written templates aren't overwritten by archive data.
|
46
|
+
- Fixes user sudoers.d file creation; a+ append instead of r+ read-write (expects file to exist already).
|
47
|
+
- Cleans up package handling for Gentoo and also changes --usepkg to --buildpkg if hostname begins with 'image' or 'template' for binary creation during image builds.
|
48
|
+
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
danarchy_deploy (0.2.
|
4
|
+
danarchy_deploy (0.2.6)
|
5
5
|
danarchy_couchdb (~> 0.1)
|
6
6
|
mongo (~> 2.17)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
bson (4.14.
|
11
|
+
bson (4.14.1)
|
12
12
|
danarchy_couchdb (0.1.3)
|
13
13
|
mongo (2.17.0)
|
14
14
|
bson (>= 4.8.2, < 5.0.0)
|
@@ -23,4 +23,4 @@ DEPENDENCIES
|
|
23
23
|
rake (~> 13.0)
|
24
24
|
|
25
25
|
BUNDLED WITH
|
26
|
-
2.3.
|
26
|
+
2.3.9
|
File without changes
|
data/bin/danarchy_deploy
CHANGED
@@ -95,7 +95,7 @@ end
|
|
95
95
|
if location == 'remote'
|
96
96
|
deployment = DanarchyDeploy::RemoteDeploy.new(deployment, options)
|
97
97
|
elsif location == 'local'
|
98
|
-
abort('Exiting! Local deployment be run with sudo!') if Process.uid != 0
|
98
|
+
abort('Exiting! Local deployment must be run with sudo!') if Process.uid != 0
|
99
99
|
puts "Deploying #{deployment[:hostname]} locally to #{`hostname`.chomp}."
|
100
100
|
|
101
101
|
if !options[:pretend]
|
@@ -5,6 +5,7 @@ module DanarchyDeploy
|
|
5
5
|
module Services
|
6
6
|
class Init
|
7
7
|
def self.new(deployment, options)
|
8
|
+
return deployment if ! deployment[:services]
|
8
9
|
puts "\n" + self.name
|
9
10
|
|
10
11
|
deployment[:services].each do |service, params|
|
@@ -35,16 +36,16 @@ module DanarchyDeploy
|
|
35
36
|
|
36
37
|
init_result = init.send(action)
|
37
38
|
|
38
|
-
if init_result[:stderr]
|
39
|
-
if
|
39
|
+
if stderr = init_result[:stderr]
|
40
|
+
if stderr.include?('unknown function')
|
40
41
|
puts " ! Action: #{action} not available for service: #{service}.\n" +
|
41
42
|
" ! A restart may be needed! Otherwise, remove this action from the deployment.\n" +
|
42
43
|
" ! Not taking any action here.\n"
|
43
44
|
else
|
44
|
-
abort(" ! Action: #{
|
45
|
+
abort(" ! Action: #{action} #{service} failed!")
|
45
46
|
end
|
46
47
|
else
|
47
|
-
puts " |+ Action: #{
|
48
|
+
puts " |+ Action: #{action} #{service} succeeded."
|
48
49
|
end
|
49
50
|
end
|
50
51
|
end
|
@@ -13,7 +13,7 @@ module DanarchyDeploy
|
|
13
13
|
Mongo::Logger.logger.level = Logger::FATAL
|
14
14
|
mongodb_conf, updated_conf = self.load_mongodb_conf
|
15
15
|
host_port = mongodb_conf['net']['bindIp'].split(',').first + ':' + mongodb_conf['net']['port'].to_s
|
16
|
-
admin_user, new_admin
|
16
|
+
admin_user, new_admin = self.load_admin_user
|
17
17
|
|
18
18
|
if new_admin == true
|
19
19
|
client = Mongo::Client.new(['127.0.0.1'], database: 'admin')
|
@@ -49,13 +49,13 @@ module DanarchyDeploy
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def self.generate_root_mycnf(mysql, options)
|
52
|
-
return if File.exist?(mysql[:
|
53
|
-
puts " |+ Generating #{mysql[:
|
54
|
-
password = SecureRandom.
|
52
|
+
return if File.exist?(mysql[:defaults_file])
|
53
|
+
puts " |+ Generating #{mysql[:defaults_file]} file."
|
54
|
+
password = SecureRandom.hex(24)
|
55
55
|
source = options[:deploy_dir] +
|
56
56
|
'/templates/services/mysql/root_my.cnf.erb'
|
57
57
|
|
58
|
-
templates = [{ target: mysql[:
|
58
|
+
templates = [{ target: mysql[:defaults_file],
|
59
59
|
source: source,
|
60
60
|
variables: {
|
61
61
|
host: 'localhost',
|
@@ -11,7 +11,7 @@ module DanarchyDeploy
|
|
11
11
|
mysql = self.set_parameters(mysql)
|
12
12
|
self.generate_my_cnf(mysql, options)
|
13
13
|
|
14
|
-
if File.exist?(mysql[:
|
14
|
+
if File.exist?(mysql[:defaults_file]) && Dir.exist?(mysql[:datadir])
|
15
15
|
puts " |+ Using existing MySQL service."
|
16
16
|
else
|
17
17
|
MySQL::NewServer.new(os, mysql, options)
|
@@ -24,8 +24,8 @@ module DanarchyDeploy
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.set_parameters(mysql)
|
27
|
-
mysql[:
|
28
|
-
mysql[:
|
27
|
+
mysql[:defaults_file] = mysql[:defaults_file] ?
|
28
|
+
mysql[:defaults_file] :
|
29
29
|
'/root/.my.cnf'
|
30
30
|
mysql[:my_cnf] = mysql[:my_cnf] ?
|
31
31
|
mysql[:my_cnf] :
|
@@ -6,10 +6,14 @@ module DanarchyDeploy
|
|
6
6
|
return false if cryptsetup.nil?
|
7
7
|
puts "\n" + self.name
|
8
8
|
|
9
|
-
# expects object: {
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
9
|
+
# expects object: {
|
10
|
+
# "cryptsetup": {
|
11
|
+
# "source": "/danarchy/deploy/templates/system/cryptsetup.erb", (optional)
|
12
|
+
# "volumes": {
|
13
|
+
# "vg_name:vg0:/dev/vdb": {
|
14
|
+
# "target": "dm-vg0-mongodb",
|
15
|
+
# "source": "/dev/mapper/vg0-mongodb",
|
16
|
+
# "key": "/root/vdb_mongodb.key" } } } }
|
13
17
|
|
14
18
|
if os == 'gentoo'
|
15
19
|
DanarchyDeploy::Services::Init.init_manager(os, 'lvmetad', 'enable', options)
|
@@ -10,6 +10,12 @@ module DanarchyDeploy
|
|
10
10
|
mount_all(options)
|
11
11
|
end
|
12
12
|
|
13
|
+
def self.mount_all(options)
|
14
|
+
puts "\n > Mounting Filesystems"
|
15
|
+
mount_result = DanarchyDeploy::Helpers.run_command('mount -a', options)
|
16
|
+
abort(' ! Failed to mount filesystems!') if mount_result[:stderr]
|
17
|
+
end
|
18
|
+
|
13
19
|
private
|
14
20
|
def self.set_config(fstab, options)
|
15
21
|
target = '/etc/fstab'
|
@@ -49,12 +55,6 @@ module DanarchyDeploy
|
|
49
55
|
!Dir.exist?(mount[:mountpoint])
|
50
56
|
end
|
51
57
|
end
|
52
|
-
|
53
|
-
def self.mount_all(options)
|
54
|
-
puts "\n > Mounting Filesystems"
|
55
|
-
mount_result = DanarchyDeploy::Helpers.run_command('mount -a', options)
|
56
|
-
abort(' ! Failed to mount filesystems!') if mount_result[:stderr]
|
57
|
-
end
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -10,6 +10,7 @@ module DanarchyDeploy
|
|
10
10
|
module System
|
11
11
|
def self.new(deployment, options)
|
12
12
|
abort('Operating System not defined! Exiting!') if !deployment[:os]
|
13
|
+
return deployment if ! deployment[:system]
|
13
14
|
puts "\n" + self.name
|
14
15
|
|
15
16
|
installer, updater, cleaner = prep_operating_system(deployment, options)
|
@@ -32,8 +33,6 @@ module DanarchyDeploy
|
|
32
33
|
puts cleanup_result[:stdout] if cleanup_result[:stdout]
|
33
34
|
end
|
34
35
|
|
35
|
-
DanarchyDeploy::System::Cryptsetup.new(deployment[:os], deployment[:system][:cryptsetup], options)
|
36
|
-
DanarchyDeploy::System::Fstab.new(deployment[:os], deployment[:system][:fstab], options)
|
37
36
|
deployment
|
38
37
|
end
|
39
38
|
|
@@ -52,6 +51,14 @@ module DanarchyDeploy
|
|
52
51
|
puts "\n > Configuring system templates for #{deployment[:os]}"
|
53
52
|
DanarchyDeploy::Templater.new(deployment[:system][:templates], options)
|
54
53
|
end
|
54
|
+
|
55
|
+
DanarchyDeploy::System::Cryptsetup.new(deployment[:os], deployment[:system][:cryptsetup], options)
|
56
|
+
|
57
|
+
if deployment[:system][:fstab]
|
58
|
+
DanarchyDeploy::System::Fstab.new(deployment[:os], deployment[:system][:fstab], options)
|
59
|
+
else
|
60
|
+
DanarchyDeploy::System::Fstab.mount_all(options)
|
61
|
+
end
|
55
62
|
end
|
56
63
|
|
57
64
|
if os.downcase == 'gentoo'
|
@@ -61,8 +68,8 @@ module DanarchyDeploy
|
|
61
68
|
elsif os.downcase == 'opensuse'
|
62
69
|
puts 'OpenSUSE is not fully supported yet!'
|
63
70
|
(installer, updater, cleaner) = DanarchyDeploy::System::OpenSUSE.new(deployment, options)
|
64
|
-
elsif %w[centos redhat].include?(os.downcase)
|
65
|
-
puts 'CentOS/RedHat is not fully supported yet!'
|
71
|
+
elsif %w[fedora centos redhat].include?(os.downcase)
|
72
|
+
puts 'Fedora/CentOS/RedHat is not fully supported yet!'
|
66
73
|
(installer, updater, cleaner) = DanarchyDeploy::System::CentOS.new(deployment, options)
|
67
74
|
end
|
68
75
|
|
@@ -2,6 +2,7 @@
|
|
2
2
|
module DanarchyDeploy
|
3
3
|
class Users
|
4
4
|
def self.new(deployment, options)
|
5
|
+
return deployment if ! deployment[:users]
|
5
6
|
puts "\n" + self.name
|
6
7
|
(useradd_result, userdel_result, archives_result) = nil
|
7
8
|
|
@@ -56,7 +57,6 @@ module DanarchyDeploy
|
|
56
57
|
user.delete(:username)
|
57
58
|
end
|
58
59
|
|
59
|
-
# [useradd_result, userdel_result]
|
60
60
|
deployment
|
61
61
|
end
|
62
62
|
|
data/lib/danarchy_deploy.rb
CHANGED
@@ -21,10 +21,10 @@ module DanarchyDeploy
|
|
21
21
|
printf("%12s %0s\n", 'Packages:', deployment[:packages].join(', ')) if deployment[:packages]
|
22
22
|
|
23
23
|
deployment = DanarchyDeploy::System.new(deployment, options)
|
24
|
-
deployment = DanarchyDeploy::Services.new(deployment, options)
|
25
|
-
deployment = DanarchyDeploy::Groups.new(deployment, options)
|
26
|
-
deployment = DanarchyDeploy::Users.new(deployment, options)
|
27
|
-
deployment = DanarchyDeploy::Services::Init.new(deployment, options)
|
24
|
+
deployment = DanarchyDeploy::Services.new(deployment, options)
|
25
|
+
deployment = DanarchyDeploy::Groups.new(deployment, options)
|
26
|
+
deployment = DanarchyDeploy::Users.new(deployment, options)
|
27
|
+
deployment = DanarchyDeploy::Services::Init.new(deployment, options)
|
28
28
|
|
29
29
|
deployment[:last_deploy] = DateTime.now.strftime("%Y/%m/%d %H:%M:%S")
|
30
30
|
puts "\nFinished Local Deployment at #{deployment[:last_deploy]}!"
|
@@ -61,7 +61,7 @@ module DanarchyDeploy
|
|
61
61
|
|
62
62
|
gem_clean(connector, options)
|
63
63
|
gem_binary = _locate_gem_binary(connector, options) # this should run before any install; check version too
|
64
|
-
|
64
|
+
push_templates(connector, options)
|
65
65
|
push_deployment(connector, options)
|
66
66
|
deploy_result = remote_LocalDeploy(connector, gem_binary, options)
|
67
67
|
|
@@ -144,7 +144,7 @@ module DanarchyDeploy
|
|
144
144
|
end
|
145
145
|
|
146
146
|
puts "\n > Installing gem: #{gem} on #{connector[:hostname]}"
|
147
|
-
install_cmd = _ssh_command(connector, "sudo gem install -f #{options[:deploy_dir]}/#{File.basename(gem)}")
|
147
|
+
install_cmd = _ssh_command(connector, "sudo gem install --bindir /usr/local/bin -f #{options[:deploy_dir]}/#{File.basename(gem)}")
|
148
148
|
install_result = DanarchyDeploy::Helpers.run_command(install_cmd, options)
|
149
149
|
|
150
150
|
if install_result[:stderr]
|
@@ -159,7 +159,7 @@ module DanarchyDeploy
|
|
159
159
|
system(clean_cmd)
|
160
160
|
end
|
161
161
|
|
162
|
-
def self.
|
162
|
+
def self.push_templates(connector, options)
|
163
163
|
template_dir = options[:deploy_dir] + '/templates'
|
164
164
|
puts "\n > Pushing templates: #{template_dir}"
|
165
165
|
push_cmd = _rsync_push(connector, template_dir, template_dir)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan James
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: danarchy_couchdb
|
@@ -71,22 +71,25 @@ description: DanarchyDeploy intends to simplify Gentoo Linux (and other distro)
|
|
71
71
|
email:
|
72
72
|
- dan@danarchy.me
|
73
73
|
executables:
|
74
|
+
- console-dd
|
74
75
|
- danarchy_deploy
|
75
|
-
- danarchy_deploy-console
|
76
76
|
- setup
|
77
77
|
extensions: []
|
78
78
|
extra_rdoc_files: []
|
79
79
|
files:
|
80
80
|
- ".gitignore"
|
81
81
|
- ".rspec"
|
82
|
+
- ".ruby-gemset"
|
83
|
+
- ".ruby-version"
|
82
84
|
- ".travis.yml"
|
85
|
+
- CHANGELOG.md
|
83
86
|
- Gemfile
|
84
87
|
- Gemfile.lock
|
85
88
|
- LICENSE.txt
|
86
89
|
- README.md
|
87
90
|
- Rakefile
|
91
|
+
- bin/console-dd
|
88
92
|
- bin/danarchy_deploy
|
89
|
-
- bin/danarchy_deploy-console
|
90
93
|
- bin/setup
|
91
94
|
- danarchy_deploy.gemspec
|
92
95
|
- lib/danarchy_deploy.rb
|
@@ -144,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
147
|
- !ruby/object:Gem::Version
|
145
148
|
version: '0'
|
146
149
|
requirements: []
|
147
|
-
rubygems_version: 3.
|
150
|
+
rubygems_version: 3.1.4
|
148
151
|
signing_key:
|
149
152
|
specification_version: 4
|
150
153
|
summary: Pushes deployments locally or remotely based on a JSON/YAML/CouchDB template.
|