【发布时间】:2024-01-11 22:26:01
【问题描述】:
我想知道如何将文件从客户端节点传输到远程机器。我检查了是否有任何资源可用于执行此操作。我找到的最接近的是remote_file,但它正在从远程位置获取文件并将其传输到客户端节点。
所以我尝试了另一种选择,编写了一个执行自动 scp 的 bash 脚本。但我无法复制文件,但厨师客户端运行良好,没有显示任何错误。
这是我复制文件的脚本:
#!/usr/bin/expect -f
# connect via scp
spawn scp "/tmp/testfile" chef-ws@10.232.110.113:/home/chef-ws/fileserver
expect {
-re ".*es.*o.*" {
exp_send "yes\r"
exp_continue
}
-re ".*sword.*" {
exp_send "password\r"
}
}
interact
我已将此脚本复制到我的cookbook'stemplates 目录中为automatecopy.erb,然后在default.rb 中,我有以下代码
template "/tmp/automatecopy" do
source "automatecopy.erb"
mode 0777
end
execute "automatecopy" do
command "/usr/bin/expect /tmp/automatecopy"
timeout 100
action :run
end
这里,chef-client 运行成功,但文件没有复制到我的工作站机器上。另一件事是,当我登录到我的客户端节点并从那里运行脚本时,它就可以工作了。那么为什么厨师不这样做呢?
请帮助我解决这个问题,提出可能出现的问题,或者是否有任何内置的厨师资源可用于将文件从客户端复制到工作站。
P.S:我的工作站和客户端节点都在运行 Ubuntu 12.04。 提前致谢。
【问题讨论】:
标签: ruby-on-rails chef-infra scp chef-recipe