Created
February 14, 2014 03:29
-
-
Save smith/8995300 to your computer and use it in GitHub Desktop.
Starter extractor example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# | |
# As a possible replacement for a Chef Starter kit, we could download a single | |
# "bundle" that contains the user's custom knife.rb and keys and use a command | |
# to install it in ~/.chef. This is a prototype of such a command. | |
# | |
# The script takes a filename (we'll call it starter.rb) as an argument. The | |
# file consists of the following: | |
# | |
# * A knife.rb | |
# * __END__ (Ruby ignores everything after __END__) | |
# * A delimiter string | |
# * A validation key | |
# * Another delimeter string | |
# * A user private key | |
# | |
# The script takes these and writes out the knife.rb and the user and validation | |
# keys based on the settings in the knife.rb. | |
# | |
# A more robust version would write these out to ~/.chef or a configurable | |
# location and ensure existing files aren't overwritten. | |
# | |
# Run it with `./extractor starter.rb` | |
# | |
require 'mixlib/config' | |
extractor = Object.new.extend(Mixlib::Config) | |
file = ARGV[0] | |
knife_rb, validation_key, user_key = open(file).read.split('==========') | |
extractor.from_file(file) | |
open('knife.rb', 'w').write(knife_rb.lstrip) | |
open("#{extractor.validation_client_name}.pem", 'w').write(validation_key.lstrip) | |
open("#{extractor.node_name}.pem", 'w').write(user_key.lstrip) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# See http://docs.opscode.com/config_rb_knife.html for more information on knife configuration options | |
current_dir = File.dirname(__FILE__) | |
log_level :info | |
log_location STDOUT | |
node_name "applejack" | |
client_key "#{current_dir}/applejack.pem" | |
validation_client_name "ponyville-validator" | |
validation_key "#{current_dir}/ponyville-validator.pem" | |
chef_server_url "https://api.opscode.piab/organizations/ponyville" | |
cache_type 'BasicFile' | |
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" ) | |
cookbook_path ["#{current_dir}/../cookbooks"] | |
__END__ | |
========== | |
-----BEGIN RSA PRIVATE KEY----- | |
MIIEpAIBAAKCAQEA5L7frg9AjeGDT0lX8dSJdFBvbHWo8qjmLTmXyqet1llbeUiE | |
QWO6WSlJaYwZnCYbl7hFc65cAm7xyEdx7a2u9DeISdAlBMaQrYlNhEEAUfD/6V4Y | |
70klF5Etq1n9ippOl+8kbMa3jgL5ACf9M+JQuquYvelX/AatcUX51NEsz0sEZGL3 | |
E3ZKXnj02/fiEOa7Dls4r21cs5tnRDG7OIJEJMhRRZAQhrp6Sw2lE59mE3xsuxYz | |
pKGR/WWnW6ukIuYibAZhpsD0StDKYKm2E6RuLbajI+0F580DKamn7sYRsvEccQSE | |
IFJ8lfn6XIQZSdw+GZqVsa9pXrwOAC9xE8q2JwIDAQABAoIBAQCKHaILhBQTVw4l | |
CoD6eL1CKOsOTwDi/A53UiYP7Czvlua/lYSdwuyat24nN7ui5/OTKWVuEuJlab29 | |
kz38J/nSZdF52B7yAj8LOTM/3sulrmGm8/UUTlMCJtuvcdfAH6nC3VdeAqKEMdFN | |
QdgFwunBvKiuSr2gZBvHoFvYHzDyPBIZdzo1naTaIDkPW8GWhG6zgJ4oDHjFRoUw | |
k+jkdDoubvQgyNsb92bX/aHG5zS1f2qvyEl489IAIwOsJn3N5i1nlwwTydTQ/3q+ | |
33cnrBNHaXwAxfjSSCLdpBIwyOr4HARs2Pr4m6E12KM30h6CQuZIZ0D7AGsV4ZUu | |
MTpKtJ0pAoGBAPoBV2DVqzWmXc3Ji6EJzPS0eduwvDmeXPJkc0lEiXvYMMAXl8UY | |
OMdIKPKWjdVg9izNTrtgJMM2unnMjgFHTzERYldEVRQrD1OEweQ3B1oe6Dnqzq1y | |
CiX1IA3ETT3PoAzBFEXbW3zg2AXOVeJorhP/8wpnGJdYvrusJFSsZ7ZzAoGBAOo7 | |
B651EZMlNjTVxglWZvqhb6WJyuY4fL9Kar2+96VrIG4FKT/JtW3/9ar8sLVG9Qe/ | |
VeyKS/h8BLIxe7oocIaPGRzZYYo7K8pP0O5QMAmFxFDsJV4RO9PiYHHwsXZXKfuU | |
z0hsKlj4EoTYd143rGDtIPIyvYuqumOSFrAh9uB9AoGAeNPRITHjT0iaqWyxGSGd | |
dt8Kzgy6y7YoAdZeiZigQcSYux4r8cvlFRtg/u2YmvoDwF9xn8m1ustmkJs2PpPy | |
SCq4tqiF3ft5qsnM07lsyjeJ0QQU42rsULAJz92B30/LcJ6YZ7K+orogbZ3tkEE7 | |
cNsQ4YQ2NF9lv1pRLMMuVNUCgYACKYtXm/MOlbBbaoHKgkavF6BtOclquKjGJ0y2 | |
9bVZjJSfD2MjGJyZKFy/OFf1RHNsn+KOLXSoFZUBhB1tSYRIabfEoWkaGpO76WK3 | |
YHwhCmAWkyeBJ82Slitnwd4Rhpp3nRcQxxbY/WlGWq03bHIl7up38en4CRpxYt7c | |
v2OFDQKBgQCgVqBxBHZjg1SMCe5gLsESilQJfLi2hc25HmiwH2+RfJdA1bj6YJXq | |
m/Fi6Wq5k9sNikmzPbY32O+9VSyYv5WnE1DmIOkiI6Tp689HEr7cW0Yw6Y5uc6uP | |
+gtqfdw8sWMYzSLvrj7t0HcFisWVY3U4nWp1moF5EYBjILKo8bv/xQ== | |
-----END RSA PRIVATE KEY----- | |
========== | |
-----BEGIN RSA PRIVATE KEY----- | |
MIIEowIBAAKCAQEAtmt5fVO8hu+SnFo39qLs5jzofS5BSWZsiP3zaugQWh1Yl6SD | |
EIgYkdkhMAg9gTME12d8PCxRh2T5vbw6a8sHB+t0f52TJrlaMjb9e34U4h9NtrE2 | |
0Jj6Rhw//Gs/oInt1FF/B6NM9g4QjERm1RWBvx2l3A0J3SSjRM4lnSXqNDCDvykN | |
XnOHMrtdVTJlDMGy2KoiMNx3T61iefFFP/eBCxNJ6bTeCmxwxN7LEoIBojmXRhky | |
iwbFvT+AQI4SDMBNJgrP0aPhTPdA9yxjUlfnhm8j8OLzK/ko2g+/fg7DpQ/DhDGc | |
62xsQ2MKVKLaNfW8vla5w/+F1tAFgepYf8MOLwIDAQABAoIBAEmNkkHnVpft12a1 | |
teT7kpvPKUr4MJjg9JhUFSchBR7gwEz8p2AuEAIW05vjZrFGmggkkOJOWF1IaK6J | |
S+EUzvPxi1q9dYzipayjoZd+ofr+9j3YvKplVFyanW4w7EnV85Btf9Pbk3eO+jsk | |
hXYbouIlmS/eDgEd+bsPh/kSRZne2xZB5s/6eFwe3Yh8+r8Y51/6Bo8GBwIMdyVj | |
BkUv7ip6noUW9EYw+HtRJa1QFxuhDstgVhPfDRP5TGjPI1DXTKC1taZ+FQma5rEU | |
y8oiKCTbk9+MO6K/ZsfvLvRU8VFtlnUlcDT2YQ4F4lO6YJC2j27mBEtLfDGymz42 | |
nB2bKgkCgYEA6oKTs5Z7a7cnVLmJuc4m40b2XpTOUVfdutniEEHfVmwqEhTtZJZ+ | |
PGuQgn1q3l6SXuIQ8WXq44bsxXqxl9iNJpMbVe+stAISg3AaRI1Wq3fYrzYcu+qg | |
hFdsj/1DtJUQx/DGQDSTYI/6Bm5F34scsJWTAIDBLJ69DY7ry10LwqUCgYEAxyLm | |
ss2uprXCz0Wxr5ztsez3kFTkifb2ts60WTaSgp7nRVa6CK99Gka1dWdCehROre22 | |
xBpB4THaex9/QpsY/TT9WHU0B9BBnUbxSh0J0LdQJQHroNo4JQZ9Gpn9/bBNB1lf | |
Ab3xfOOeBgGAZ5OieYeuY6iFm3FrB/v3d2JpGUMCgYEArSG56dwvQlb1spdIFuUb | |
0K+TNECoEWXNTSWOwHHhcOxqIu9QU/LHP9Qp3Cy7uXAYn/RGjfGweEokg6cRdglq | |
LBBvHgLUfhEJmgApZHL0iaLxVmmczR9rYkko3SUd1zQ2L2aS9tPZ+nBRJm5DJ8aM | |
Z9IFtVlZRJfs+xWI/5qyFAECgYBeAZHastJSDNgMNSBugKyNJAqybgD9SEKrheUJ | |
gIOlehI/X3OvCfkK4HplE/wD2XZTETcIWETlZD15hiLzdHhVgCBhE+MeFSgEcSsT | |
C6ZIi2EgN0new2VhxTBl0HBgxEt4vq3lCp/njyRYPXk6bC11JaIjlbiM6vvV5xKp | |
nyFyNQKBgHGsccB3rIFPrK/QONJ8UnbDjYawBdGLPn1ODxfOIt8JxuzN2BpwvpWn | |
D9rfkblaUarz454xzLAMVgWWoUi6GqWVoUmZW9/p6qhB3Dg6PRMLtaAzXsKDsU37 | |
zplu22DP/kM+lsT203CJjVxZluWWXOj4/m9UORSNLEkygifHdkyh | |
-----END RSA PRIVATE KEY----- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment