2017-09-21 15 views
0

요리사를 사용하여 원격 SSH 명령을 실행하려면 어떻게해야합니까? 예를 들어, 내가 그러나, ENDSSHbash를 사용하여 시도하지 않은요리사 - 원격 SSH 명령 실행

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

execute 자원을

execute "some_resource" do 
    command "ssh -T [email protected] <<'ENDSSH' 
    cat /etc/*-release 
    ENDSSH" 
    action :run 
end 

결과를 사용하여 조리법

ssh -T [email protected] <<'ENDSSH' 
cat /etc/*-release 
ENDSSH 

에 다음 명령을 가져. EOT을 사용하면 bash 리소스를 사용할 때 예상되는 바깥 쪽 EOH과 충돌하는 것으로 보입니다. Chef를 사용하여 가능할 수 있습니까? 아니면 Mixlib::ShellOut 라인을 따라 무언가가 추가되었거나 요리사가 구문 분석 한 바를 처리하기에 더 적합합니까? HEREDOC을 사용하는 것이 원인이라고 생각하십니까? 두 경우 모두 안정성에 의문의 여지가 있습니다.

감사합니다.

+1

무엇을하려고합니까? 이것은 다른 도구에 비해 요리사를 사용하기에 좋은 장소는 아닙니다. – coderanger

+0

사실 저는 FreeBSD를 실행하는 인스턴스에서 설정을 원격으로 복원하려고합니다. 규정 준수 요구 사항으로 인해이 특정 노드에는 chef-client를 설치할 수 없습니다. – dcd018

+2

당신이 아마 나의 요리사 역사에서 볼 수 있듯이 나는 꽤 요리사 부스터지만, 이것과 같은 것을 나는 다른 곳에서 볼 것이다. 소금 (소금/ssh), 유능한, 또는 직물/발동은 당신에게 더 잘 맞고 덜 고통 스러울 것입니다. – coderanger

답변

1

@coderanger는 코멘트에서 "가장 확실하게 요리사와 함께해서는 안됩니다."라고 생각하지만, 완벽을 기하기 위해 문자열의 개행 문자가 적절하지 않다고 생각합니다. 탈출했다. 다음과 같이 시도하십시오.

execute "some_resource" do 
    command <<-HEREDOC 
    ssh -T [email protected] <<\'ENDSSH\' 
     cat /etc/*-release 
    ENDSSH 
    HEREDOC 
end 
+0

고마워요 @jayhendren,이 작업을 끝내고 동의합니다. stdout 및/또는 종료 코드를 검사하고 실행을 계속해야하는 경우 매우 좋은 접근 방법이 아닐 수 있습니다. 제 상황에서는 config 파일을 scp하고 몇 가지 reload 명령을 실행하기 만하면됩니다. 나는 실행중인 명령이 나머지 레시피에 대해 다소 자율적이라면이를 사용할 수 있다고 주장 할 것이다. – dcd018