Class: Yun::Ssh

Inherits:
Object
  • Object
show all
Defined in:
lib/yun/model/ssh.rb

Instance Method Summary collapse

Constructor Details

#initialize(host, ssh_config) ⇒ Ssh

Returns a new instance of Ssh.



7
8
9
10
# File 'lib/yun/model/ssh.rb', line 7

def initialize host, ssh_config
  @host = host
  @ssh_config = ssh_config
end

Instance Method Details

#chef(role) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/yun/model/ssh.rb', line 16

def chef role
  Net::SSH.start(@host, user, :keys => [key_file]) do |ssh|
    puts "installing chef"
    remote_command ssh, "bash /tmp/install_chef_file.sh"

    puts "packaging chef repo"
    tmp_chef_repo_tar = make_chef_repo_tar Config.chef_repo

    puts "uploading chef repo"
    ssh.scp.upload! tmp_chef_repo_tar, tmp_chef_repo_tar
    ssh.scp.upload! install_chef_file, "/tmp/install_chef_file.sh"
    ssh.scp.upload! chef_config_file, "/tmp/chef-solo.rb"
    remote_command ssh, "echo {\\\"run_list\\\":\\\"role[#{role}]\\\"} > /tmp/node.json"

    puts "executing chef"
    remote_command ssh, "sudo chef-solo -c /tmp/chef-solo.rb -j /tmp/node.json -r /tmp/chef-solo.tar.gz"

    puts "**********"
    puts "DONE"
  end
end

#connectObject



12
13
14
# File 'lib/yun/model/ssh.rb', line 12

def connect
  exec "ssh -i #{key_file} #{user}@#{@host}"
end