Выполнение домашнего задания по теме "9.3. Jenkins".
Q/A
Задание 1
Подготовка к выполнению
- Создать 2 VM: для jenkins-master и jenkins-agent.
- Установить jenkins при помощи playbook'a.
- Запустить и проверить работоспособность.
- Сделать первоначальную настройку.
Playbook для установки jenkins. Были сделаны следующие доработки в сравнении
с оригинальным playbook:
- На мастере и агенте
github.comдобавлен вknown_hostsпользователяjenkins - На агенте установлен
python3.8из исходников - Добавлена установка
moleculeи других модулей для запуска тестирования ролей ansible
Запуск:
ansible-playbook -i inventory/hosts.yml site.yml
<...>
PLAY RECAP *********************************************************************************************
jenkins-agent-01 : ok=18 changed=15 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
jenkins-master-01 : ok=11 changed=9 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
После первоначальной настройки будет выведен dashboard с настройками jenkins:

Следующим шагом необходимо отключить мастер-ноду от процесса запуска сборок.
Для этого достаточно перейти на страницу /computer/(built-in)/configure и выставить настройку
Количество процессов-исполнителей в 0 и сохранить.
Добавление нового агента возможно на странице /computer/new.
Важные настройки, которые необходимо выставить:
Корень удаленной ФС- нужно задать значение из переменной ansiblejenkins_agent_dirКоличество процессов-исполнителей- лучше задать 2 (по умолчанию установлен 1)Способ запуска- нужно выбратьLaunch agent via execution of comand on the controller. Команда выглядит следующим образом:ssh {{jenkins-agent-01}} java -jar {{jenkins_agent_dir}}/agent.jar
Задание 2
Основная часть
- Сделать Freestyle Job, который будет запускать
molecule testиз любого вашего репозитория с ролью.
В качестве репозитория для запуска тестов будет использован netology-devops-ansible-vector.
Создание нового job находится на странице /view/all/newJob. Основные конфигурации, которые необходимо проставить:
Управление исходным кодом-Git. Так же необходимо создать новыйCredentialс пользователемgitи любым приватным ключом, прописанным у пользователяgithub. Ещё очень важно, чтобыgithub.comбыл добавлен вknown_hostпользователяjenkinsна всех машинах.Триггеры сборки- можно активироватьОпрашивать SCM об измененияхи выставить рекомендованное расписаниеH * * * *(раз в час).Сборка- достаточно добавить только один шаг сборкиВыполнить команду shellи добавить в неёmolecule test
- Сделать Declarative Pipeline Job, который будет запускать
molecule testиз любого вашего репозитория с ролью.- Перенести Declarative Pipeline в репозиторий в файл
Jenkinsfile.- Создать Multibranch Pipeline на запуск
Jenkinsfileиз репозитория.- Создать Scripted Pipeline, наполнить его скриптом из pipeline.
- Внести необходимые изменения, чтобы Pipeline запускал
ansible-playbookбез флагов--check --diff, если не установлен параметр при запуске джобы (prod_run = True), по умолчанию параметр имеет значение False и запускает прогон с флагами--check --diff.- Проверить работоспособность, исправить ошибки, исправленный Pipeline вложить в репозиторий в файл
ScriptedJenkinsfile.- Отправить ссылку на репозиторий с ролью и Declarative Pipeline и Scripted Pipeline.

