2017-03-08 3 views
0

Remote-Servers "/ home" enter image description hereansible synchronisieren Modul Berechtigungsproblem

Remote Server Benutzer 1. bitnami 2. take02 3. take03 4. take04

Aber lokalen Host sind nur ubuntu Benutzer .

Ich möchte das "Home" -Verzeichnis von REMOTE HOST als ansible, kopieren, die OWNER-Informationen behaltend.

Das ist mein Textbuch ist:

--- 
- 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" 

Playbook Ergebnis ist:

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 

Aber fehlgeschlagen "cmd" funktioniert gut laufen mit sudo auf der Konsole.

Wie starte ich "Aufgabe" mit Sudo?

ps. entfernen become: yes dann ist alles Erlaubnis „ubuntu“ enter image description here

Antwort

2

Ich denke, Sie aus Optionen für das synchronize Modul sind. Es läuft lokal ohne sudo und it's hardcoded.

Auf der anderen Seite, in der ersten Aufgabe erstellen Sie ein Verzeichnis unter /tmp als root, so dass die Berechtigungen auf den Benutzer root beschränkt sind. Als Ergebnis erhalten Sie "Berechtigungen verweigert" Fehler.

Entweder:

  • Refactoring den Code, so dass Sie keine Root-Rechte für die lokale Ziel benötigen (oder fügen Sie become: no für die Aufgabe "Creates directory"), wie Sie Archivierungsoption verwenden, die Berechtigungen Erhaltung impliziert, könnte dies keine Option sein;

oder:

  • Ihre eigene Version des synchronize Modul erstellen und sudo an die Vorderseite des cmd Variable hinzuzufügen;

oder:

  • Verwendung der command Modul mit sudo /usr/bin/rsync als den Anruf.

Kenntnis, dass sich synchronize Modul ein Nicht-Standard ist, gab es changes in the past in Bezug auf die verwendeten Konten und requests for the changes.


Obendrein ist die aktuelle Dokumentation für das Modul ziemlich verwirrend. Einerseits heißt es, stark:

Der Benutzer und Berechtigungen für den Synchronisierungs-dest die der remote_user auf der Ziel-Host oder die become_user wenn become=yes sind aktiv ist.

aber an einem anderen Ort es nur einen Hinweis, dass der Quell- und Ziel-Sinn umgekehrt, wenn pull Modus:

Im Pull-Modus in Kontext der Remote-Host ist die Quelle.

Also für den Fall von dieser Frage ist die folgende Passage relevant, auch wenn es das „src“ fälschlicherweise:

Der Benutzer und Berechtigungen für das Synchronisieren src denen der Benutzer Lauf sind die Ansible-Aufgabe auf dem lokalen Host (oder der remote_user für einen delegate_to-Host, wenn delegate_to verwendet wird).

+0

Vielen Dank !! aber, Ich möchte das "Home" -Verzeichnis von REMOTE HOST als ansible, kopieren, die OWNER-Informationen behaltend. Remote Server Benutzer 1. bitnami 2. take02 3. take03 4. take04 Aber lokalen Host sind nur Ubuntu-Anwender. –

+0

Ja, das ist genau das, was die Frage erklärt. Erwarten Sie von mir, dass ich auf Ihren Kommentar antworte? – techraf

+0

Danke ... dein Kommentar !!! –