chake 0.8 → 0.9

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
  SHA1:
3
- metadata.gz: fe9856d68ffd9ce6f7026dfe84fc5431a6e3066e
4
- data.tar.gz: 42b587ccb6da1cebe94fca85d9e0531e9015f1eb
3
+ metadata.gz: eec019d457b4b3b898996c028f7110da77fc8846
4
+ data.tar.gz: 24ce8d67959f35786d2cea082a518dc9d17f5597
5
5
  SHA512:
6
- metadata.gz: b7be8eab84c150e1f342a1018f57309a19626f7cf5a9dba5ae50886fd8522aa3327fed89724690808b5cb1cbbf08674d5949c2ffd7160b98f132504e4758d453
7
- data.tar.gz: 1a5980d029fb188928ca0655deedb35486a60b35952d6fa345c54b15a44727e7fe6342717ace3e08a30aaa294ecf8daf27e0d559121304c0339ec0547cb7c319
6
+ metadata.gz: 40af976047cf7d6a07bf6c47f599e9f8a0edbd3db240e413e306e1b05a28fe20435ffc13ba69dfdaeb5609303e65f31d91402cdcb009598fa6c52a0f77140168
7
+ data.tar.gz: 29ef77beb5bd171dac487ec5e3aa3563f886719e8ee6ca61f4e2e3bcd9a780e982c64b170a644b4e9ec90e0fd1f1c5475c6d83686c0ef46a598fbfc0c1128fb4
data/ChangeLog.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 0.9
2
+
3
+ * fix build step for obs uploads
4
+ * add infrastructure to build and install a manpage
5
+ * Add support for a nodes.d/ directory; very useful when dealing with a larger
6
+ amount of nodes.
7
+
1
8
  # 0.8
2
9
 
3
10
  * gemspec: minor improvements in the long description
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
- # chake
1
+ chake(1) - serverless configuration with chef
2
+ =============================================
2
3
 
3
- Simple host management with chef and rake. No chef server required.
4
+ chake is a tool that helps you manage multiple hosts with, without the need for
5
+ a chef server. Configuration is managed in a local directory, which should
6
+ probably be under version control with **git(1)** or anything else.
7
+ Configuration is usually deployed via rsync over SSH, and applied by invoking
8
+ **chef-solo(1)** over SSH on each host.
4
9
 
5
10
  ## Installation
6
11
 
