
Ich habe versucht, meine Vagrant-Konfiguration auf Atlas zu erstellen. Außerdem verwende ich Ansible für die Bereitstellung und habe einige Sudo-Probleme.
Nach dem Einrichten der VM erhalte ich beim Versuch, ein Ansible-Playbook auf Atlas auszuführen, diese Fehlermeldung:
virtualbox-iso: failed: [127.0.0.1] => {"failed": true, "item": ""}
virtualbox-iso: msg: Failed to lock apt for exclusive operation
Ich habe im Internet herausgefunden, dass Sudo-Berechtigungen das Problem sein könnten. In meiner Haupt-Playbook-Datei sind die Berechtigungen wie folgt eingestellt:
sudo: true
remote_user: vagrant
Und das Ganze bricht direkt nach dem Ausführen des Playbooks ab, wenn ich für diesen Befehl im Playbook die Sudo-Berechtigung benötige:
-name: Update apt
sudo: yes
apt: update_cache=yes
Weiß jemand, wie man diese Situation löst? Wie behebe ich Sudo-Berechtigungen für Ansible?
HINWEIS: Wenn ich versuche, diese Maschine lokal zu erstellen, funktioniert sie einwandfrei. Wenn ich sie jedoch auf Atlas ausführe, tritt das Problem auf.
UPDATE: Ich glaube, dass der Sudo-Zugriff hier ein echtes Problem darstellt. Ich habe diesen Teil der Konfiguration entfernt und er schlägt weiterhin bei anderen Teilen fehl, die Sudo erfordern.
virtualbox-iso: failed: [127.0.0.1] => (item=curl,wget,python-software- properties) => {"failed": true, "item": "curl,wget,python-software-properties"}
virtualbox-iso: stderr: E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
virtualbox-iso: E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
Antwort1
Failed to lock apt for exclusive operation
bedeutet, dass eine andere Anwendung die Apt-Sperre hält. Vielleicht läuft auf dem System ein anderer Installationsprozess?
Überprüfen Sie ps aux | grep apt
die Ausgabe auf verdächtige Prozesse.
Die Fehlermeldung könnte auch durch unzureichende Berechtigungen verursacht werden. Sie sollten überprüfen, ob der Ansible-Benutzer über sudo vollen Root-Zugriff erhält. Um dies zu überprüfen, öffnen Sie die sudoers auf dem Host mit visudo
. Sie sollten eine Zeile wie diese haben
ansible_user ALL=(ALL) NOPASSWD: ALL