Доброго времени суток. Появилась кривая задача, потому не могу придумать не-кривое решение. Есть ansible-роль, запускающая docker контейнер. Её последняя задача выглядит так:
- name: blah
command: >
docker run -d
--dns={{ansible_docker0.ipv4.address}}
#далее простыня параметров для logstash/spring cloud/etc.
--net host и --dns - взаимоисключающие параметры. Есть стремное решение: использовать --net host, при этом на старте контейнера ansible скриптом писать этот самый dns из переменной ansible в /etc/resolv.conf запускаемого контейнера. Вопрос - как это сделать не через всем печально известное место?
- name: extending resolv.conf
command: docker exec "`docker ps | grep {{container_name}}/{{image_name}} | awk '{print $1}'`" /bin/bash -c "echo nameserver {{ansible_docker0.ipv4.address}} >> /etc/resolv.conf"
Собственно, листинг выше - и есть это самое смердящее место. Во-первых, pipe здесь не работает и не будет. Вопрос простой: какой из способов извернуться будет наиболее изящным?
P.S.: С ansible знаком постольку поскольку, можете не тратить время на гнилые помидоры.