Edited at

knife-solo cookでrsync errorが出た時の対応

More than 5 years have passed since last update.

Jenkinsからknife-soloを使ってEC2に環境構築をしている際に、以下のエラーが発生した。

ただし、別の環境から実施した際は同現象は発生しなかったので、特定のバージョンに依存した現象かも。

なお、cookする前に、knife solo prepareでEC2側にchefをインストールしている。

環境


  • OS : CentOS 6.3

  • knife-solo : gem installした0.2.0

  • chef : 11.4.4

  • rsync : 3.0.6

EC2


  • OS : AmazonLinux 64bit

  • type : t1.micro

エラー内容

+ bundle exec knife solo cook ec2-XXX.amazonaws.com

Checking Chef version...
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]
ERROR: RuntimeError: Failed to launch command rsync -rl --rsh="ssh ec2-user@ec2-XXX.amazonaws.com" --delete --exclude revision-deploys --exclude tmp --exclude '.*' --exclude *~ --exclude *.sw[a-z] --exclude */.svn/* ./ :/tmp/chef-solo


回避策

原因不明で色々悩んでいたところ、sshした際に出る公開鍵登録の確認にyesで答えて、出なくしてあげると現象が出なくなる事を確認した。

Are you sure you want to continue connecting (yes/no)? yes

knife-solo実行側の~/.ssh/configに

Host *.amazonaws.com

StrictHostKeyChecking no

と書いてあげる事で、yes/noは聞かれなくなり、エラーが解消された。