我尝试将日志从节点复制到工作站。
我是个厨师和红宝石新手。
在食谱中:
directory "/var/chef/handlers" do
recursive true
action :nothing
end.run_action(:create)
cookbook_file "/var/chef/handlers/chef_handler_hibu.rb" do
action :nothing
end.run_action(:create)
chef_handler "Chef::Handler::Copy" do
source "/var/chef/handlers/chef_handler_hibu"
end.run_action(:enable)在文件中
class Copy < Chef::Handler
def initialize
end
def report
execute "report" do
command "sshpass -p ******* scp -o StrictHostKeyChecking=no /var/log
/#{node["ipaddress"]}.log gestchef@192.168.107.214:/var/log/chef_clients_logs
/#{node["ipaddress"]}.log"
end
end
end但是在chef处理程序中没有定义execute方法。
如何在chef Handler中执行linux命令?
或者如何在ruby中做到这一点?
我试一下这个
require 'rubygems'
require 'net/ssh'
require 'net/scp'
class Copy < Chef::Handler
def initialize
end
Net::SSH.start("192.168.107.214", "*****",:password => "******") do |session|
session.scp.download! "/var/log/#{node["ipaddress"]}.log", "/var/log
/chef_clients_logs /#{node["ipaddress"]}.log"
end
end但是错误
cannot load such file -- net/scp
gem list --local
net-scp (1.0.2)
net-sftp (2.0.2)
net-ssh (2.0.11)
s3sync (1.2.5)
xml-simple (1.0.12)和
gem which net-scp
Can't find ruby library file or shared library net-scp发生了什么?
发布于 2013-03-22 18:19:33
经过多次搜索和测试,这就是对我有效的方法。
在食谱中:
directory "/var/chef/handlers" do
recursive true
action :nothing
end.run_action(:create)
cookbook_file "/var/chef/handlers/chef_handler_hibu.rb" do
action :nothing
end.run_action(:create)
chef_handler "Chef::Handler::Copy" do
source "/var/chef/handlers/chef_handler_hibu"
end.run_action(:enable)在files/default/chef_handler_hibu.rb中
class Copy < Chef::Handler
def report
mpadd = Chef::Resource::Execute.new(mpadd,run_context)
mpadd.command("sshpass -p ***** scp -o StrictHostKeyChecking=no /var/log
/#{node["ipaddress"]}.log gestchef@192.168.107.214:/var/log/chef_clients_logs
/#{node["ipaddress"]}.log")
mpadd.run_action(:run)
end
end这样,您就可以在chef_handler阶段将节点的日志复制到任何位置。
我希望它能对你有所帮助。
https://stackoverflow.com/questions/15519413
复制相似问题