2016-10-10 1 views
1

Ich führe die folgende Aufgabe, um ein Debian-Paket auf einem Ubuntu 14 OS mit Ansible 2.1 ausführen, aber die Ausnahme kopiert unten. Der Remotebenutzer hat auf dem Remotecomputer Sudo-Berechtigungen.ansible privileg Problem auf remote Server

- name: run dpkg 
    shell: dpkg -i {{ debian_build.stdout }} 
    become: true 
    become_user: ubuntu 
    become_method: sudo 

Fehler

fatal: [testserver]: FAILED! => {"changed": true, "cmd": "dpkg -i /home/ubuntu/test-server_0.1.0-7c47d103f8da21045e3ee817529eb84a0aa79723_all.deb", "delta": "0:00:00.002444", "end": "2016-10-10 14:33:32.014887", "failed": true, "rc": 2, "start": "2016-10-10 14:33:32.012443", "stderr": "dpkg: error: requested operation requires superuser privilege", "stdout": "", "stdout_lines": [], "warnings": []} 
+0

Ich konnte es als sudo dpkg -i {{debian_build.stdout}} ausführen. Ich frage mich, warum der Wanted-Bereich nicht benutzt wird. –

Antwort

1

Da diese;

become: true 
become_user: ubuntu 
become_method: sudo 

Ist equivelant dies auf Shell zu tun:

myuser$ sudo su ubuntu 
ubuntu$ 

Sie sudo verwenden, um ein nicht-privilegiertes Benutzerkonto zu wechseln. "Ubuntu" hat keinen Zugriff auf das Ausführen von dpkg, ohne Sudo aufzurufen, weshalb Ihr Playbook funktioniert, wenn Sie sudo in Ihren Shell-Befehl einfügen.

Sie sollten auch zu einem unprivilegierten Benutzer pro ansible Best Practices wechseln nicht werden werden: http://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user

Sie sollten dieses Textbuch laufen als der richtige Benutzer mit zum Beispiel durch die Verwendung remote_user zu beginnen.

+0

Ich werde im Gegensatz zu ubuntu zu root wechseln - oder gibt es einen besseren Weg? –

+1

Wenn Sie dpkg ausführen müssen, müssen Sie root sein. Sie können einfach "werden: ja" und dies wird (standardmäßig in ansible) wechseln Sie zu root. – Avalon

Verwandte Themen