Chef - 运行远程SSH命令

时间:2017-09-21 22:05:25

标签: ruby ssh chef heredoc

如何使用Chef运行远程SSH命令?例如,将以下命令放入配方

ssh -T user@host.com <<'ENDSSH'
cat /etc/*-release
ENDSSH

使用execute资源

execute "some_resource" do
  command "ssh -T user@host.com <<'ENDSSH'
  cat /etc/*-release
  ENDSSH"
  action :run
end

结果

warning: here-document at line 0 delimited by end-of-file (wanted `ENDSSH')

但我没有尝试将bashENDSSH一起使用。在使用EOT资源时,使用EOH似乎与预期的外部bash冲突。这是否可以使用Chef,或者Mixlib::ShellOut的某些内容更适合解决在使用HEREDOC时使用A B C D E 1 q 2 3 4 1 t 5 3 5 1 r 1 2 5 2 r 3 1 3 2 t 8 1 3 2 q 1 2 3 3 t 1 1 2 3 r 2 1 2 3 r 3 1 1 添加或解析的缩进,我认为这是原因?无论哪种情况,稳定性似乎都值得怀疑。

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为@coderanger在评论中有最​​好的答案(&#34;你几乎肯定不应该和Chef#34做这件事),但仅仅是为了完整性&#39;为此,我相信你的字符串中的换行符没有被正确转义。尝试这样的事情:

execute "some_resource" do
  command <<-HEREDOC
    ssh -T user@host.com <<\'ENDSSH\'
      cat /etc/*-release
    ENDSSH
  HEREDOC
end