0

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 セッション経由で正常に実行できた最後のコマンドだったからです。

4

1 に答える 1

1

Jenkins ジョブによって、/root ディレクトリの所有権とグループが変更されたことが判明しました。コマンド chown root.root /root はすべてを修正します。

于 2014-01-02T20:08:22.177 に答える