Новые подходы автоматизации Wildfly
Доброго времени суток хаброжители.
Достаточное количество времени назад я писал о первых шагах в автоматизации Wildfly, но прогресс не стоит на месте и пришло время взглянуть на новые подходы.
Добро пожаловать под кат
Проект Wildfly к моему большому удовольствию, не стоит на месте, а активно развивается. Работая с ним достаточное количество времени (уже года 4!), удалось обуздать и наладить процессы.
Важной находкой является в первую очередь является отличный модуль для ansible — jboss (да-да, он может работать и с jboss). Модуль официально представлен на страничке RedHat раздела Ansible и дает достаточно удобный функционал для управлениями деплоем
Инфраструктура у нас построена полностью на ansible, что позволило без проблем интегрировать данный модуль в имеющиеся пайпы работы с окружениями.
Достаточно красивый на мой взгляд пример функциональности:
- name: APP deployment
jboss:
src: "DIR_WITH_EAR/application_file.ear" #ear/war/jar файл для деплоя
deploy_path: 'wildfly_path/deployments' #Директория для деплоя
deployment: "application_file_version.ear" #Версия приложения - возможно изменение при деплое
В чем неотвратимое удобство в данном случае?
Необходимый файл для деплоя необходимо положить непосредственно только в одну директорию и в дальнейшем из нее можно деплоить в несколько application servers — это экономит время на копирование, скачивание и так же экономит место, необходимое под файл.
Так же не стоит забывать, что конфигурации wildfly сервера представлены в файлах xml вида:
- standalone.xml
- standalone.conf
Такой формат взаимодействия с конфигурацией отлично ложится на шаблоны через jinja templates.
Кроме этого, создание юзера и его пароля, кроме того, что отлично автоматизируется через add-user.sh, имеют отличное свойство добавляться копированием хэша, что позволяет на одной машине при наличии возможности переносить созданного юзера добавлением строк в application-users.properties
Таким образом, использование Wildfly отлично сочетается с использованием Ansible, позволяя держать все окружение в формате yml кода.
Так же, на данный момент, аналогичные модули можно найти в других configuration management тулзах, в частности puppet