Sto cercando di eseguire una serie di attività se manca un pacchetto apt specifico.Ansible Do Task Se manca il pacchetto Apt
ad esempio: do
se grafite di carbonio non è installato:
- apt: name=debconf-utils state=present
- shell: echo 'graphite-carbon/postrm_remove_databases boolean false' | debconf-set-selections
- apt: name=debconf-utils state=absent
un altro esempio:
se statsd NON è installata fare:
- file: path=/tmp/build state=directory
- shell: cd /tmp/build ; git clone https://github.com/etsy/statsd.git ; cd statsd ; dpkg-buildpackage
- shell: dpkg -i /tmp/build/statsd*.deb
Come sarebbe Inizio a rompere questo?
Sto pensando che forse posso fare un -shell: dpkg -l|grep <package name>
e catturare il codice di ritorno in qualche modo.
Non si dovrebbe usare così tanto il modulo 'shell'. I tuoi libri di gioco non sono idempotenti. Invece di eseguire il comando debconf, dovresti usare il suo modulo corretto come mostrato qui http://docs.ansible.com/debconf_module.html – Mxx
@mxx Grazie. Informazioni molto utili –
Passare semplicemente all'utilizzo di un modulo che fa la stessa cosa non rende il tuo playbook idempotente; le due cose non sono correlate. Potrebbe essere una buona idea usare un modulo se ne è disponibile uno, ma questa logica è sbagliata. –