Я хотел бы знать, как передать файл с клиентского узла на удаленную машину. Я проверил, есть ли какие-либо ресурсы для этого. Самое близкое, что я нашел, это remote_file
, но он извлекает файл из удаленного места и передает его на клиентский узел.
Поэтому я попробовал другой вариант, написав сценарий bash, который будет выполнять автоматический scp. Но я не могу скопировать файл, но шеф-клиент работал нормально, без каких-либо ошибок.
Вот мой скрипт для копирования файла:
#!/usr/bin/expect -f
# connect via scp
spawn scp "/tmp/testfile" [email protected]:/home/chef-ws/fileserver
expect {
-re ".*es.*o.*" {
exp_send "yes\r"
exp_continue
}
-re ".*sword.*" {
exp_send "password\r"
}
}
interact
Я скопировал этот скрипт в свой каталог cookbook's
templates
как 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
Здесь шеф-клиент работает успешно, но файл не был скопирован на мою рабочую станцию. Еще одна вещь заключается в том, что когда я вошел в свой клиентский узел и запустил оттуда скрипт, он заработал. Так почему же шеф-повар не может сделать это?
Пожалуйста, помогите мне решить эту проблему, предложив, что может быть не так, или есть ли какой-либо встроенный ресурс шеф-повара, который можно использовать для копирования файлов с клиента на рабочую станцию.
P.S: И моя рабочая станция, и клиентский узел работали под управлением Ubuntu 12.04. Заранее спасибо.