TODO: Write a gem description
Add this line to your application's Gemfile: e
gem 'chef-provisioning-ssh'
And then execute:
$ bundle
Or install it yourself as:
$ gem install chef-provisioning-ssh
The machine_options
for provisioning ssh now use the key transport_options
which line up directly with the transport_options
for chef-provisioning proper.
The transport_options
key must be a symbol.
Sub-keys should be strings.
The transport_options can be viewed in the code for chef-provisioning here:
The snippet from that link is:
- host: the host to connect to, e.g. '145.14.51.45'
- username: the username to connect with
- ssh_options: a list of options to Net::SSH.start
- options: a hash of options for the transport itself, including:
- :prefix: a prefix to send before each command (e.g. "sudo ")
- :ssh_pty_enable: set to false to disable pty (some instances don't
support this, most do)
- :ssh_gateway: the gateway to use, e.g. "jkeiser@145.14.51.45:222".
nil (the default) means no gateway. If the username is omitted,
then the default username is used instead (i.e. the user running
chef, or the username configured in .ssh/config).
The options are used in
Net::SSH.start(host, username, ssh_options, options)
In addition to host, ip_address and hostname are also additional options.
-
the
ssh_options
key accepts options from Net::SSH.start, the full list can be seen here:http://net-ssh.github.io/ssh/v2/api/classes/Net/SSH.html#M000002
-
full machine_options for SSH example:
with_machine_options :transport_options => { 'is_windows' => false, 'ip_address' => '192.168.33.23', 'host' => 'somehost', 'username' => 'vagrant', 'ssh_options' => { 'auth_methods' => '', 'bind_address' => '', 'compression' => '', 'compression_level' => '', 'config' => '', 'encryption' => '', 'forward_agent' => '', 'hmac' => '', 'host_key' => '', 'keepalive' => '', 'keepalive_interval' => '', 'kex' => '', 'keys' => ['/home/username/.vagrant.d/insecure_private_key'], 'key_data' => '', 'languages' => '', 'logger' => '', 'paranoid' => '', 'password' => '', 'port' => '', 'proxy' => '', 'rekey_blocks_limit' => '', 'rekey_limit' => '', 'rekey_packet_limit' => '', 'timeout' => '', 'verbose' => '', 'global_known_hosts_file' => '', 'user_known_hosts_file' => '', 'host_key_alias' => '', 'host_name' => '', 'user' => '', 'properties' => '', 'passphrase' => '', 'keys_only' => '', 'max_pkt_size' => '', 'max_win_size, :send_env' => '', 'use_agent' => '' }, 'options' => { 'prefix' => 'sudo ', 'ssh_pty_enable' => false, 'ssh_gateway' => 'yourgateway' } }
-
full machine_options for WinRM example:
with_machine_options :transport_options => { 'is_windows' => true, 'host' => '192.168.33.23', 'port' => 5985, 'username' => 'vagrant', 'password' => 'vagrant' }
-
machine resource example:
require 'chef/provisioning/ssh_driver' with_driver 'ssh' machine "ssh" do action [:ready, :setup, :converge] machine_options :transport_options => { 'ip_address' => '192.168.33.22', 'username' => 'vagrant', 'ssh_options' => { 'password' => 'vagrant' } } recipe 'vagrant::sshone' converge true end ## # With WinRM you must use a remote chef-server # local-mode chef server is not currently supported with_chef_server "https://api.opscode.com/organizations/double-z", :client_name => Chef::Config[:node_name], :signing_key_filename => Chef::Config[:client_key] machine "winrm" do action [:ready, :setup, :converge] machine_options :transport_options => { 'is_windows' => true, 'host' => '192.168.33.23', 'port' => 5985, 'username' => 'vagrant', 'password' => 'vagrant' } recipe 'windows' converge true end
To test it out, clone the repo:
git clone https://github.com/double-z/chef-provisioning-ssh.git
in the test directory there is a Vagrantfile with 2 nodes.
Run:
vagrant up
which will bring up both nodes.
Then run from the test directory:
chef-client -z -o vagrant::test_ssh
NOTE: if the second machine fails it will be a result of issues with your vagrant key.
This will run chef-provisioning on each of the two vagrant nodes.
thats it.
party on wayne.
- Fork it ( http://github.com/double-z/chef-provisioning-ssh/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request