web-dev-qa-db-ja.com

ansibleスクリプトからの別のユーザーのgsettingsの変更(vagrantによって開始)

私はすでにstackoverflowで質問をしましたが、答えを得るためのより良い場所になる可能性があると考えました:vagrantとansible(ローカル)を使用してUbuntu 16 LTSで仮想マシンをプロビジョニングしたいです。プロビジョニングの一部は、同じスクリプトによって作成されたユーザーのUnityランチャーアイコンを追加および削除することです。スクリプトは、vagrantユーザーから開始されます。関連するいくつかの質問を検索した後、さまざまなバリエーションを試しました

  • dbus-launch --exit-with-session gsettingsコマンドの前
  • become_flags: '-i'
  • become_flags: '-H'
  • become_flags: '-E'

次の基本的なansibleコマンドについて

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

これまでのところ、成功していませんが、ログインしたユーザーとしてコマンドを実行しても機能します。

EDITソリューションに対する私の最善のアプローチは、ansibleを直接変更するのではなく、ansibleからシェルスクリプトを起動することです。ただし、どのように見えるかはわかりません。

6
bln-tom

ランチャーセットアップスクリプトを呼び出す.desktopファイルを各ユーザーの~/.config/autostartフォルダーに配置することをお勧めします。または、.desktopファイルを/etc/xdg/autostartに配置して、すべてのユーザーに対してスクリプトが実行されるようにしますが、ユーザー名を取得し、何らかの形式のデータベースでユーザーランチャーの設定を見つける必要があります。 Idは個人的にPythonスクリプトを使用します。このスクリプトは、ユーザー名:ランチャーリストの値でjsonファイルを読み取ります。

1

また、ansibleを使用してランチャーのお気に入りを設定するのにも苦労しました。

私にとっての解決策は、dconfの代わりにansible gsettingsモジュールを使用することでした。

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

become_userを介して他のユーザーでも機能すると思います(ただし、テストしていません)。

1
leopold.talirz