Ich habe die Frage bereits zum Stackoverflow gestellt, aber ich dachte mir, dass dies ein besserer Ort sein könnte, um eine Antwort zu erhalten: Ich möchte eine virtuelle Maschine mit Ubuntu 16 LTS unter Verwendung von Vagrant und Ansible (lokal) bereitstellen. Ein Teil der Bereitstellung besteht darin, einige Unity Launcher-Symbole für einen Benutzer hinzuzufügen und zu entfernen, der ebenfalls von demselben Skript erstellt wird. Das Skript wird vom vagrant
Benutzer gestartet . Nachdem ich einige verwandte Fragen durchgesehen hatte, versuchte ich Variationen von
dbus-launch --exit-with-session
vor dem Befehl gsettingsbecome_flags: '-i'
become_flags: '-H'
become_flags: '-E'
auf den folgenden grundlegenden ansible Befehl
- name: Remove Launcher Icons
command: gsettings set com.canonical.Unity.Launcher favorites "['application://org.gnome.Nautilus.desktop', 'application://firefox.desktop', 'application://gnome-terminal.desktop', 'application://atom.desktop', 'application://unity-control-center.desktop', 'unity://running-apps', 'unity://expo-icon', 'unity://devices']"
become: true
become_user: "{{ user }}"
Bisher kein Erfolg, ABER das Ausführen des Befehls als angemeldeter Benutzer funktioniert.
BEARBEITEN Mein bester Ansatz für eine Lösung wäre, ein Shell-Skript von ansible aus zu starten, anstatt die Änderung in ansible direkt vorzunehmen. Ich bin mir jedoch nicht sicher, wie es aussehen soll.
Antworten:
Ich empfehle Ihnen, eine
.desktop
Datei in den~/.config/autostart
Ordner jedes Benutzers zu legen , in der das Launcher-Setup-Skript aufgerufen wird. Alternativ können Sie die.desktop
Datei/etc/xdg/autostart
so ablegen, dass das Skript für jeden Benutzer ausgeführt wird. Anschließend müssen Sie den Benutzernamen abrufen und die Konfiguration des Benutzer-Starters in einer Datenbank finden. Ich persönlich würde ein Python-Skript verwenden, das eine JSON-Datei mit dem Benutzernamen: Launcher List Valies liest, weil es einfach ist.quelle
Ich habe auch Probleme damit, die Launcher-Favoriten über ansible festzulegen.
Für mich bestand die Lösung darin, das Ansible-
dconf
Modul anstelle vongsettings
:Ich denke, es funktioniert auch mit anderen Benutzern über
become_user
(aber ich habe es nicht getestet).quelle