Como faço o Ansible realmente compilar um arquivo de configuração depois de ter alterado minhas configurações do debconf para um aplicativo?

6

Estou usando o Ansible para tentar configurar todas as estações de trabalho envolvidas com um projeto específico para poder usar a sincronização BitTorrent com uma configuração padrão (isso é apenas um exemplo do tipo de coisa que quero fazer).

Quando executo o manual, posso confirmar que as configurações do debconf nos PCs remotos foram atualizadas, mas o arquivo de configuração do aplicativo não foi atualizado.

Existe uma maneira de fazer com que o ansible termine o trabalho - tendo fornecido um monte de dados de configuração? Eu só quero recompilar o arquivo de configuração atual e depois reiniciar o serviço.

Estou usando o Ansible (do PyPi) mais recente nos hosts do Ubuntu 14.10 de 64 bits.

- hosts: btsync
  sudo: True
  tasks:
    - apt_repository: repo='ppa:tuxpoldo/btsync' update_cache=yes state=present
    - apt: name=btsync state=present
    - apt: name=debconf-utils state=present
    - apt: name=btsync-gui state=present
    - file: name='create a directory for BT Sync' path=/home/sal/bittorrent_sync state=directory owner=sal group=users mode=0755
    - debconf: name='btsync' question='btsync/runas' value='sal' vtype='string'
    - debconf: name='btsync' question='btsync/directory_root' value='/home/sal/bittorrent_sync' vtype='string'
    - debconf: name='btsync' question='btsync/webgui-bindaddr' value='0.0.0.0' vtype='string'
    - debconf: name='btsync' question='btsync/folder_defaults-use_lan_broadcast' value='true' vtype='boolean'
    - debconf: name='btsync' question='btsync/log_size' value='1' vtype='string'
    - debconf: name='btsync' question='btsync/folder_defaults-use_dht' value='true' vtype='boolean'
    - service: name='btsync' state=restarted

Eu posso forçar o arquivo de configuração a ser reconfigurado do debconf assim:

sudo dpkg-reconfigure -f noninteractive btsync

Suponho que eu poderia forçar a Ansible a executar essa afirmação remotamente, mas certamente há uma maneira melhor e mais ansiosa de fazer isso?

    
por Salim Fadhley 01.04.2015 / 00:24

1 resposta

4

É assim que o debconf funciona, você não esperaria que os pacotes fossem reconfigurados automaticamente se você acabou de editar o arquivo.

O que você quer é um manipulador de notificação que reconfigure o dpkg uma vez no final da reprodução.

- debconf: name: 'btsync' question: 'btsync/folder_defaults-use_dht' value: 'true' vtype: 'boolean' notify: reconfigure btsync

e no seu arquivo de manipuladores:

- name: reconfigure btsync command: sudo dpkg-reconfigure -f noninteractive btsync

Agora, se o debconf realmente mudou alguma coisa (e somente se - idempotent), o btsync será reconfigurado uma vez quando todas as suas tarefas forem executadas.

    
por 25.06.2015 / 17:25