Ансибл не гони, ансибл погоди

Так получилось, что у нас большинство проектов настроены с помощью ансибла 2.0 и у всех он был установлен и все работало.
Однако где-то понадобились фичи из 2.1, поставили 2.2 и старые рецепты естественно работать перестали. В принципе они
легко фиксятся, но есть два способа, как можно обойтись без исправления: один рабочий, а второй на докере .
С удивлением узнал (коллеги подсказали), что brew
умеет переключать версии:
brew switch ansible 2.0.1.0
brew switch ansible 2.2.0.0_1
Белиссимо! Этим способом я пока и пользуюсь.
Второй способ пока не использовал, только запустил один раз. Уже давно в голове крутится идея, что докер же должен стать идеальным для консервации старых версий утилит. В принципе такая команда запускается (если ssh-ключ без пароля) и работает ожидаемо:
docker run -v`pwd`:/ansible -v$HOME/.ssh:/root/.ssh \
hypoport/ansible:2.0.2.0 ansible-playbook node.yml
То есть можно положить в репо какой-нибудь sh-файл, который сделает алиасы нужных докеризированных версий утилит или еще что-нибудь
придумать. Идейно по-моему очень круто, но есть две засады. Вывод команды не цветной, пока не смотрел можно ли это как-то пофиксить.
И вторая проблема хуже, докер в маке работает медленно, рецепт, который прогоняется через brew-версию за одну минуту, в контейнере
пыхтел четыре с половиной . В убунту такой проблемы насколько я знаю нет, докер унижает только любителей смузи.
По факту у нас пожалуй плывут версии всего двух утилит - ansible (редко) и терраформ (чаще). Так-то особо проблемы нет, но может вы знаете изящный способ консервировать версию утилиты на веки вечные?
PS. Писал этот пост и подумал, а может вагрант?! Ммм?
Tweet