Я использую Ansible, чтобы попытаться настроить все рабочие станции, задействованные в конкретном проекте, чтобы иметь возможность использовать синхронизацию BitTorrent со стандартной конфигурацией (на самом деле это просто пример того, что я хочу сделать).
Когда я запускаю playbook, я могу подтвердить, что настройки debconf на удаленных ПК были обновлены, однако файл конфигурации для приложения не был обновлен.
Есть ли способ получить возможность завершить работу - предоставив кучу данных конфигурации, я просто хочу перекомпилировать фактический файл конфигурации, а затем перезапустить службу.
Я использую последнюю версию Ansible (от PyPi) на 64-битных хостах Ubuntu 14.10.
- 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
Я могу принудительно перенастроить конфигурационный файл из debconf следующим образом:
sudo dpkg-reconfigure -f noninteractive btsync
Я полагаю, я мог бы заставить Ansible удаленно выполнить этот оператор, но, конечно, есть лучший и более надежный способ сделать это?
Вот как работает debconf, вы не ожидаете, что пакеты будут переконфигурированы автоматически, если вы только что отредактировали файл.
Вам нужен обработчик уведомлений, который выполняет перенастройку dpkg один раз в конце игры.
- debconf:
name: 'btsync'
question: 'btsync/folder_defaults-use_dht'
value: 'true'
vtype: 'boolean'
notify: reconfigure btsync
и в вашем файле обработчиков:
- name: reconfigure btsync
command: sudo dpkg-reconfigure -f noninteractive btsync
Теперь, если debconf действительно что-то изменил (и только если - idempotent), btsync будет перенастроен один раз, когда все ваши задачи будут выполнены.