Для расширения кругозора решил попробовать jenkins как GUI для ансибла. ПО Jenkins - это все больше для девопсов и программистов, но почему его не попробовать офисному админу, периодически использующего ансибл?
Считаем, что ансибл стоит уже где-то на какой-либо машине и на ней есть постоянно используемые playbook. Что хотелось бы получить: оставить текущую машину ансибл как есть, чтобы было возможно использовать playbook в консоли как и ранее; запуск этих playbook с дженкинса через веб-интерфейс.
Как будет работать: Ansible машина будет slave в терминологии jenkins. При запуске задачи на слейве, дженкинс коннектится по ssh от рута на ансибл хост и запускает playbook как будто вы находитесь за консолью сервера ансибл. Весь вывод можно тут же увидеть на самом дженкинсе.
Предположим, что jenkins поставили (у меня это Debian GNU/Linux 8.8 (jessie), openjdk-7-jre-headless:amd64, jenkins 2.46.3). Ставим плагин ансибла - Manage Jenkins - Manage Plugins - раздел Available - вбиваем в поиск ansible - ставим плагин.
План: 1) настраиваем беспарольный вход на ансибл машину от root, 2) поднимаем слейв, ставим на него джаву, 3) конфигурируем playbook на дженкинсе.
1) генерируем ключ ssh на jenkins машине, например для user jenkins , по умолчанию открытый ключ запишется в /var/lib/jenkins/.ssh/id_rsa.pub
Данный открытый ключ помещаем в /root/.ssh/authorized_keys на ансибл машине. Настраиваем вход от рута по ключу.
2) Настраиваем slave
Текущая машина ансибл - это дебиан 8, ставим пакет туда пакет openjdk-7-jre-headless:amd64. Дальше на jenkins:
Manage Jenkins - Managed Nodes - New Node
параметры слэйва:
Remote root directory - /var/lib/jenkins
Launch method - launch slave agent via SSH
Host - указываем адрес хоста ансибл
Credential - Add , выбираем в Kind - SSH username with private key - Username root. Private key указываем как файловый путь в /var/lib/jenkins/.ssh/id_rsa или вводим напрямую.
Жмем Save. После этого должен появиться в списке slave
2) Создание проекта
New Item - указываем название проекта, например Ansible - Freestyle Project
В самом проекте указываем
Add build step - Invoke Ansible playbook - далее указываем путь к playbook на слейве, путь к hosts list.
Если нажать Advanced, то, например, позволяет задать переменные, которые передаются в комадной строке в консоли для запуска playbook (через параметр -e)
Жмем Save. Потом слева нажимаем Build Now, внизу в Build History появится идентификатор нашей задачи, нажимаем на нее, далее Console Output - можно посмотреть что именно запускал jenkins на слейве
Все, теперь ничего не мешает создать нужные задачи в jenkins для запуска playbook, настроить периодический запуск заданий, если требуется, и все это наблюдать в уютном веб-браузере.