Alterando gsettings para outro usuário de um script ansible (iniciado pelo vagrant)

6

Eu fiz a pergunta já no stackoverflow, mas imaginei que este poderia ser um lugar melhor para obter uma resposta: Eu quero provisionar uma máquina virtual com o Ubuntu 16 LTS usando vagrant e ansible (local). Parte do provisionamento é adicionar e remover alguns ícones do iniciador do Unity para um usuário que também é criado pelo mesmo script. O script é iniciado a partir do usuário vagrant . Depois de pesquisar várias questões relacionadas, tentei variações de

  • dbus-launch --exit-with-session antes do comando gsettings
  • become_flags: '-i'
  • become_flags: '-H'
  • become_flags: '-E'

no seguinte comando ansible básico

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

Até agora, não houve sucesso, MAS a execução do comando como um usuário conectado funciona.

EDITAR Meu melhor appoach para uma solução seria o lançamento de um script de shell de ansible em vez de fazer a mudança em ansible diretamente. No entanto, eu não sei como deve ser.

    
por bln-tom 07.11.2016 / 17:16

2 respostas

1

Eu recomendo que você coloque um arquivo .desktop na pasta ~/.config/autostart de cada usuário que irá chamar o script de configuração do iniciador. Como alternativa, coloque o arquivo .desktop em /etc/xdg/autostart para que o script seja executado para cada usuário, mas você precisará capturar o nome de usuário e localizar a configuração do ativador de usuário em algum tipo de banco de dados. Eu pessoalmente uso o script Python que lê o arquivo json com username: launcher list valies, porque é simples.

    
por Sergiy Kolodyazhnyy 09.11.2016 / 18:11
1

Eu também lutei com a configuração dos favoritos do lançador via ansible.

Para mim, a solução foi usar o ansible dconf module em vez de gsettings :

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

Acho que também funciona com outros usuários via become_user (mas eu não testei).

    
por leopold.talirz 22.10.2017 / 17:24