8.8 KiB
Выполнение домашнего задания по теме "9.4. 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. Дополнительно стоит задать осмысленное название вID. Ещё очень важно, чтобыgithub.comбыл добавлен вknown_hostпользователяjenkinsна всех машинах.Триггеры сборки- можно активироватьОпрашивать SCM об измененияхи выставить рекомендованное расписаниеH * * * *(раз в час).Сборка- достаточно добавить только один шаг сборкиВыполнить команду shellи добавить в неёmolecule test
- Сделать Declarative Pipeline Job, который будет запускать
molecule testиз любого вашего репозитория с ролью.
Для данного типа pipeline необходимо только добавить Триггеры сборки, как и для предыдущего типа,
а так же задать скрипт:
pipeline {
agent any
stages {
stage('checkout') {
steps {
echo 'Hello World'
git credentialsId: '6659caf8-95a2-4201-b6e0-bfe65e71836d',
url: 'git@github.com:Dannecron/netology-devops-ansible-vector.git',
branch: 'main'
}
}
stage('test') {
steps {
echo 'Run molecule test'
sh 'molecule test'
}
}
}
}
Где значение для credentialsId нужно взять из ID credentials, созданных для git на предыдущем pipeline.
Из данного скрипта можно создать JenkinsfileMultibranch, который будет использоваться на следующем шаге.
- Перенести Declarative Pipeline в репозиторий в файл
Jenkinsfile.- Создать Multibranch Pipeline на запуск
Jenkinsfileиз репозитория.
JenkinsfileMultibranch перенесён в репозиторий netology-devops-ansible-vector.
При создании необходимо заполнить следующие поля:
Branch Sources- репозиторий сJenkinsfile, в данном случае не будет отличий от тестируемого репозитория.
После создания автоматически начнётся сканирование объектов репозитория, а после этого будет запущена сборка на ветке по умолчанию.
- Создать Scripted Pipeline, наполнить его скриптом из pipeline.
Для создания Scripted Pipeline нужно создать Declarative Pipeline, как это было на шаге 2.
Дополнительно необходимо указать This project is parameterized и добавить параметр prod_run.
Для простоты этот параметр лучше задать строкой.
- Внести необходимые изменения, чтобы Pipeline запускал
ansible-playbookбез флагов--check --diff, если не установлен параметр при запуске джобы (prod_run = True), по умолчанию параметр имеет значение False и запускает прогон с флагами--check --diff.
Необходимо внести следующие изменения:
- название
nodeизменить, на то, что было указано при подключении агента - заменить
credentialsId
Изменённый скрипт расположен в файле JenkinsfileScripted
- Проверить работоспособность, исправить ошибки, исправленный Pipeline вложить в репозиторий в файл
ScriptedJenkinsfile.- Отправить ссылку на репозиторий с ролью и Declarative Pipeline и Scripted Pipeline.
Для работы данного playbook необходимо:
- добавить пользователя
jenkinsна машинеjenkins-agent-01вsudoers, отключив проверку по паролю - создать директорию
/opt/jdk/openjdk-11
В противном случае pipeline будет отрабатывать с ошибкой.