@@ -11,6 +16,7 @@ Simple host management with chef and rake. No chef server required.
11
16
  ```
12
17
  $ chake init
13
18
  [create] nodes.yaml
19
+ [ mkdir] nodes.d/
14
20
  [create] config.rb
15
21
  [ mkdir] config/roles
16
22
  [ mkdir] cookbooks/basics/recipes/
@@ -23,6 +29,7 @@ A brief explanation of the created files:
23
29
  |File|Description|
24
30
  |----|-----------|
25
31
  | `nodes.yaml` | where you will list the hosts you will be managing, and what recipes to apply to each of them. |
32
+ | `nodes.d` | a directory with multiple files in the same format as nodes.yaml. All files matching `*.yaml` in it will be added to the list of nodes. |
26
33
  | `config.rb` | contains the chef-solo configuration. You can modify it, but usually you won't need to. |
27
34
  | `config/roles` | directory is where you can put your role definitions. |
28
35
  | `cookbooks` | directory where you will store your cookbooks. A sample cookbook called "basics" is created, but feel free to remove it and add actual cookbooks. |
@@ -202,15 +209,26 @@ local://laptop:
202
209
  When you run `rake converge` on `desktop`, `laptop` will be skipped, and
203
210
  vice-versa.
204
211
 
205
- ### Environment variables
206
-
207
- |Variable|Meaning|Default value|
208
- |--------|-------|-------------|
209
- | `$CHAKE_SSH_CONFIG` | local SSH configuration file | `.ssh_config` |
210
- | `$CHAKE_SSH_PREFIX` | Command to prefix SSH (and rsync over SSH) calls with | _none_ |
211
- | `$CHAKE_RSYNC_OPTIONS` | extra options to pass to `rsync`. Useful to e.g. exclude large files from being upload to each server | _none_ |
212
- | `$CHAKE_NODES` | File containing the list of servers to be managed | `nodes.yaml` |
213
- | `$CHAKE_TMPDIR` | Directory used to store temporary cache files | `tmp/chake` |
212
+ ## Environment variables
213
+
214
+ * `$CHAKE_SSH_CONFIG`:
215
+ Local SSH configuration file. Defaults to `.ssh_config`.
216
+ * `$CHAKE_SSH_PREFIX`:
217
+ Command to prefix SSH (and rsync over SSH) calls with.
218
+ * `$CHAKE_RSYNC_OPTIONS`:
219
+ extra options to pass to `rsync`. Useful to e.g. exclude large files from
220
+ being upload to each server.
221
+ * `$CHAKE_NODES`:
222
+ File containing the list of servers to be managed. Default: `nodes.yaml`.
223
+ * `$CHAKE_NODES_D`:
224
+ Directory containing node definition files servers to be managed. Default: `nodes.d`.
225
+ * `$CHAKE_TMPDIR`:
226
+ Directory used to store temporary cache files. Default: `tmp/chake`.
227
+
228
+ ## See also
229
+
230
+ * **rake(1)**, **chef-solo(1)**
231
+ * Chef documentation: https://docs.chef.io/
214
232
 
215
233
  ## Contributing
216
234
 
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ end
8
8
 
9
9
  pkg = Gem::Specification.load('chake.gemspec')
10
10
 
11
- task 'build:tarball' => [:build] do
11
+ task 'build:tarball' => 'bundler:build' do
12
12
  chdir 'pkg' do
13
13
  sh 'gem2tgz', "#{pkg.name}-#{pkg.version}.gem"
14
14
  end
data/lib/chake.rb CHANGED
@@ -9,7 +9,11 @@ require 'chake/node'
9
9
  require 'chake/readline'
10
10
 
11
11
  nodes_file = ENV['CHAKE_NODES'] || 'nodes.yaml'
12
+ nodes_directory = ENV['CHAKE_NODES_D'] || 'nodes.d'
12
13
  node_data = File.exists?(nodes_file) && YAML.load_file(nodes_file) || {}
14
+ Dir.glob(File.join(nodes_directory, '*.yaml')).sort.each do |f|
15
+ node_data.merge!(YAML.load_file(f))
16
+ end
13
17
  $nodes = node_data.map { |node,data| Chake::Node.new(node, data) }.reject(&:skip?).uniq(&:hostname)
14
18
  $chake_tmpdir = ENV.fetch('CHAKE_TMPDIR', 'tmp/chake')
15
19
 
@@ -28,6 +32,15 @@ EOF
28
32
  puts "[create] nodes.yaml"
29
33
  end
30
34
  end
35
+
36
+ if File.exist?('nodes.d')
37
+ puts '[exists] nodes.d/'
38
+ else
39
+ FileUtils.mkdir_p 'nodes.d'
40
+ puts '[ mkdir] nodes.d/'
41
+ end
42
+
43
+
31
44
  if File.exists?('config.rb')
32
45
  puts '[exists] config.rb'
33
46
  else
data/lib/chake/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Chake
2
- VERSION = "0.8"
2
+ VERSION = "0.9"
3
3
  end
data/man/.gitignore ADDED
@@ -0,0 +1 @@
1
+ chake.1*
data/man/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ task :default => 'man/chake.1'
2
+
3
+ file 'man/chake.1' => ['man/chake.1.ronn', 'man/readme2man.sed'] do
4
+ sh 'ronn --roff man/chake.1.ronn'
5
+ end
6
+
7
+ file 'man/chake.1.ronn' => 'README.md' do |t|
8
+ sh "sed -f man/readme2man.sed README.md > #{t.name} || (rm -f #{t.name}; false)"
9
+ end
10
+
11
+ task :install => 'man/chake.1' do
12
+ prefix = ENV['PREFIX'] || File.exists?('debian/rules') && '/usr' || '/usr/local'
13
+ target = [ENV["DESTDIR"], prefix , 'man/man1'].compact
14
+ man = File.join(*target)
15
+ sh 'install', '-d', '-m', '0755', man
16
+ sh 'install', '-m', '0644', 'man/chake.1', man
17
+ end
18
+
19
+ task :clean do
20
+ rm_f 'man/chake.1'
21
+ rm_f 'man/chake.1.ronn'
22
+ end
@@ -0,0 +1,4 @@
1
+ /^## Install/,/^[^#]/ d
2
+ /^## Contributing/,$ d
3
+
4
+ s/^##\(.*\)/## \U\1/
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chake
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.8'
4
+ version: '0.9'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antonio Terceiro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-07 00:00:00.000000000 Z
11
+ date: 2015-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -88,6 +88,9 @@ files:
88
88
  - lib/chake/node.rb
89
89
  - lib/chake/readline.rb
90
90
  - lib/chake/version.rb
91
+ - man/.gitignore
92
+ - man/Rakefile
93
+ - man/readme2man.sed
91
94
  - spec/chake/backend/local_spec.rb
92
95
  - spec/chake/backend/ssh_spec.rb
93
96
  - spec/chake/backend_spec.rb
@@ -113,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
116
  version: '0'
114
117
  requirements: []
115
118
  rubyforge_project:
116
- rubygems_version: 2.4.5
119
+ rubygems_version: 2.4.5.1
117
120
  signing_key:
118
121
  specification_version: 4
119
122
  summary: serverless configuration management tool for chef