È ansible rispondere alle domande di dialogo quando si installa sotto docker?

È ansible rispondere in qualche modo alle domande che vengono presentate come dialoghi durante l'installazione di alcuni pacchetti utilizzando apt-get?

Ad esempio, sto cercando di configurare un contenitore contenente il pacchetto di mail-stack-delivery della mail-stack-delivery :

 FROM ubuntu RUN apt-get install -y mail-stack-delivery 

Tuttavia quel file dockerfile genera decine di errori quando costruiti che sono lungo le righe di:

 debconf: unable to initialize frontend: Dialog debconf: (TERM is not set, so the dialog frontend is not usable.) debconf: falling back to frontend: Readline debconf: unable to initialize frontend: Readline debconf: (Can't locate Term/ReadLine.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7, <> line 11.) debconf: falling back to frontend: Teletype dpkg-preconfigure: unable to re-open stdin: 

Da quello che capisco semplicemente non posso rispondere alle windows di dialogo, ma c'è qualche modo in cui posso passare un parametro per rispondere in anticipo a ciascuna domanda? So che sta cambiando alcune configurazioni, quindi posso farlo dopo il fatto, ma presumibilmente è meglio lasciare che gli script di installazione lo fanno in modo che tutto sia regolato correttamente.

Vedi la discussione qui: https://github.com/docker/docker/issues/4032 . In breve, l'impostazione di ENV DEBIAN_FRONTEND noninteractive è raccomandata in quanto persiste nell'image finale, anche quando si esegue qualcosa come il docker run -i -t ... bash . Pertanto si raccomanda di ignorare DEBIAN_FRONTEND e vivere con l'avviso, oppure specificarlo esplicitamente per ciascun command, ad esempio RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q package .

Fortunatamente la nuova direttiva ARG definisce variables che vivono solo durante la creazione, quindi è ansible una soluzione più elegante specificata nel DockerFile ma non persiste nell'image finale: ARG DEBIAN_FRONTEND=noninteractive .

Dovresti impostare DEBIAN_FRONTEND = noninterattivo come envvar. Nella maggior parte dei casi questo lo farà alless in modo che l'installazione non venga errata.

Anche come @Azdle citato, utilizzando le opzioni di selezione debconf consentono di impostare elementi specifici.

Come al solito, un po 'più di ricerca ha trovato la risposta.

La risposta è la selezione debconf-set-selections . Manpage: http://manpages.ubuntu.com/manpages/oneiric/en/man1/debconf-set-selections.1.html

Per trovare le opzioni che possono essere impostate, utilizzare debconf-get-selections su un sistema che ha già installato il pacchetto. Dovnetworking installare debconf-utils per il secondo command.

Questa è una soluzione di lavoro:

ARG DEBIAN_FRONTEND = non interattivo