chef-sync 0.0.2 → 0.0.4

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- chef-sync (0.0.1)
4
+ chef-sync (0.0.4)
5
5
  chef
6
6
 
7
7
  GEM
data/bin/chef-sync CHANGED
@@ -4,6 +4,17 @@ require 'optparse'
4
4
  require 'yaml'
5
5
  require 'chef-sync'
6
6
 
7
+ CONFIG_PATH = '.chef-sync/config'
8
+
9
+ DEFAULT_ROLE_MAPPING = {
10
+ 'rails_server' => [:app, :web],
11
+ 'rails_utility' => :resque
12
+ }
13
+
14
+ DEFAULT_CONFIG = {
15
+ 'roles' => DEFAULT_ROLE_MAPPING
16
+ }
17
+
7
18
  options = {
8
19
  :stages => true,
9
20
  :mongo => true,
@@ -18,6 +29,7 @@ Capistrano multi-stage configuration, mongo server configuration, etc
18
29
  EOL
19
30
 
20
31
  opts.on('-t', '--target [DIR]', "Target Directory (defaults to current)") {|v| options[:target] = v }
32
+ opts.on('-i', '--init', "Initialize Default Config in target DIR") {|v| options[:init_config] = v }
21
33
  opts.on('-s', '--[no-]stages', "Sync config/stages.yml") {|v| options[:stages] = v }
22
34
  opts.on('-m', '--[no-]mongo', "Sync config/mongo.yml") {|v| options[:mongo] = v }
23
35
  opts.on_tail("-h", "--help", "Show this message") do
@@ -43,10 +55,13 @@ end
43
55
  def sync_stages(base_dir)
44
56
  yaml_path = File.join(base_dir, 'config', 'stages.yml')
45
57
  transform_yaml(yaml_path) do |stages_hash|
46
- synchronized_roles = {
47
- 'rails_server' => [:app, :web],
48
- 'rails_utility' => :resque
49
- }
58
+
59
+ config_file = File.join(base_dir, CONFIG_PATH)
60
+ synchronized_roles = if File.exists?(config_file)
61
+ JSON.parse(File.read(config_file))['roles']
62
+ else
63
+ DEFAULT_ROLE_MAPPING
64
+ end
50
65
 
51
66
  puts "----------------------------------------------------------"
52
67
  puts "- Synchronizing Cap config/stages.yml w/ Chef Node Set"
@@ -69,8 +84,27 @@ def sync_mongo(base_dir)
69
84
  end
70
85
  end
71
86
 
87
+ def generate_default_config(base_dir)
88
+ config_file = File.join(base_dir, CONFIG_PATH)
89
+ if File.exists?(config_file)
90
+ puts "WARNING: #{config_file} exists."
91
+ puts "Continue? (CTRL+C to quit)"
92
+ gets
93
+ end
94
+
95
+ puts "----------------------------------------------------------"
96
+ puts "- Generating default config #{config_file}"
97
+ puts "----------------------------------------------------------"
98
+ %x{ mkdir -p #{File.dirname(config_file)} }
99
+ File.open(config_file, 'w') {|f| f.write( JSON.generate(DEFAULT_CONFIG) ) }
100
+ end
101
+
72
102
  puts 'Target: '+options[:target]
73
103
 
104
+ if options[:init_config]
105
+ generate_default_config(options[:target])
106
+ exit
107
+ end
74
108
 
75
109
  sync_stages(options[:target]) if options[:stages]
76
110
  sync_mongo(options[:target]) if options[:mongo]
@@ -7,7 +7,7 @@ module Chef::Sync::Utils
7
7
 
8
8
  def self.public_hostnames_by_role(role, environment)
9
9
  results = JSON.parse(exec_knife_node_search(role, environment))
10
- hostnames = Array(results['rows']).map {|node| node['ec2']['public_hostname'] }
10
+ hostnames = Array(results['rows']).map {|node| node['ec2.public_hostname'] }
11
11
  hostnames.sort
12
12
  end
13
13
 
@@ -38,7 +38,7 @@ module Chef::Sync::Utils
38
38
 
39
39
  private
40
40
  def self.exec_knife_node_search(role, environment)
41
- `knife search node 'role:#{ role } AND chef_environment:#{ environment }' -a ec2 -Fj`
41
+ `knife search node 'role:#{ role } AND chef_environment:#{ environment }' -a ec2.public_hostname -Fj`
42
42
  end
43
43
 
44
44
  def self.exec_knife_node_list(environment)
@@ -1,5 +1,5 @@
1
1
  module Chef
2
2
  module Sync
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -2,60 +2,12 @@
2
2
  "results": 2,
3
3
  "rows": [
4
4
  {
5
- "ec2": {
6
- "kernel_id": "aki-825ea7eb",
7
- "public_ipv4": "107.22.89.198",
8
- "reservation_id": "r-020ac561",
9
- "public_keys_0_openssh_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKUUG53xhavex/7g/mjlX8qnff6i+xtY+DiLzu1Z+OFu3SD6a3McGDt+vUp7RTTfnKLURMgHsxREomCMxAMrM6oksK+UU3sAD+8xOZRK2R+wQmcZg1aGPKZm6UteYxUSoyDK4RBw127FO63llrU/VBZZcsbxr3nZH3iIGvtL31M2KH4XC/p6YQ6urCIfARNuhAZKwMPtZCw0Y3fkCSzcViZ1LbMi2d1/kJYkVWY6bvV7IFkXAFhYyaFFlsD0ihk9jt/IOQUBLX0qzXSfQ72FvEqN7lGaw0B2c2C7+RBs1EE3ElgCT8ld+a0Sn+BWDwUaz7H7tN8+jRXPvmLtLSyUED katama-prod\n",
10
- "local_ipv4": "10.242.67.15",
11
- "local_hostname": "ip-10-242-67-15.ec2.internal",
12
- "security_groups": [
13
- "private_web"
14
- ],
15
- "hostname": "ip-10-242-67-15.ec2.internal",
16
- "ami_id": "ami-4fa37426",
17
- "placement_availability_zone": "us-east-1b",
18
- "public_hostname": "ec2-107-22-89-198.compute-1.amazonaws.com",
19
- "block_device_mapping_ami": "sda1",
20
- "ami_launch_index": "0",
21
- "ami_manifest_path": "ubuntu-us-east-1/images/ubuntu-oneiric-11.10-amd64-server-20120108.manifest.xml",
22
- "instance_id": "i-d1da9ab5",
23
- "userdata": null,
24
- "profile": "default-paravirtual",
25
- "instance_type": "m1.large",
26
- "block_device_mapping_root": "/dev/sda1",
27
- "block_device_mapping_ephemeral1": "sdc",
28
- "block_device_mapping_ephemeral0": "sdb"
29
- },
30
- "id": "resque103.dav"
5
+ "ec2.public_hostname": "ec2-107-22-89-198.compute-1.amazonaws.com",
6
+ "id": "imagetranscode103.dav"
31
7
  },
32
8
  {
33
- "ec2": {
34
- "profile": "default-paravirtual",
35
- "ami_id": "ami-4fa37426",
36
- "local_ipv4": "10.46.214.63",
37
- "local_hostname": "ip-10-46-214-63.ec2.internal",
38
- "public_ipv4": "23.20.177.134",
39
- "hostname": "ip-10-46-214-63.ec2.internal",
40
- "userdata": null,
41
- "security_groups": [
42
- "private_web"
43
- ],
44
- "reservation_id": "r-d0f53ab3",
45
- "ami_launch_index": "0",
46
- "kernel_id": "aki-825ea7eb",
47
- "block_device_mapping_ephemeral1": "sdc",
48
- "placement_availability_zone": "us-east-1a",
49
- "block_device_mapping_ephemeral0": "sdb",
50
- "public_hostname": "ec2-23-20-177-134.compute-1.amazonaws.com",
51
- "instance_id": "i-6fce8e0b",
52
- "instance_type": "m1.large",
53
- "ami_manifest_path": "ubuntu-us-east-1/images/ubuntu-oneiric-11.10-amd64-server-20120108.manifest.xml",
54
- "public_keys_0_openssh_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKUUG53xhavex/7g/mjlX8qnff6i+xtY+DiLzu1Z+OFu3SD6a3McGDt+vUp7RTTfnKLURMgHsxREomCMxAMrM6oksK+UU3sAD+8xOZRK2R+wQmcZg1aGPKZm6UteYxUSoyDK4RBw127FO63llrU/VBZZcsbxr3nZH3iIGvtL31M2KH4XC/p6YQ6urCIfARNuhAZKwMPtZCw0Y3fkCSzcViZ1LbMi2d1/kJYkVWY6bvV7IFkXAFhYyaFFlsD0ihk9jt/IOQUBLX0qzXSfQ72FvEqN7lGaw0B2c2C7+RBs1EE3ElgCT8ld+a0Sn+BWDwUaz7H7tN8+jRXPvmLtLSyUED katama-prod\n",
55
- "block_device_mapping_root": "/dev/sda1",
56
- "block_device_mapping_ami": "sda1"
57
- },
58
- "id": "resque102.dav"
9
+ "ec2.public_hostname": "ec2-23-20-177-134.compute-1.amazonaws.com",
10
+ "id": "qa-imagetranscode001.hud"
59
11
  }
60
12
  ]
61
- }
13
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-03 00:00:00.000000000 Z
12
+ date: 2012-05-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef
@@ -113,12 +113,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
113
  - - ! '>='
114
114
  - !ruby/object:Gem::Version
115
115
  version: '0'
116
+ segments:
117
+ - 0
118
+ hash: 2457399180150779435
116
119
  required_rubygems_version: !ruby/object:Gem::Requirement
117
120
  none: false
118
121
  requirements:
119
122
  - - ! '>='
120
123
  - !ruby/object:Gem::Version
121
124
  version: '0'
125
+ segments:
126
+ - 0
127
+ hash: 2457399180150779435
122
128
  requirements: []
123
129
  rubyforge_project:
124
130
  rubygems_version: 1.8.23