ironfan 3.1.0.rc1 → 3.1.1
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/.yardopts +5 -0
- data/CHANGELOG.md +18 -5
- data/README.md +34 -115
- data/TODO.md +36 -8
- data/VERSION +1 -1
- data/cluster_chef-knife.gemspec +2 -3
- data/ironfan.gemspec +29 -4
- data/lib/chef/knife/cluster_bootstrap.rb +1 -1
- data/lib/chef/knife/cluster_kick.rb +3 -3
- data/lib/chef/knife/cluster_kill.rb +1 -1
- data/lib/chef/knife/cluster_launch.rb +3 -3
- data/lib/chef/knife/cluster_list.rb +1 -1
- data/lib/chef/knife/cluster_proxy.rb +5 -5
- data/lib/chef/knife/cluster_show.rb +3 -2
- data/lib/chef/knife/cluster_ssh.rb +2 -2
- data/lib/chef/knife/cluster_start.rb +1 -2
- data/lib/chef/knife/cluster_stop.rb +2 -1
- data/lib/chef/knife/cluster_sync.rb +2 -2
- data/lib/chef/knife/cluster_vagrant.rb +144 -0
- data/lib/chef/knife/{knife_common.rb → ironfan_knife_common.rb} +8 -4
- data/lib/chef/knife/{generic_command.rb → ironfan_script.rb} +1 -1
- data/lib/chef/knife/vagrant/ironfan_environment.rb +18 -0
- data/lib/chef/knife/vagrant/ironfan_provisioners.rb +27 -0
- data/lib/chef/knife/vagrant/skeleton_vagrantfile.rb +116 -0
- data/lib/ironfan/chef_layer.rb +2 -2
- data/lib/ironfan/fog_layer.rb +16 -13
- data/lib/ironfan/private_key.rb +3 -3
- data/lib/ironfan/server.rb +9 -6
- data/lib/ironfan/server_slice.rb +11 -0
- data/notes/Home.md +30 -0
- data/notes/INSTALL-cloud_setup.md +100 -0
- data/notes/INSTALL.md +135 -0
- data/notes/Knife-Cluster-Commands.md +8 -0
- data/notes/Silverware.md +5 -0
- data/notes/aws_console_screenshot.jpg +0 -0
- data/notes/cookbook-versioning.md +11 -0
- data/notes/declaring_volumes.md +3 -0
- data/notes/design_notes-ci_testing.md +169 -0
- data/notes/design_notes-cookbook_event_ordering.md +212 -0
- data/notes/design_notes-dsl_object.md +55 -0
- data/notes/design_notes-meta_discovery.md +59 -0
- data/notes/ec2-pricing_and_capacity.md +63 -0
- data/notes/ironfan_homebase_layout.md +94 -0
- data/notes/named-cloud-objects.md +11 -0
- data/notes/rake_tasks.md +25 -0
- data/notes/renamed-recipes.txt +142 -0
- data/notes/style_guide.md +251 -0
- data/notes/tips_and_troubleshooting.md +83 -0
- metadata +50 -26
@@ -0,0 +1,83 @@
|
|
1
|
+
## Tips and Notes
|
2
|
+
|
3
|
+
### EC2 Notes Instance attributes: `disable_api_termination` and `delete_on_termination`
|
4
|
+
|
5
|
+
To set `delete_on_termination` to 'true' after the fact, run the following (modify the instance and volume to suit):
|
6
|
+
|
7
|
+
```
|
8
|
+
ec2-modify-instance-attribute -v i-0704be6c --block-device-mapping /dev/sda1=vol-XX8d2c80::true
|
9
|
+
```
|
10
|
+
|
11
|
+
If you set `disable_api_termination` to true, in order to terminate the node run
|
12
|
+
```
|
13
|
+
ec2-modify-instance-attribute -v i-0704be6c --disable-api-termination false
|
14
|
+
```
|
15
|
+
|
16
|
+
To view whether an attached volume is deleted when the machine is terminated:
|
17
|
+
|
18
|
+
```
|
19
|
+
# show volumes that will be deleted
|
20
|
+
ec2-describe-volumes --filter "attachment.delete-on-termination=true"
|
21
|
+
```
|
22
|
+
|
23
|
+
You can't (as far as I know) alter the delete-on-termination flag of a running volume. Crazy, huh?
|
24
|
+
|
25
|
+
### EC2: See your userdata
|
26
|
+
|
27
|
+
curl http://169.254.169.254/latest/user-data
|
28
|
+
|
29
|
+
### EBS Volumes for a persistent HDFS
|
30
|
+
|
31
|
+
* Make one volume and format for XFS:
|
32
|
+
`$ sudo mkfs.xfs -f /dev/sdh1`
|
33
|
+
* options "defaults,nouuid,noatime" give good results. The 'nouuid' part
|
34
|
+
prevents errors when mounting multiple volumes from the same snapshot.
|
35
|
+
* poke a file onto the drive :
|
36
|
+
datename=`date +%Y%m%d`
|
37
|
+
sudo bash -c "(echo $datename ; df /data/ebs1 ) > /data/ebs1/xfs-created-at-$datename.txt"
|
38
|
+
|
39
|
+
|
40
|
+
If you want to grow the drive:
|
41
|
+
* take a snapshot.
|
42
|
+
* make a new volume from it
|
43
|
+
* mount that, and run `sudo xfs_growfs`. You *should* have the volume mounted, and should stop anything that would be working the volume hard.
|
44
|
+
|
45
|
+
### Hadoop: On-the-fly backup of your namenode metadata
|
46
|
+
|
47
|
+
bkupdir=/ebs2/hadoop-nn-backup/`date +"%Y%m%d"`
|
48
|
+
|
49
|
+
for srcdir in /ebs*/hadoop/hdfs/ /home/hadoop/gibbon/hdfs/ ; do
|
50
|
+
destdir=$bkupdir/$srcdir ; echo $destdir ;
|
51
|
+
sudo mkdir -p $destdir ;
|
52
|
+
done
|
53
|
+
|
54
|
+
|
55
|
+
### NFS: Halp I am using an NFS-mounted /home and now I can't log in as ubuntu
|
56
|
+
|
57
|
+
Say you set up an NFS server 'core-homebase-0' (in the 'core' cluster) to host and serve out `/home` directory; and a machine 'awesome-webserver-0' (in the 'awesome' cluster), that is an NFS client.
|
58
|
+
|
59
|
+
In each case, when the machine was born EC2 created a `/home/ubuntu/.ssh/authorized_keys` file listing only the single approved machine keypair -- 'core' for the core cluster, 'awesome' for the awesome cluster.
|
60
|
+
|
61
|
+
When chef client runs, however, it mounts the NFS share at /home. This then masks the actual /home directory -- nothing that's on the base directory tree shows up. Which means that after chef runs, the /home/ubuntu/.ssh/authorized_keys file on awesome-webserver-0 is the one for the *'core'* cluster, not the *'awesome'* cluster.
|
62
|
+
|
63
|
+
The solution is to use the cookbook ironfan provides -- it moves the 'ubuntu' user's home directory to an alternative path not masked by the NFS.
|
64
|
+
|
65
|
+
|
66
|
+
### NFS: Problems starting NFS server on ubuntu maverick
|
67
|
+
|
68
|
+
For problems starting NFS server on ubuntu maverick systems, read, understand and then run /tmp/fix_nfs_on_maverick_amis.sh -- See "this thread for more":http://fossplanet.com/f10/[ec2ubuntu]-not-starting-nfs-kernel-daemon-no-support-current-kernel-90948/
|
69
|
+
|
70
|
+
|
71
|
+
### Git deploys: My git deploy recipe has gone limp
|
72
|
+
|
73
|
+
Suppose you are using the @git@ resource to deploy a recipe (@george@ for sake of example). If @/var/chef/cache/revision_deploys/var/www/george@ exists then *nothing* will get deployed, even if /var/www/george/{release_sha} is empty or screwy. If git deploy is acting up in any way, nuke that cache from orbit -- it's the only way to be sure.
|
74
|
+
|
75
|
+
$ sudo rm -rf /var/www/george/{release_sha} /var/chef/cache/revision_deploys/var/www/george
|
76
|
+
|
77
|
+
### Runit services : 'fail: XXX: unable to change to service directory: file does not exist'
|
78
|
+
|
79
|
+
Your service is probably installed but removed from runit's purview; check the `/etc/service` symlink. All of the following should be true:
|
80
|
+
|
81
|
+
* directory `/etc/sv/foo`, containing file `run` and dirs `log` and `supervise`
|
82
|
+
* `/etc/init.d/foo` is symlinked to `/usr/bin/sv`
|
83
|
+
* `/etc/servics/foo` is symlinked tp `/etc/sv/foo`
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ironfan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
5
|
-
prerelease:
|
4
|
+
version: 3.1.1
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Infochimps
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: chef
|
16
|
-
requirement: &
|
16
|
+
requirement: &70189981680580 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.10.4
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70189981680580
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: fog
|
27
|
-
requirement: &
|
27
|
+
requirement: &70189981668780 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.1.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70189981668780
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: formatador
|
38
|
-
requirement: &
|
38
|
+
requirement: &70189981667980 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.2.1
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70189981667980
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: gorillib
|
49
|
-
requirement: &
|
49
|
+
requirement: &70189981667180 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.1.7
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70189981667180
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bundler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70189981666180 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '1'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70189981666180
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &70189981665440 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '1.6'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70189981665440
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &70189981664920 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '2.5'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70189981664920
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: yard
|
93
|
-
requirement: &
|
93
|
+
requirement: &70189981664260 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0.6'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70189981664260
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: configliere
|
104
|
-
requirement: &
|
104
|
+
requirement: &70189981660620 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
version: 0.4.8
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70189981660620
|
113
113
|
description: ironfan allows you to orchestrate not just systems but clusters of machines.
|
114
114
|
It includes a powerful layer on top of knife and a collection of cloud cookbooks.
|
115
115
|
email: coders@infochimps.com
|
@@ -121,6 +121,7 @@ extra_rdoc_files:
|
|
121
121
|
files:
|
122
122
|
- .gitignore
|
123
123
|
- .rspec
|
124
|
+
- .yardopts
|
124
125
|
- CHANGELOG.md
|
125
126
|
- Gemfile
|
126
127
|
- LICENSE.md
|
@@ -149,8 +150,12 @@ files:
|
|
149
150
|
- lib/chef/knife/cluster_start.rb
|
150
151
|
- lib/chef/knife/cluster_stop.rb
|
151
152
|
- lib/chef/knife/cluster_sync.rb
|
152
|
-
- lib/chef/knife/
|
153
|
-
- lib/chef/knife/
|
153
|
+
- lib/chef/knife/cluster_vagrant.rb
|
154
|
+
- lib/chef/knife/ironfan_knife_common.rb
|
155
|
+
- lib/chef/knife/ironfan_script.rb
|
156
|
+
- lib/chef/knife/vagrant/ironfan_environment.rb
|
157
|
+
- lib/chef/knife/vagrant/ironfan_provisioners.rb
|
158
|
+
- lib/chef/knife/vagrant/skeleton_vagrantfile.rb
|
154
159
|
- lib/ironfan.rb
|
155
160
|
- lib/ironfan/chef_layer.rb
|
156
161
|
- lib/ironfan/cloud.rb
|
@@ -167,6 +172,25 @@ files:
|
|
167
172
|
- lib/ironfan/server.rb
|
168
173
|
- lib/ironfan/server_slice.rb
|
169
174
|
- lib/ironfan/volume.rb
|
175
|
+
- notes/Home.md
|
176
|
+
- notes/INSTALL-cloud_setup.md
|
177
|
+
- notes/INSTALL.md
|
178
|
+
- notes/Knife-Cluster-Commands.md
|
179
|
+
- notes/Silverware.md
|
180
|
+
- notes/aws_console_screenshot.jpg
|
181
|
+
- notes/cookbook-versioning.md
|
182
|
+
- notes/declaring_volumes.md
|
183
|
+
- notes/design_notes-ci_testing.md
|
184
|
+
- notes/design_notes-cookbook_event_ordering.md
|
185
|
+
- notes/design_notes-dsl_object.md
|
186
|
+
- notes/design_notes-meta_discovery.md
|
187
|
+
- notes/ec2-pricing_and_capacity.md
|
188
|
+
- notes/ironfan_homebase_layout.md
|
189
|
+
- notes/named-cloud-objects.md
|
190
|
+
- notes/rake_tasks.md
|
191
|
+
- notes/renamed-recipes.txt
|
192
|
+
- notes/style_guide.md
|
193
|
+
- notes/tips_and_troubleshooting.md
|
170
194
|
- spec/ironfan/cluster_spec.rb
|
171
195
|
- spec/ironfan/facet_spec.rb
|
172
196
|
- spec/ironfan/server_slice_spec.rb
|
@@ -192,13 +216,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
192
216
|
version: '0'
|
193
217
|
segments:
|
194
218
|
- 0
|
195
|
-
hash:
|
219
|
+
hash: -2335380690962978772
|
196
220
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
221
|
none: false
|
198
222
|
requirements:
|
199
|
-
- - ! '
|
223
|
+
- - ! '>='
|
200
224
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
225
|
+
version: '0'
|
202
226
|
requirements: []
|
203
227
|
rubyforge_project:
|
204
228
|
rubygems_version: 1.8.15
|