it-swarm.com.de

Gsettings für einen anderen Benutzer von einem ansiblen Skript aus ändern (gestartet von vagrant)

Ich habe die Frage bereits beim Stackoverflow gestellt, habe aber herausgefunden, dass dies ein besserer Ort ist, um eine Antwort zu erhalten: Ich möchte eine virtuelle Maschine mit Ubuntu 16 LTS unter Verwendung von vagrant und ansible (local) bereitstellen. Ein Teil der Bereitstellung besteht darin, einige Unity-Startsymbole für einen Benutzer hinzuzufügen und zu entfernen, die ebenfalls mit demselben Skript erstellt wurden. Das Skript wird vom Benutzer vagrant gestartet. Nachdem ich einige verwandte Fragen durchgesehen hatte, versuchte ich Variationen von

  • dbus-launch --exit-with-session vor dem Befehl gsettings
  • become_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.

EDIT Mein bester Lösungsansatz 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.

6
bln-tom

Ich empfehle Ihnen, eine .desktop -Datei in den ~/.config/autostart -Ordner jedes Benutzers zu legen, um das Launcher-Setup-Skript aufzurufen. Alternativ können Sie die Datei .desktop in /etc/xdg/autostart einfügen, damit das Skript für jeden Benutzer ausgeführt wird. Dann müssen Sie jedoch den Benutzernamen abrufen und die Benutzer-Launcher-Konfiguration in einer Datenbank suchen. Ich persönlich benutze das Python Skript, das die json-Datei mit dem Benutzernamen liest: launcher list valies, weil es einfach ist.

1

Ich habe auch Probleme damit, die Launcher-Favoriten über ansible zu setzen.

Für mich bestand die Lösung darin, das ansible dconf -Modul anstelle von gsettings zu verwenden:

- name: set icons/applications
  dconf:
    key: /com/canonical/unity/launcher/favorites
    value: "{{ launcher_favorites }}"
    state: present

Ich denke, es funktioniert auch mit anderen Benutzern über become_user (aber ich habe es nicht getestet).

1
leopold.talirz