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

December 6, 2016

Так получилось, что у нас большинство проектов настроены с помощью ансибла 2.0 и у всех он был установлен и все работало. Однако где-то понадобились фичи из 2.1, поставили 2.2 и старые рецепты естественно работать перестали. В принципе они легко фиксятся, но есть два способа, как можно обойтись без исправления: один рабочий, а второй на докере :trollface:.

С удивлением узнал (коллеги подсказали), что 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-версию за одну минуту, в контейнере пыхтел четыре с половиной :scream_cat:. В убунту такой проблемы насколько я знаю нет, докер унижает только любителей смузи.

По факту у нас пожалуй плывут версии всего двух утилит - ansible (редко) и терраформ (чаще). Так-то особо проблемы нет, но может вы знаете изящный способ консервировать версию утилиты на веки вечные?

PS. Писал этот пост и подумал, а может вагрант?! Ммм?

comments powered by Disqus