ansible を使用して tarball を多数のサーバーに scp する jenkins ビルド ジョブをテストしていました。以下は ansible yaml ファイルです。
- hosts: websocket_host
user: root
vars:
tarball: /data/websocket/jenkins/deployment/websocket_host/websocket.tgz
deploydir: /root
tasks:
- name: copy build to websocket server
action: copy src=$tarball dest=$deploydir/websocket.tgz
- name: untar build on websocket server
action: command tar xvfz $deploydir/websocket.tgz -C $deploydir
- name: restart websocket server
action: command /root/websocket/bin/websocket restart
最初の 2 つのコマンドは正常に機能し、コマンド /root/websocket/bin/websocket restart は失敗しました。それ以来、websocket_host の ansible ホスト ファイルで定義されている任意のサーバーに (パスワードなしで) ログインできるようになりました。ホスト マシンとクライアント マシンの両方で、すべての権限設定が正しいことを確認しました。いくつかのクライアント マシンでこれをテストしましたが、すべてのクライアント マシンで ssh へのパスワードを入力する必要があります。昨日、(公開鍵を介して)問題なくsshできました。ホスト マシンで root ユーザーを使用していますが、ファイルを /root ディレクトリにコピーするとこの問題が発生するのではないかと考えています。これは、パスワードなしの ssh セッション経由で正常に実行できた最後のコマンドだったからです。