producer-stdlib 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/producer/stdlib.rb +2 -0
- data/lib/producer/stdlib/debian.rb +15 -0
- data/lib/producer/stdlib/freebsd.rb +16 -2
- data/lib/producer/stdlib/fs.rb +9 -9
- data/lib/producer/stdlib/git.rb +4 -2
- data/lib/producer/stdlib/ssh.rb +28 -4
- data/lib/producer/stdlib/version.rb +1 -1
- data/lib/producer/stdlib/yaml.rb +11 -0
- metadata +11 -6
- checksums.yaml +0 -7
data/lib/producer/stdlib.rb
CHANGED
@@ -15,10 +15,12 @@ module Producer
|
|
15
15
|
end
|
16
16
|
|
17
17
|
require 'producer/stdlib/fs'
|
18
|
+
require 'producer/stdlib/debian'
|
18
19
|
require 'producer/stdlib/freebsd'
|
19
20
|
require 'producer/stdlib/freebsd/ports'
|
20
21
|
require 'producer/stdlib/git'
|
21
22
|
require 'producer/stdlib/ssh'
|
22
23
|
require 'producer/stdlib/version'
|
24
|
+
require 'producer/stdlib/yaml'
|
23
25
|
end
|
24
26
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Producer
|
2
|
+
module STDLib
|
3
|
+
module Debian
|
4
|
+
STDLib.define_test(:apt_pkg?) do |pkg|
|
5
|
+
sh "dpkg-query -l #{pkg} > /dev/null 2>&1"
|
6
|
+
end
|
7
|
+
|
8
|
+
STDLib.define_macro :apt_install do |pkg|
|
9
|
+
condition { no_apt_pkg? pkg }
|
10
|
+
|
11
|
+
sh "env DEBIAN_FRONTEND=noninteractive apt-get install --quiet --yes #{pkg}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -13,10 +13,14 @@ module Producer
|
|
13
13
|
STDLib.compose_macro :loader_conf, :file_write_once, LOADER_CONF_PATH
|
14
14
|
|
15
15
|
STDLib.compose_macro :rc_conf, :file_write_once, RC_CONF_PATH
|
16
|
+
STDLib.compose_macro :rc_conf_append, :file_append_once, RC_CONF_PATH
|
16
17
|
|
17
18
|
STDLib.compose_macro :sysctl_conf, :file_write_once, SYSCTL_CONF_PATH
|
18
19
|
|
19
|
-
STDLib.compose_macro :periodic_conf,
|
20
|
+
STDLib.compose_macro :periodic_conf,
|
21
|
+
:file_write_once, PERIODIC_CONF_PATH
|
22
|
+
STDLib.compose_macro :periodic_conf_append,
|
23
|
+
:file_append_once, PERIODIC_CONF_PATH
|
20
24
|
|
21
25
|
STDLib.compose_macro :make_conf, :file_write_once, MAKE_CONF_PATH
|
22
26
|
|
@@ -60,6 +64,16 @@ module Producer
|
|
60
64
|
rc_conf_update "#{service}_enable", '"NO"'
|
61
65
|
end
|
62
66
|
|
67
|
+
STDLib.define_macro :rc_send do |command, service|
|
68
|
+
sh "service #{service} #{command}"
|
69
|
+
end
|
70
|
+
|
71
|
+
STDLib.compose_macro :rc_status, :rc_send, 'status'
|
72
|
+
STDLib.compose_macro :rc_reload, :rc_send, 'reload'
|
73
|
+
STDLib.compose_macro :rc_restart, :rc_send, 'restart'
|
74
|
+
STDLib.compose_macro :rc_start, :rc_send, 'start'
|
75
|
+
STDLib.compose_macro :rc_stop, :rc_send, 'stop'
|
76
|
+
|
63
77
|
STDLib.compose_macro :hostname, :rc_conf_update, 'hostname'
|
64
78
|
|
65
79
|
STDLib.define_macro :chsh do |shell|
|
@@ -124,7 +138,7 @@ module Producer
|
|
124
138
|
STDLib.define_macro :pkg_install do |pkg|
|
125
139
|
condition { no_pkg? pkg }
|
126
140
|
|
127
|
-
sh '
|
141
|
+
sh 'pkg install -y %s' % pkg
|
128
142
|
end
|
129
143
|
end
|
130
144
|
end
|
data/lib/producer/stdlib/fs.rb
CHANGED
@@ -1,24 +1,24 @@
|
|
1
1
|
module Producer
|
2
2
|
module STDLib
|
3
3
|
module FS
|
4
|
-
STDLib.define_macro :ensure_dir do |path,
|
5
|
-
mode ||= 0700
|
4
|
+
STDLib.define_macro :ensure_dir do |path, options = {}|
|
5
|
+
options[:mode] ||= 0700
|
6
6
|
|
7
7
|
condition { no_dir? path }
|
8
8
|
|
9
|
-
mkdir path,
|
9
|
+
mkdir path, options
|
10
10
|
end
|
11
11
|
|
12
|
-
STDLib.define_macro :
|
13
|
-
condition {
|
12
|
+
STDLib.define_macro :file_write_once do |path, content, options|
|
13
|
+
condition { no_file_eq path, content }
|
14
14
|
|
15
|
-
|
15
|
+
file_write path, content, options
|
16
16
|
end
|
17
17
|
|
18
|
-
STDLib.define_macro :
|
19
|
-
condition {
|
18
|
+
STDLib.define_macro :file_append_once do |path, content|
|
19
|
+
condition { no_file_contains path, content }
|
20
20
|
|
21
|
-
|
21
|
+
file_append path, content
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
data/lib/producer/stdlib/git.rb
CHANGED
@@ -5,10 +5,12 @@ module Producer
|
|
5
5
|
dir? "#{path}/.git"
|
6
6
|
end
|
7
7
|
|
8
|
-
STDLib.define_macro :git_clone do |repository, destination|
|
8
|
+
STDLib.define_macro :git_clone do |repository, destination, branch: nil|
|
9
|
+
branch = branch ? '--branch %s' % branch : ''
|
10
|
+
|
9
11
|
condition { no_git? destination }
|
10
12
|
|
11
|
-
sh "git clone --depth 1 #{repository} #{destination}"
|
13
|
+
sh "git clone #{branch} --depth 1 #{repository} #{destination}"
|
12
14
|
end
|
13
15
|
|
14
16
|
STDLib.define_macro :git_update do |path|
|
data/lib/producer/stdlib/ssh.rb
CHANGED
@@ -3,13 +3,37 @@ module Producer
|
|
3
3
|
module SSH
|
4
4
|
require 'base64'
|
5
5
|
|
6
|
-
SSH_AUTHORIZED_KEYS_PATH
|
6
|
+
SSH_AUTHORIZED_KEYS_PATH = '.ssh/authorized_keys'.freeze
|
7
|
+
SSH_AUTHORIZED_NO_KEY_FMT =
|
8
|
+
'"ssh_authorize macro cannot find key matching `%s\''
|
7
9
|
|
8
10
|
|
9
11
|
STDLib.define_macro :ssh_dir do
|
10
|
-
|
12
|
+
ensure_dir '.ssh', mode: 0700
|
13
|
+
end
|
14
|
+
|
15
|
+
STDLib.define_macro :ssh_authorize do |key_pattern, user: nil|
|
16
|
+
path_base = user ? '/home/%s' % user : nil
|
17
|
+
path = Pathname.new(path_base) + SSH_AUTHORIZED_KEYS_PATH
|
18
|
+
|
19
|
+
condition { no_file? path }
|
20
|
+
|
21
|
+
if condition_met?
|
22
|
+
key = Net::SSH::Authentication::Agent.connect.identities.find do |e|
|
23
|
+
e.fingerprint =~ /\A#{key_pattern}/
|
24
|
+
end
|
25
|
+
|
26
|
+
fail Core::RuntimeError, SSH_AUTHORIZED_NO_KEY_FMT % key_pattern unless key
|
11
27
|
|
12
|
-
|
28
|
+
line = [
|
29
|
+
key.ssh_type,
|
30
|
+
::Base64.encode64(key.to_blob).gsub("\n", '')
|
31
|
+
].join ' '
|
32
|
+
|
33
|
+
ensure_dir path.dirname, mode: 0700
|
34
|
+
file_write_once path, "#{line}\n", mode: 0600
|
35
|
+
sh 'chown -R %s %s' % [user, path.dirname] if user
|
36
|
+
end
|
13
37
|
end
|
14
38
|
|
15
39
|
STDLib.define_macro :ssh_copy_id do |path = SSH_AUTHORIZED_KEYS_PATH|
|
@@ -25,7 +49,7 @@ module Producer
|
|
25
49
|
::Base64.encode64(key.to_blob).gsub("\n", '')
|
26
50
|
].join ' '
|
27
51
|
|
28
|
-
file_write path, "#{line}\n", 0600
|
52
|
+
file_write path, "#{line}\n", mode: 0600
|
29
53
|
end
|
30
54
|
end
|
31
55
|
end
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: producer-stdlib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Thibault Jouan
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2015-02-21 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: producer-core
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - "~>"
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -23,6 +25,7 @@ dependencies:
|
|
23
25
|
type: :runtime
|
24
26
|
prerelease: false
|
25
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
26
29
|
requirements:
|
27
30
|
- - "~>"
|
28
31
|
- !ruby/object:Gem::Version
|
@@ -38,35 +41,37 @@ extensions: []
|
|
38
41
|
extra_rdoc_files: []
|
39
42
|
files:
|
40
43
|
- lib/producer/stdlib.rb
|
44
|
+
- lib/producer/stdlib/debian.rb
|
41
45
|
- lib/producer/stdlib/freebsd.rb
|
42
46
|
- lib/producer/stdlib/freebsd/ports.rb
|
43
47
|
- lib/producer/stdlib/fs.rb
|
44
48
|
- lib/producer/stdlib/git.rb
|
45
49
|
- lib/producer/stdlib/ssh.rb
|
46
50
|
- lib/producer/stdlib/version.rb
|
51
|
+
- lib/producer/stdlib/yaml.rb
|
47
52
|
- producer-stdlib.gemspec
|
48
53
|
homepage: https://rubygems.org/gems/producer-stdlib
|
49
54
|
licenses: []
|
50
|
-
metadata: {}
|
51
55
|
post_install_message:
|
52
56
|
rdoc_options: []
|
53
57
|
require_paths:
|
54
58
|
- lib
|
55
59
|
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
56
61
|
requirements:
|
57
62
|
- - ">="
|
58
63
|
- !ruby/object:Gem::Version
|
59
64
|
version: '0'
|
60
65
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
61
67
|
requirements:
|
62
68
|
- - ">="
|
63
69
|
- !ruby/object:Gem::Version
|
64
70
|
version: '0'
|
65
71
|
requirements: []
|
66
72
|
rubyforge_project:
|
67
|
-
rubygems_version:
|
73
|
+
rubygems_version: 1.8.30
|
68
74
|
signing_key:
|
69
|
-
specification_version:
|
75
|
+
specification_version: 3
|
70
76
|
summary: Standard library for producer
|
71
77
|
test_files: []
|
72
|
-
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 61167336d12da40074cc617c7f73c4068455ea43
|
4
|
-
data.tar.gz: 5124f9aa5afdf16372f77f03e9940c2f084bfdd6
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 4600f297b06e66c9d46c6a1f9c1b94d9b55b195896d280fdc4717279b39926cc96dda7ff98787335d860e6987d3d5ae1754ef11c38fb282367848d207f888bf1
|
7
|
-
data.tar.gz: b6fbe67d4ed9e63108e035231f87f544ea6f97cb3fc526ad09a895c6427567a6dd92848a5f55b46a31469509b00893899225e2b6aa31bd30b889872734364185
|