Я пытаюсь создать Ansible Playbook для развертывания некоторых серверов Ubuntu 12.04 на Linode, но моя проблема, похоже, связана с Ubuntu. Когда я запускаю разные комбинации apt-get или aptitude, я всегда получаю следующее диалоговое окно, на которое я должен ответить.
Мне бы хотелось, чтобы на это отвечали из командной строки, чтобы это не прерывало автоматическое развертывание. Любые идеи?
Мои текущие команды ниже. Обратите внимание, что я пытаюсь установить DEBIAN_FRONTEND:
#!/bin/bash
echo 'DEBIAN_FRONTEND="noninteractive"' >> /etc/profile
echo 'DEBIAN_FRONTEND="noninteractive"' >> ~/.profile
source /etc/profile
source ~/.profile
# This next line is the one that pops up the dialog
sudo aptitude -y install iptables-persistent
# Need this to fix an issue with the package post-install (this works fine.)
sudo sed \
-i 's/\(modprobe -q ip6\?table_filter\)/\1 || true/g' \
/var/lib/dpkg/info/iptables-persistent.postinst; \
sudo aptitude install iptables-persistent
Я думаю, вам следует подумать о создании базы данных debconf для автоматизации всего процесса. Это неинтуитивный процесс, требующий много работы, такой как переупаковка ваших собственных файлов deb, чтобы заставить его работать, и называется "предварительная установка debconf" .
В вики Debian есть несколько примеров. о том, как это сделать:
В зависимости от времени и обстоятельств вы выберете одно (поэтому я не вдавался в подробности). Возьмите тот, который кажется полезным, и придерживайтесь его до конца.
Если вы столкнетесь с проблемами, задайте другой вопрос с подробным описанием того, что вы пытаетесь сделать и как вы планируете это делать.
Попробуйте использовать debconf-set-selections
, чтобы установить значение перед установкой пакета:
echo iptables-persistent iptables-persistent/autosave_v4 boolean true | sudo debconf-set-selections
echo iptables-persistent iptables-persistent/autosave_v6 boolean true | sudo debconf-set-selections
Или через ansible
- name: prevent the iptables-peristent install dialog
debconf: name=iptables-persistent question={{ item }} vtype=boolean value=true
with_items:
- iptables-persistent/autosave_v4
- iptables-persistent/autosave_v6
- name: install iptables-persistent
apt: name=iptables-persistent
Вы пропустили -q
. Попробуйте:
sudo DEBIAN_FRONTEND=noninteractive aptitude install -y -q iptables-persistent
Незначительное исправление / корректировка для Ответ @ lorin-hochstein на основе Ansible для неинтерактивной установки iptables-persistent, в котором задача требует успешного выполнения sudo-privilges (добавлена строка стать: yes
):
## Запретить диалог установки iptables-persistent pckgs (debconf-set-selections)
- name: запретить диалог установки, поддерживающий iptables
стать: да
debconf: name = iptables-persistent question = {{item}} vtype = логическое значение = true
with_items:
- iptables-persistent / autosave_v4
- iptables-persistent / autosave_v6
- имя: установить iptables-persistent
APT: имя = iptables-постоянный
При создании образа Docker:
RUN echo iptables-persistent iptables-persistent/autosave_v4 boolean true | debconf-set-selections \
&& echo iptables-persistent iptables-persistent/autosave_v6 boolean true | debconf-set-selections
RUN apt-get install -y iptables-persistent