ironfan 3.1.3 → 3.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardopts +6 -1
- data/Gemfile +5 -2
- data/Guardfile +9 -0
- data/README.md +21 -20
- data/VERSION +1 -1
- data/ironfan.gemspec +16 -9
- data/lib/ironfan/cloud.rb +1 -1
- data/lib/ironfan/dsl_object.rb +1 -1
- data/lib/ironfan/server_slice.rb +2 -2
- data/notes/Home.md +23 -9
- data/notes/INSTALL-cloud_setup.md +4 -4
- data/notes/INSTALL.md +58 -64
- data/notes/advanced-superpowers.md +16 -0
- data/notes/{aws_console_screenshot.jpg → aws_servers.jpg} +0 -0
- data/notes/aws_user_key.png +0 -0
- data/notes/core_concepts.md +189 -0
- data/notes/declaring_volumes.md +1 -1
- data/notes/design_notes-aspect_oriented_devops.md +36 -0
- data/notes/design_notes-cookbook_event_ordering.md +37 -0
- data/notes/design_notes-dsl_object.md +63 -9
- data/notes/homebase-layout.txt +102 -0
- data/notes/knife-cluster-commands.md +18 -0
- data/notes/opscode_org_key.png +0 -0
- data/notes/opscode_user_key.png +0 -0
- data/notes/philosophy.md +14 -0
- data/notes/{Silverware.md → silverware.md} +0 -0
- data/notes/style_guide.md +100 -51
- data/notes/tips_and_troubleshooting.md +9 -0
- data/notes/walkthrough-hadoop.md +168 -0
- data/notes/walkthrough-web.md +166 -0
- metadata +35 -36
- data/notes/Knife-Cluster-Commands.md +0 -8
- data/notes/ironfan_homebase_layout.md +0 -94
data/.yardopts
CHANGED
data/Gemfile
CHANGED
@@ -11,14 +11,17 @@ group :development do
|
|
11
11
|
gem 'rspec', "~> 2.5"
|
12
12
|
gem 'yard', "~> 0.6"
|
13
13
|
gem 'redcarpet', "~> 2"
|
14
|
-
gem 'configliere', "~> 0.4.8"
|
15
14
|
end
|
16
15
|
|
17
16
|
group :test do
|
18
17
|
gem 'spork', ">= 0.9.0", :platform => :mri
|
19
18
|
gem 'rcov', ">= 0.9.9", :platform => :ruby_18
|
20
19
|
gem 'simplecov', ">= 0.5", :platform => :ruby_19
|
21
|
-
|
20
|
+
#
|
21
|
+
gem 'ruby_gntp'
|
22
|
+
gem 'guard', "~> 1"
|
23
|
+
gem 'guard-rspec'
|
24
|
+
gem 'guard-yard'
|
22
25
|
end
|
23
26
|
|
24
27
|
group :support do
|
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -13,29 +13,30 @@ This repo implements:
|
|
13
13
|
|
14
14
|
To jump right into using Ironfan, follow our [Installation Instructions](https://github.com/infochimps-labs/ironfan/wiki/INSTALL). For an explanatory tour, check out our [Hadoop Walkthrough](https://github.com/infochimps-labs/ironfan/wiki/INSTALL). Please file all issues on [Ironfan issues](https://github.com/infochimps-labs/ironfan/issues).
|
15
15
|
|
16
|
-
|
16
|
+
### Tools
|
17
17
|
|
18
|
-
|
18
|
+
Ironfan consists of the following Toolset:
|
19
19
|
|
20
|
-
|
20
|
+
* [ironfan-homebase](https://github.com/infochimps-labs/ironfan-homebase): centralizes the cookbooks, roles and clusters. A solid foundation for any chef user.
|
21
|
+
* [ironfan gem](https://github.com/infochimps-labs/ironfan):
|
22
|
+
- core models to describe your system diagram with a clean, expressive domain-specific language
|
23
|
+
- knife plugins to orchestrate clusters of machines using simple commands like `knife cluster launch`
|
24
|
+
- logic to coordinate truth among chef server and cloud providers.
|
25
|
+
* [ironfan-pantry](https://github.com/infochimps-labs/ironfan-pantry): Our collection of industrial-strength, cloud-ready recipes for Hadoop, HBase, Cassandra, Elasticsearch, Zabbix and more.
|
26
|
+
* [silverware cookbook](https://github.com/infochimps-labs/ironfan-homebase/tree/master/cookbooks/silverware): coordinate discovery of services ("list all the machines for `awesome_webapp`, that I might load balance them") and aspects ("list all components that write logs, that I might logrotate them, or that I might monitor the free space on their volumes".
|
21
27
|
|
22
|
-
|
23
|
-
* [ironfan gem](https://github.com/infochimps-labs/ironfan): The core Ironfan models, and Knife plugins to orchestrate machines and coordinate truth among your homebase, cloud and chef server. It comes with [ironfan-homebase](https://github.com/infochimps-labs/ironfan-homebase).
|
24
|
-
* [ironfan-pantry](https://github.com/infochimps-labs/ironfan-pantry): Our collection of industrial-strength, cloud-ready recipes for Hadoop, HBase, Cassandra, Elasticsearch, Zabbix and more.
|
25
|
-
* [silverware cookbook](https://github.com/infochimps-labs/ironfan-pantry/tree/master/cookbooks/silverware): Helps you coordinate discovery of services ("list all the machines for `awesome_webapp`, that I might load balance them") and aspects ("list all components that write logs, that I might logrotate them, or that I might monitor the free space on their volumes"). Found within the [ironfan-pantry](https://github.com/infochimps-labs/ironfan-pantry).
|
26
|
-
|
27
|
-
###Core Documentation:
|
28
|
-
|
29
|
-
* [ironfan wiki](https://github.com/infochimps-labs/ironfan/wiki): High-level documentation and install instructions.
|
30
|
-
* [ironfan issues](https://github.com/infochimps-labs/ironfan/issues): Bugs or questions and feature requests for *any* part of the Ironfan toolset.
|
31
|
-
* [ironfan gem docs](http://rdoc.info/gems/ironfan): Rdoc docs for Ironfan.
|
32
|
-
|
33
|
-
## What is Ironfan?
|
34
|
-
Ironfan is a systems provisioning and deployment tool. Ironfan automates not only machine configuration, but entire systems configuration to enable the entire Big Data stack, including tools for _data ingestion_, _scraping_, _storage_, _computation_, and _monitoring_.
|
35
|
-
|
36
|
-
Ironfan builds on Chef, but is opinionated about its architecture, which allows broader integration between components. It assumes a source repository, a central Chef Server, and a modern POSIX-compliant operating system for a base image. Currently, it works best with Git, Amazon Web Services, Ubuntu 11.04, with exploration into other virtualization platforms (Vagrant, etc.) and operating systems (Centos, FreeSBD, etc) ongoing, both inside and outside of Infochimps.
|
37
|
-
|
38
|
-
To understand the Philosophy behind how we use Chef go [here](https://github.com/infochimps-labs/ironfan/wiki/Philosophy).
|
28
|
+
### Documentation
|
39
29
|
|
30
|
+
* [ironfan wiki](https://github.com/infochimps-labs/ironfan/wiki): high-level documentation and install instructions
|
31
|
+
* [Index of wiki pages](https://github.com/infochimps-labs/ironfan/wiki/_pages)
|
32
|
+
* [ironfan issues](https://github.com/infochimps-labs/ironfan/issues): bugs, questions and feature requests for *any* part of the ironfan toolset.
|
33
|
+
* [ironfan gem docs](http://rdoc.info/gems/ironfan): rdoc docs for ironfan
|
34
|
+
* Ironfan powers the [Infochimps Platform](http://www.infochimps.com/how-it-works), our scalable enterprise big data platform. Ironfan Enterprise adds zero-configuration logging, monitoring and a compelling UI.
|
35
|
+
* [Ironfan Screencast](http://bit.ly/ironfan-hadoop-in-20-minutes) -- build a Hadoop cluster from scratch in 20 minutes.
|
40
36
|
|
37
|
+
### The Ironfan Way
|
41
38
|
|
39
|
+
* [Core Concepts](core_concepts) -- Components, Announcements, Amenities and more.
|
40
|
+
* [Philosophy](philosophy) -- best practices and lessons learned
|
41
|
+
* [Style Guide](style_guide) -- common attribute names, how and when to include other cookbooks, and more
|
42
|
+
* [Homebase Layout](homebase-layout) -- how this homebase is organized, and why
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.1.
|
1
|
+
3.1.4
|
data/ironfan.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "ironfan"
|
8
|
-
s.version = "3.1.
|
8
|
+
s.version = "3.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Infochimps"]
|
12
|
-
s.date = "2012-02-
|
12
|
+
s.date = "2012-02-24"
|
13
13
|
s.description = "ironfan allows you to orchestrate not just systems but clusters of machines. It includes a powerful layer on top of knife and a collection of cloud cookbooks."
|
14
14
|
s.email = "coders@infochimps.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
".yardopts",
|
23
23
|
"CHANGELOG.md",
|
24
24
|
"Gemfile",
|
25
|
+
"Guardfile",
|
25
26
|
"LICENSE.md",
|
26
27
|
"README.md",
|
27
28
|
"Rakefile",
|
@@ -73,22 +74,31 @@ Gem::Specification.new do |s|
|
|
73
74
|
"notes/Home.md",
|
74
75
|
"notes/INSTALL-cloud_setup.md",
|
75
76
|
"notes/INSTALL.md",
|
76
|
-
"notes/
|
77
|
-
"notes/
|
78
|
-
"notes/
|
77
|
+
"notes/advanced-superpowers.md",
|
78
|
+
"notes/aws_servers.jpg",
|
79
|
+
"notes/aws_user_key.png",
|
79
80
|
"notes/cookbook-versioning.md",
|
81
|
+
"notes/core_concepts.md",
|
80
82
|
"notes/declaring_volumes.md",
|
83
|
+
"notes/design_notes-aspect_oriented_devops.md",
|
81
84
|
"notes/design_notes-ci_testing.md",
|
82
85
|
"notes/design_notes-cookbook_event_ordering.md",
|
83
86
|
"notes/design_notes-dsl_object.md",
|
84
87
|
"notes/design_notes-meta_discovery.md",
|
85
88
|
"notes/ec2-pricing_and_capacity.md",
|
86
|
-
"notes/
|
89
|
+
"notes/homebase-layout.txt",
|
90
|
+
"notes/knife-cluster-commands.md",
|
87
91
|
"notes/named-cloud-objects.md",
|
92
|
+
"notes/opscode_org_key.png",
|
93
|
+
"notes/opscode_user_key.png",
|
94
|
+
"notes/philosophy.md",
|
88
95
|
"notes/rake_tasks.md",
|
89
96
|
"notes/renamed-recipes.txt",
|
97
|
+
"notes/silverware.md",
|
90
98
|
"notes/style_guide.md",
|
91
99
|
"notes/tips_and_troubleshooting.md",
|
100
|
+
"notes/walkthrough-hadoop.md",
|
101
|
+
"notes/walkthrough-web.md",
|
92
102
|
"spec/ironfan/cluster_spec.rb",
|
93
103
|
"spec/ironfan/facet_spec.rb",
|
94
104
|
"spec/ironfan/server_slice_spec.rb",
|
@@ -120,7 +130,6 @@ Gem::Specification.new do |s|
|
|
120
130
|
s.add_development_dependency(%q<rspec>, ["~> 2.5"])
|
121
131
|
s.add_development_dependency(%q<yard>, ["~> 0.6"])
|
122
132
|
s.add_development_dependency(%q<redcarpet>, ["~> 2"])
|
123
|
-
s.add_development_dependency(%q<configliere>, ["~> 0.4.8"])
|
124
133
|
else
|
125
134
|
s.add_dependency(%q<chef>, ["~> 0.10.4"])
|
126
135
|
s.add_dependency(%q<fog>, ["~> 1.1.1"])
|
@@ -131,7 +140,6 @@ Gem::Specification.new do |s|
|
|
131
140
|
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
132
141
|
s.add_dependency(%q<yard>, ["~> 0.6"])
|
133
142
|
s.add_dependency(%q<redcarpet>, ["~> 2"])
|
134
|
-
s.add_dependency(%q<configliere>, ["~> 0.4.8"])
|
135
143
|
end
|
136
144
|
else
|
137
145
|
s.add_dependency(%q<chef>, ["~> 0.10.4"])
|
@@ -143,7 +151,6 @@ Gem::Specification.new do |s|
|
|
143
151
|
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
144
152
|
s.add_dependency(%q<yard>, ["~> 0.6"])
|
145
153
|
s.add_dependency(%q<redcarpet>, ["~> 2"])
|
146
|
-
s.add_dependency(%q<configliere>, ["~> 0.4.8"])
|
147
154
|
end
|
148
155
|
end
|
149
156
|
|
data/lib/ironfan/cloud.rb
CHANGED
data/lib/ironfan/dsl_object.rb
CHANGED
data/lib/ironfan/server_slice.rb
CHANGED
@@ -236,7 +236,7 @@ module Ironfan
|
|
236
236
|
#
|
237
237
|
# @yield each server, in turn
|
238
238
|
#
|
239
|
-
# @return array (in same order as servers) of each block's result
|
239
|
+
# @return [Array] array (in same order as servers) of each block's result
|
240
240
|
def parallelize
|
241
241
|
servers.map do |svr|
|
242
242
|
sleep(0.1) # avoid hammering with simultaneous requests
|
@@ -251,7 +251,7 @@ module Ironfan
|
|
251
251
|
# @param [Symbol] method -- method to call on each server
|
252
252
|
# @param [Boolean] threaded -- execute each call in own thread
|
253
253
|
#
|
254
|
-
# @return array (in same order as servers) of results for that method
|
254
|
+
# @return [Array] array (in same order as servers) of results for that method
|
255
255
|
def delegate_to_servers method, threaded = true
|
256
256
|
if threaded # Call in threads
|
257
257
|
threads = parallelize{|svr| svr.send(method) }
|
data/notes/Home.md
CHANGED
@@ -1,10 +1,19 @@
|
|
1
1
|
## Overview
|
2
2
|
|
3
|
-
The
|
3
|
+
Ironfan, the foundation of The Infochimps Platform, is an expressive toolset for constructing scalable, resilient architectures. It works in the cloud, in the data center, and on your laptop, and it makes your system diagram visible and inevitable. Inevitable systems coordinate automatically to interconnect, removing the hassle of manual configuration of connection points (and the associated danger of human error).
|
4
|
+
For more information about Ironfan and The Infochimps Platform, visit the [Infochimps Blog introducing the Infochimps Platform](http://blog.infochimps.com/2012/02/22/infochimps-platform/).
|
4
5
|
|
5
|
-
|
6
|
+
## Getting Started
|
6
7
|
|
7
|
-
|
8
|
+
* [Installation Instructions](https://github.com/infochimps-labs/ironfan/wiki/INSTALL)
|
9
|
+
* [Hadoop Walkthrough](https://github.com/infochimps-labs/ironfan/wiki/INSTALL)
|
10
|
+
* [Index of wiki pages](https://github.com/infochimps-labs/ironfan/wiki/_pages)
|
11
|
+
* Ironfan powers the [Infochimps Platform](http://www.infochimps.com/how-it-works), our scalable enterprise big data platform. Ironfan Enterprise adds zero-configuration logging, monitoring and a compelling UI.
|
12
|
+
* [Ironfan Screencast](http://bit.ly/ironfan-hadoop-in-20-minutes) -- build a Hadoop cluster from scratch in 20 minutes.
|
13
|
+
|
14
|
+
### Tools
|
15
|
+
|
16
|
+
Ironfan consists of the following Toolset:
|
8
17
|
|
9
18
|
* [ironfan-homebase](https://github.com/infochimps-labs/ironfan-homebase): centralizes the cookbooks, roles and clusters. A solid foundation for any chef user.
|
10
19
|
* [ironfan gem](https://github.com/infochimps-labs/ironfan):
|
@@ -13,18 +22,23 @@ Ironfan consists of the following:
|
|
13
22
|
- logic to coordinate truth among chef server and cloud providers.
|
14
23
|
* [ironfan-pantry](https://github.com/infochimps-labs/ironfan-pantry): Our collection of industrial-strength, cloud-ready recipes for Hadoop, HBase, Cassandra, Elasticsearch, Zabbix and more.
|
15
24
|
* [silverware cookbook](https://github.com/infochimps-labs/ironfan-homebase/tree/master/cookbooks/silverware): coordinate discovery of services ("list all the machines for `awesome_webapp`, that I might load balance them") and aspects ("list all components that write logs, that I might logrotate them, or that I might monitor the free space on their volumes".
|
16
|
-
|
25
|
+
|
26
|
+
### Documentation
|
17
27
|
|
18
28
|
* [ironfan wiki](https://github.com/infochimps-labs/ironfan/wiki): high-level documentation and install instructions
|
29
|
+
* [Index of wiki pages](https://github.com/infochimps-labs/ironfan/wiki/_pages)
|
19
30
|
* [ironfan issues](https://github.com/infochimps-labs/ironfan/issues): bugs, questions and feature requests for *any* part of the ironfan toolset.
|
20
31
|
* [ironfan gem docs](http://rdoc.info/gems/ironfan): rdoc docs for ironfan
|
21
32
|
|
22
|
-
|
33
|
+
### The Ironfan Way
|
23
34
|
|
24
|
-
|
35
|
+
* [Core Concepts](core_concepts) -- Components, Announcements, Amenities and more.
|
36
|
+
* [Philosophy](philosopy) -- best practices and lessons learned
|
37
|
+
* [Style Guide](style_guide) -- common attribute names, how and when to include other cookbooks, and more
|
38
|
+
* [Homebase Layout](homebase-layout) -- how this homebase is organized, and why
|
25
39
|
|
26
|
-
|
40
|
+
__________________________________________________________________________
|
41
|
+
__________________________________________________________________________
|
42
|
+
__________________________________________________________________________
|
27
43
|
|
28
44
|
|
29
|
-
* [INSTALL](https://github.com/infochimps-labs/ironfan/wiki/INSTALL) -- How to get started
|
30
|
-
* ...
|
@@ -22,7 +22,7 @@
|
|
22
22
|
* create AWS account
|
23
23
|
- [sign up for AWS + credit card + password]
|
24
24
|
- make IAM users for admins
|
25
|
-
- add your IAM keys into your {credentials}/knife-user
|
25
|
+
- add your IAM keys into your `{credentials}/knife-user`
|
26
26
|
|
27
27
|
* create opscode account
|
28
28
|
- download org keys, put in the credentials repo
|
@@ -87,14 +87,14 @@
|
|
87
87
|
sudo umount /dev/xvdh
|
88
88
|
exit
|
89
89
|
```
|
90
|
-
* Back in the AWS console, snapshot the volume and name it {org}-home_drive
|
91
|
-
# While you're in there, make {org}-resizable_1gb a 'Minimum-sized snapshot, resizable -- use xfs_growfs to resize after launch' snapshot.
|
90
|
+
* Back in the AWS console, snapshot the volume and name it `{org}-home_drive`. Delete the original volume as it is not needed anymore.
|
91
|
+
# While you're in there, make `{org}-resizable_1gb` a 'Minimum-sized snapshot, resizable -- use `xfs_growfs` to resize after launch' snapshot.
|
92
92
|
|
93
93
|
* Paste the snapshot id into your cnc_cluster definition file.
|
94
94
|
- ssh into the newly launched cnc_cluster-nfs.
|
95
95
|
- You should restart the machine via the AWS console (may or may not be necessary, do anyway).
|
96
96
|
|
97
97
|
* Manipulate security groups
|
98
|
-
- nfs_server group should open all UDP ports and all TCP ports to nfs_client group
|
98
|
+
- `nfs_server` group should open all UDP ports and all TCP ports to `nfs_client` group
|
99
99
|
|
100
100
|
* Change /etc/ssh/sshd_config to be passwordful and restart the ssh service
|
data/notes/INSTALL.md
CHANGED
@@ -1,59 +1,49 @@
|
|
1
|
+
# Ironfan Installation Instructions
|
2
|
+
|
1
3
|
First of all, every Chef installation needs a Chef Homebase. Chef Homebase is the place where cookbooks, roles, config files and other artifacts for managing systems with Chef will live. Store this homebase in a version control system such as Git and treat it like source code.
|
2
4
|
|
3
|
-
|
5
|
+
## Conventions
|
4
6
|
|
5
7
|
In all of the below,
|
6
8
|
|
7
9
|
* `{homebase}`: is the directory that holds your Chef cookbooks, roles and so forth. For example, this file is in `{homebase}/README.md`.
|
8
|
-
|
9
10
|
* `{username}`: identifies your personal Chef client name: the thing you use to log into the Chef WebUI.
|
10
|
-
|
11
11
|
* `{organization}`: identifies the credentials set and cloud settings to use. If your Chef server is on the Opscode platform (Try it! It's super-easy), use your organization name (the last segment of your chef_server url). If not, use an identifier you deem sensible.
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
<a name="initial_install"></a>
|
14
|
+
## Install Ironfan's Gem and Homebase
|
15
15
|
|
16
|
-
_Before you begin, fork
|
16
|
+
_Before you begin, you may wish to fork homebase repo, as you'll be making changes to personalize it for your platform that you may want to share with teammates. If you do so, replace all references to infochimps-labs/ironfan-homebase with your fork's path._
|
17
|
+
|
18
|
+
1. Install the Ironfan gem (you may need to use `sudo`):
|
19
|
+
|
20
|
+
gem install ironfan
|
17
21
|
|
18
22
|
1. Clone the repo. It will produce the directory we will call `homebase` from now on:
|
19
23
|
|
20
24
|
git clone https://github.com/infochimps-labs/ironfan-homebase homebase
|
21
25
|
cd homebase
|
22
|
-
git submodule foreach git checkout master
|
23
26
|
git submodule update --init
|
27
|
+
git submodule foreach git checkout master
|
24
28
|
|
25
|
-
|
26
|
-
|
27
|
-
gem install ironfan
|
28
|
-
|
29
|
-
3. Set up your [knife.rb](http://wiki.opscode.com/display/chef/Knife#Knife-ConfiguringYourSystemForKnife) file.
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
Go to the [Knife Plugins](http://wiki.opscode.com/display/chef/Knife+Plugins) in the Chef Wiki for additional information.
|
34
|
-
|
35
|
-
|
36
|
-
__________________________________________________________________________
|
37
|
-
|
38
|
-
|
39
|
-
Installing the [knife.rb](http://wiki.opscode.com/display/chef/Knife#Knife-ConfiguringYourSystemForKnife) file when using Ironfan has proven exceedingly useful -- it leaves you in good shape to avoid problems with credential management, importing 3rd-party cookbooks, and other things down the road.
|
29
|
+
<a name="knife-configuration"></a>
|
30
|
+
## Configure Knife and Add Credentials
|
40
31
|
|
41
|
-
|
32
|
+
Ironfan expands out the traditional singular [knife.rb](http://wiki.opscode.com/display/chef/Knife#Knife-ConfiguringYourSystemForKnife) into several components. This modularity allows for better management of sensitive shared credentials, personal credentials, and organization-wide configuration.
|
42
33
|
|
43
34
|
### Set up
|
44
35
|
|
45
|
-
_Note_: If your local username differs from your Opscode Chef username, then you should `export CHEF_USER={username}`
|
36
|
+
_Note_: If your local username differs from your Opscode Chef username, then you should `export CHEF_USER={username}` (eg from your `.bashrc`) before you run any knife commands.
|
46
37
|
|
47
|
-
|
38
|
+
So that Knife finds its configuration files, symlink the `{homebase}/knife` directory (the one holding this file) to be your `~/.chef` folder.
|
48
39
|
|
49
40
|
cd {homebase}
|
50
41
|
ln -sni $CHEF_HOMEBASE/knife ~/.chef
|
51
42
|
|
52
|
-
|
43
|
+
<a name="credentials"></a>
|
44
|
+
### Credentials Directory
|
53
45
|
|
54
|
-
|
55
|
-
|
56
|
-
All the keys and settings specific to your organization are held in a directory named `credentials/`, versioned and distributed independently of the homebase.
|
46
|
+
All the keys and settings specific to your organization are held in a directory named `credentials/`, versioned independently of the homebase.
|
57
47
|
|
58
48
|
To set up your credentials directory, visit `{homebase}/knife` and duplicate the example, naming it `credentials`:
|
59
49
|
|
@@ -63,21 +53,42 @@ To set up your credentials directory, visit `{homebase}/knife` and duplicate the
|
|
63
53
|
cd credentials
|
64
54
|
git init ; git add .
|
65
55
|
git commit -m "New credentials universe for $CHEF_ORGANIZATION" .
|
66
|
-
|
67
|
-
### User / Cloud config
|
68
56
|
|
69
|
-
|
57
|
+
You will likely want to store the credentials in another remote repository. We recommend erring on the side of caution in its hosting. Setting that up is outside the scope of this guide, but there [good external resources](http://book.git-scm.com/3_distributed_workflows.html) available to get you started.
|
70
58
|
|
71
|
-
|
72
|
-
|
73
|
-
|
59
|
+
<a name="download"></a>
|
60
|
+
### Download Cloud Credentials
|
61
|
+
|
62
|
+
You will need to obtain user keys from your cloud providers. Your AWS access keys can be obtained from [Amazon IAM](https://console.aws.amazon.com/iam/home):
|
63
|
+
|
64
|
+
![Reset AWS User Key](https://github.com/infochimps-labs/ironfan/wiki/aws_user_key.png)
|
74
65
|
|
75
|
-
|
76
|
-
|
77
|
-
|
66
|
+
__________________________________________________________________________
|
67
|
+
|
68
|
+
Your Opscode user key can be obtained from the [Opscode Password settings](https://www.opscode.com/account/password) console:
|
69
|
+
|
70
|
+
![Reset Opscode User Key](https://github.com/infochimps-labs/ironfan/wiki/opscode_user_key.png)
|
71
|
+
|
72
|
+
__________________________________________________________________________
|
73
|
+
|
74
|
+
Your Opscode organization validator key can be obtained from the [Opscode Organization management](https://manage.opscode.com/organizations) console, by choosing the `Regenerate validation key` link:
|
78
75
|
|
79
|
-
|
80
|
-
|
76
|
+
![Reset Opscode Organization Key](https://github.com/infochimps-labs/ironfan/wiki/opscode_org_key.png)
|
77
|
+
|
78
|
+
__________________________________________________________________________
|
79
|
+
|
80
|
+
|
81
|
+
<a name="org"></a>
|
82
|
+
### User / Organization-specific config
|
83
|
+
|
84
|
+
Edit the following in your new `credentials`:
|
85
|
+
|
86
|
+
* Organization-specific settings are in `knife/{organization}-credentials/knife-org.rb`:
|
87
|
+
- _organization_: Your organization name
|
88
|
+
- _chef server url_: Edit the lines for your `chef_server_url` and `validator`. _Note_: If you are an Opscode platform user, you can skip this step -- your `chef_server_url` defaults to `https://api.opscode.com/organizations/#{organization}` and your validator to `{organization}-validator.pem`.
|
89
|
+
- Cloud-specific settings: if you are targeting a cloud provider, add account information and configuration here.
|
90
|
+
|
91
|
+
* User-specific settings are in `knife/credentials/knife-user-{username}.rb`. (You can duplicate and rename the one in `knife/example-credentials/knife-user-example.rb`). For example, if you're using Amazon EC2 you should set your access keys:
|
81
92
|
|
82
93
|
Chef::Config.knife[:aws_access_key_id] = "XXXX"
|
83
94
|
Chef::Config.knife[:aws_secret_access_key] = "XXXX"
|
@@ -87,19 +98,12 @@ If you are an Opscode platform user, you can skip this step -- your `chef_server
|
|
87
98
|
|
88
99
|
* Organization validator key in `{credentials_path}/{organization}-validator.pem`
|
89
100
|
|
90
|
-
* If you have existing Amazon machines, place their keypairs in `{credentials_path}/ec2_keys
|
91
|
-
|
92
|
-
__________________________________________________________________________
|
101
|
+
* If you have existing Amazon machines, place their keypairs in `{credentials_path}/ec2_keys`. Ironfan will also automatically populate this with new keys as new clusters are created. Commit the resulting keys back to the credentials repo to share them with your teammates, or they will be unable to make certain calls against the resulting architecture.
|
93
102
|
|
103
|
+
<a name="go_speed_racer"></a>
|
94
104
|
## Try it out
|
95
105
|
|
96
|
-
You should now be able to use Knife
|
97
|
-
|
98
|
-
$ knife client list
|
99
|
-
chef-webui
|
100
|
-
cocina-chef_server-0
|
101
|
-
cocina-sandbox-0
|
102
|
-
cocina-validator
|
106
|
+
You should now be able to use Knife to control your clusters:
|
103
107
|
|
104
108
|
$ knife cluster list
|
105
109
|
+--------------------+---------------------------------------------------+
|
@@ -114,22 +118,12 @@ You should now be able to use Knife.
|
|
114
118
|
|
115
119
|
Launching a cluster in the cloud should now be this easy!
|
116
120
|
|
117
|
-
knife cluster launch sandbox
|
118
|
-
__________________________________________________________________________
|
121
|
+
knife cluster launch sandbox-simple --bootstrap
|
119
122
|
|
120
|
-
|
123
|
+
## Next
|
121
124
|
|
122
|
-
|
123
|
-
|
124
|
-
* [Launch Cloud Instances with Knife](http://wiki.opscode.com/display/chef/Launch+Cloud+Instances+with+Knife)
|
125
|
-
* [EC2 Bootstrap Fast Start Guide](http://wiki.opscode.com/display/chef/EC2+Bootstrap+Fast+Start+Guide) (**Wow, we do everything in that page in _one_ command.**)
|
126
|
-
|
127
|
-
|
128
|
-
### Next
|
129
|
-
|
130
|
-
The README file in each of the subdirectories for more information about what goes in those directories. If you are bored of reading, go customize one of the files in the 'clusters/ directory'. Or, if you're a fan of ridiculous things and have ever pondered how many things you can fit in one box, launch el_[ridiculoso:](http://www.spanishdict.com/translate/ridiculoso). It contains every single recipe we have ever made stacked on top of one another.
|
125
|
+
The README file in each of the subdirectories for more information about what goes in those directories. If you are bored of reading, go customize one of the files in the 'clusters/ directory'. Or, if you're a fan of ridiculous things and have ever pondered how many things you can fit in one box, launch el_ridiculoso:. It contains every single recipe we have ever made stacked on top of one another.
|
131
126
|
|
132
127
|
knife cluster launch el_ridiculoso-gordo --bootstrap
|
133
128
|
|
134
|
-
|
135
|
-
For more information about configuring Knife, see the [Knife documentation](http://wiki.opscode.com/display/chef/knife).
|
129
|
+
For more information about configuring Knife, see the [Knife documentation](http://wiki.opscode.com/display/chef/knife).
|
@@ -0,0 +1,16 @@
|
|
1
|
+
### Set up Knife on your local machine, and a Chef Server in the cloud
|
2
|
+
|
3
|
+
If you already have a working chef installation you can skip this section.
|
4
|
+
|
5
|
+
To get started with knife and chef, follow the "Chef Quickstart,":http://wiki.opscode.com/display/chef/Quick+Start We use the hosted chef service and are very happy, but there are instructions on the wiki to set up a chef server too. Stop when you get to "Bootstrap the Ubuntu system" -- cluster chef is going to make that much easier.
|
6
|
+
|
7
|
+
* [Launch Cloud Instances with Knife](http://wiki.opscode.com/display/chef/Launch+Cloud+Instances+with+Knife)
|
8
|
+
* [EC2 Bootstrap Fast Start Guide](http://wiki.opscode.com/display/chef/EC2+Bootstrap+Fast+Start+Guide)
|
9
|
+
|
10
|
+
### Auto-vivifying machines (no bootstrap required!)
|
11
|
+
|
12
|
+
On EC2, you can make a machine that auto-vivifies -- no bootstrap necessary. Burn an AMI that has the `config/client.rb` file in /etc/chef/client.rb. It will use the ec2 userdata (passed in by knife) to realize its purpose in life, its identity, and the chef server to connect to; everything happens automagically from there. No parallel ssh required!
|
13
|
+
|
14
|
+
### EBS Volumes
|
15
|
+
|
16
|
+
Define a `snapshot_id` for your volumes, and set `create_at_launch` true.
|
File without changes
|
Binary file
|