2017-03-08 18 views
0

リモートサーバーの "/ホーム" enter image description hereAnsible同期モジュールの権限問題

リモートサーバーのユーザー 1. bitnami 2. take02 3. take03 4. take04

しかし、ローカルホストであるだけUbuntuユーザ。

OWNER情報を保持している のように、REMOTE HOSTの「ホーム」ディレクトリをコピーしたいと思います。

--- 
- hosts: discovery_bitnami 
    gather_facts: no 
    become: yes 

    tasks: 
    - name: "Creates directory" 
     local_action: > 
     file path=/tmp/{{ inventory_hostname }}/home/ state=directory 

    - name: "remote-to-local sync test" 
     become_method: sudo 
     synchronize: 
     mode: pull 
     src: /home/ 
     dest: /tmp/{{ inventory_hostname }}/home 
     rsync_path: "sudo rsync" 

脚本結果は次のとおりです:

は、これは私の脚本である

PLAY [discovery_bitnami] ******************************************************* 

TASK [Creates directory] ******************************************************* 
ok: [discovery_bitnami -> localhost] 

TASK [remote-to-local sync test] *********************************************** 
fatal: [discovery_bitnami]: FAILED! => {"changed": false, "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh 'ssh -i /home/ubuntu/.ssh/red_LightsailDefaultPrivateKey.pem -S none -o StrictHostKeyChecking=no -o Port=22' --rsync-path=\"sudo rsync\" --out-format='<<CHANGED>>%i %n%L' \"[email protected]:/home/\" \"/tmp/discovery_bitnami/home\"", "failed": true, "msg": "rsync: failed to set times on \"/tmp/discovery_bitnami/home/.\": Operation not permitted (1)\nrsync: recv_generator: mkdir \"/tmp/discovery_bitnami/home/bitnami\" failed: Permission denied (13)\n*** Skipping any contents from this failed directory ***\nrsync: recv_generator: mkdir \"/tmp/discovery_bitnami/home/take02\" failed: Permission denied (13)\n*** Skipping any contents from this failed directory ***\nrsync: recv_generator: mkdir \"/tmp/discovery_bitnami/home/take03\" failed: Permission denied (13)\n*** Skipping any contents from this failed directory ***\nrsync: recv_generator: mkdir \"/tmp/discovery_bitnami/home/take04\" failed: Permission denied (13)\n*** Skipping any contents from this failed directory ***\nrsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1655) [generator=3.1.1]\n", "rc": 23} 
    to retry, use: --limit @/home/ubuntu/work/esc_discovery/ansible_test/ansible_sync_test.retry 

PLAY RECAP ********************************************************************* 
discovery_bitnami   : ok=1 changed=0 unreachable=0 failed=1 

しかし、 に失敗しました "CMD" コンソール上sudoと罰金の実行を動作します。

$ sudo /usr/bin/rsync --delay-updates -F --compress --archive --rsh 'ssh -i /home/ubuntu/.ssh/red_PrivateKey.pem -S none -o StrictHostKeyChecking=no -o Port=22' --rsync-path=\"sudo rsync\" --out-format='<<CHANGED>>%i %n%L' [email protected]:/home/ /tmp/discovery_bitnami/home 

sudoで「タスク」を実行するにはどうすればよいですか?

ps。 become: yesを削除し、すべての権限は、私はあなたがsynchronizeモジュールのオプションの外にあると思います「Ubuntuの」 enter image description here

答えて

2

です。それはsudoit's hardcodedなしでローカルに実行されます。

一方、最初のタスクでは、/tmpの下にディレクトリを作成します。そのため、権限はrootユーザーに限定されます。その結果、「のアクセス権が拒否されました。」というエラーが発生します。

次のいずれかの

  • リファクタリング、コードは、ローカルの宛先のルート権限を必要とする(またはタスク"Creates directory"ためbecome: noを追加)しないように、あなたが権限の保全を意味アーカイブオプションを使用して、このかもしれませんオプションではない。

か:

  • synchronizeモジュールの独自のバージョンを作成してcmd変数の前にsudoを追加します。

か:

  • コールとしてsudo /usr/bin/rsynccommandモジュールを使用しています。

synchronizeモジュールは、非標準のものであることに留意し、使用するアカウントについてchanges in the past、及びrequests for the changesがありました。


すべての上に、モジュールの現在のドキュメントはかなり混乱しています。一方で、それを強く述べて:

同期DESTのユーザーと権限をbecome=yesがアクティブな場合、宛先ホスト上のremote_userまたはbecome_userのものです。

しかし、別の場所では、送信元と宛先のみ意味がpullモード使用時に逆転されていることをヒント:プルモードでは

のコンテキストでリモートホストがソースです。

だから、この質問からケースのために、次の一節は、それが間違って「SRC」を述べていても、関連性がある:

同期SRCのユーザーと権限のユーザーランニングのものであり、ローカルホスト上のAnipalタスク(またはdelegate_toが使用されている場合は、delegate_toホストのremote_user)

+0

ありがとうございました! しかし、 OWNER情報を保持している のように、REMOTE HOSTの「ホーム」ディレクトリをコピーしたいと思います。 リモートサーバーのユーザー 1. bitnami 2. take02 3. take03 4. take04 しかし、ローカルホストのみUbuntuのユーザーです。 –

+0

はい、まさにその質問が説明したことです。あなたのコメントに私が返答すると期待していますか? – techraf

+0

ありがとうございます...あなたのコメント!!! –