2016-10-09 12 views
1

リモートサーバ上で2.1を使用して次のタスクを実行しようとしています(debianパッケージを実行するにはsudo権限が必要です)。しかし、私がコマンドを実行すると、以下にコピーされたエラーで失敗するようです。これをさらにトラブルシューティングする方法について考えていただければ幸いです。リモートマシンでのユーザ特権​​の使用

タスク

--- 
- name: transferring artifact to server 
    local_action: shell ls -d /tmp/test/target/*.jar 
    register: test_build 
- copy: src={{ test_build.stdout }} dest=/home/ubuntu/ owner=ubuntu group=ubuntu mode=644 backup=yes 
    become: true 
    become_user: ubuntu 
    become_method: sudo 

エラー

fatal: [testserver]: FAILED! => {"failed": true, "msg": "Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user. For information on working around this, see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user"} 

答えて

2

"Ubuntu"は特権を持たないユーザーアカウントです。 copyコマンドをsudoとして呼び出すのではなく、特権のないアカウントにsudoを "su"として呼び出し、コピーコマンドを "ubuntu"(非特権)として実行しています。あなたはあなたにそれを伝えるものを正確にやっています。

特権のないアカウントから取得する場合は、特権のないアカウントのアカウントを使用しないでください。これはAnsibleのセキュリティ上の脆弱性です。なぜあなたはあなたの代わりにubuntuとしてログインしていないのですか?

+0

私はユーザのubuntuではなく私の鍵ペアを使用してリモートサーバにsshを送信するためです。ユーザのubuntuは、リモートサーバ上でのみ設定されます。 –

+0

デフォルトでは、 "ubuntu"ユーザはroot権限しか持っていませんが、sudoを使ってこれを利用する必要があります。 – Avalon

+0

ありがとう@avalon - apprected –

0

Iセットアップ(absible 2.1のデフォルトではFalse)Trueにansible.cfgでallow_world_readable_tmpfilesフラグ。これは、これを警告として扱うことを可能にし、私が進めることを許すエラーとしてではありません。他に提案されているオプション(パイプライニングやaclツールのインストールは含まれていませんでした)。

関連する問題