2016-08-02 9 views
0

私はリモートスクリプトを使用してリモートのディレクトリを作成しています。これは、becomeとbecome_userの両方を使用すると失敗するようです。私はボックスにログインするために特権ユーザーを使用していることに注意してください。他のコマンドは(become_userなしで)うまく動作するようです。権限のないユーザへのable_userが失敗しました

fatal: [node0]: FAILED! => {"changed": false, "failed": true, "invocation": {"module_name": "file"}, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE", "parsed": false} 

ansibleドキュメントに記載されているように、私はまた、パイプライン化を可能にするために試してみた:パスワードセットはdeploy ALL=NOPASSWD: ALL

# This works 
- name: create log directory 
    file: path={{ log_directory }} state=directory owner=metax group=metax mode=0755 
    become: yes 

# This fails 
- name: create log directory 
    file: path={{ log_directory }} state=directory owner=metax group=metax mode=0755 
    become: yes 
    become_user: deploy 

がエラーで失敗するユーザーのいずれにもありません https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user

+0

ターゲットシステムに 'acl'パッケージをインストールしてください。 –

+1

Ansibleと 'root 'で接続しているのであれば意味をなさないようです。 ' - コマンド:whoami' ' register:whoami' 'になる:yes' ' become_user:deploy' ' - {debug:msg}" ''? 'become_user'の有無にかかわらず?また、あなたが '' root ''の場合、なぜ ''になりますか? become_userなし '' OK:[ノード0] => { "ルート" "MSG"} – techraf

+0

は 'become_user'としまったメッセージと同じエラーで失敗しました。私が基本的に実際の "root"ユーザを使用しているのではなく、sudo権限を持つユーザを使用しているので、 'become'を使うことは面白いです。だから、私は '有り 'を使うのが便利だろうと思うのです。 ' OK:[ノード0] => { "MSG": "ankitjain" }注目 ' – Ankit

答えて

0

からあなたがこのユーザになる方法を定義することができます:

become_method 

at play or task level overrides the default method set in ansible.cfg, set to ‘sudo’/’su’/’pbrun’/’pfexec’/’doas’/’dzdo’ 

これは、deployユーザーがsudoersに存在しないことを意味します。 su

+0

、Iはbecome_methodを設定しようとしたとき、私は別のエラーメッセージが表示されます:{ "失敗" になり、私が取得become_user無し:true、 "msg": "一時ファイルへのアクセス許可の設定に失敗しました権限のないユーザーになるために必要な作成方法この問題を回避する方法については、https://docs.ansible.com/ansible/become.html#を参照してください。私はすでに "デフォルト!必須"のパイプライン設定を行っていますが、 – Ankit

関連する問題