Автор оригинала: Onyebuchi Valentine Ahiwe.
Я построил несколько проектов Django и развернул на серверах для тестирования на производстве, как среда. Сейчас был админдерный расход, который пришел с этим. В любое время я сделал изменение кода, мне пришлось подключиться к серверу, используйте элемент управления версией для обновления кода и перезапустить такие услуги, как Nginx и Gunicorn, чтобы мои изменения, чтобы задуматься о пределов. Теперь представьте себе делать это сто раз ( вытягивая волосы и кричащие в агонии ). К счастью, в прошлом году я узнал о DEVOPS и несколько хороших инструментов, которые поставляются с ним. ( Drumroll ) Представляем Jenkins, это инструмент CI/CD, который удаляет накладные расходы администратора, которые поставляются с повторяющимися задачами. Теперь давайте попробуем удалить этот администратор, я жаловался на ранее.
Предпосылки Вам понадобится VPS. Вы можете получить один на AWS или GCP. Я буду использовать AWS в этой статье. Вы можете обратиться к моему Статья о настройке VPS на AWS, а также настроить пространство подкачки для вашего VPS. При настройке групп безопасности сервера на AWS откройте следующие порты 22, 80 и 8080. Это позволит вам подключиться к Jenkins ui и веб-сайт образца, которые мы будем использовать. Мы будем использовать изображение CentOS 7 для этого развертывания. Убедитесь, что у вас есть обычный пользователь с привилегиями Sudo для выполнения всей установки и настройки. Вы можете обратиться к этой статье о том, как создать обычный пользователь.
Шаг 1: Установите Jenkins и дополнительные пакеты Мы будем использовать репозиторий, который я настроил со всеми необходимыми сценариями, а также трубопровод Jenkins. Этот проект был создан для случая использования в этой статье, но используя конфигурацию в этом репо, вы можете создать CI/CD для любого проекта. Пройдите через readme, чтобы понять работу в проекте. Вы можете проверить это здесь Отказ Откройте репозиторий и проверьте содержимое Intival-setup.sh.
. Это поможет вам установить некоторые необходимые пакеты. Скопируйте содержимое файла на сервер.
$ vi initial-setup.sh
Сохраните и закройте файл. Запустите скрипт, чтобы установить пакеты.
$ chmod +x initial-setup.sh $ ./initial-setup.sh
После того, как сценарий будет выполняться, посетите свои серверы Public IP-адрес на порту 8080, чтобы просмотреть панель инструментов Jenkins ( HTTP://IP вашего сервера>: 8080 ). Вы увидите экран, похожий на один ниже.
Чтобы получить пароль вашего администратора, запустите эту команду, чтобы получить его.
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Это выпустит ваш пароль администратора. Имя пользователя, связанное с этим паролем, — это администратор, вы хотите войти в систему с этим пользователем. После ввода пароля администратора вы получите страницу, спрашивающую на установку плагинов.
Выберите «Установка предложенных плагинов», чтобы установить некоторые стандартные плагины, которые помогут во время настройки трубопровода. После того, как установка будет сделана, вас просят создать обычный пользователь.
После создания пользователя вас просят установить URL Jenkins. Оставьте его как по умолчанию, и теперь вы должны войти в систему.
Шаг 2: Отключить конфигурацию SELinux и Extra Jenkins SELinux определяет контроль доступа для приложений, процессов и файлов в системе. Он использует политики безопасности, которые являются набором правил, которые показывают SELinux, что может или не может быть доступно, чтобы обеспечить доступ к доступу, разрешенным политикой. Но при попытке отлаживать проблемы с разрешениями, это может иметь смысл временно отключить SELinux. В этом случае вы можете выбрать в режиме допустимого режима SELinux, либо для всей системы, либо для конкретного (набора) типов или отключить его. Запустите эту команду, чтобы проверить состояние SELINUX:
$ sestatus
Если он включен и установлен в режим исполнения, то мы изменим его в разрешительный режим. Nginx может не получить доступ к файлу сокета, если эти инструкции не выполняются. Откройте файл конфигурации SELinux:
$ sudo vi /etc/selinux/config
Изменение принудительно к разрешению
// Remove SELINUX=enforcing // Replace with SELINUX=permissive
Сохраните и закройте файл. Мы предназначены для перезагрузки сервера для изменения в силу, но до того, как давайте сделаем некоторые конфигурации Jenkins для простоты использования. Использование Jenkins на Centos — это хлопот. Одной из причин является то, что пользователь Jenkins устанавливается как Сервисная учетная запись вместо учетной записи пользователя . Это предотвращает пользователю Jenkins наличие суперпользовательских привилегий. Это отличается на Ubuntu, где пользователь Jenkins является учетной записью пользователя, и я могу предоставить привилегии пользователя Sudo с помощью Visudo Отказ Для вашей работы будет работать гладко на CentOS, вы должны переключать пользователь, выполняющий задания от Jenkins пользователю с привилегией Sudo. Я буду переключаться на CentOS пользователя. Откройте этот скрипт (используя VI или другой редактор):
$ sudo vi /etc/sysconfig/jenkins
Найдите эту строку и перейдите на «CentOS» или любой пользователь, который вы предпочитаете:
$JENKINS_USER="centos"
Затем измените право собственности Дженкинс Дом, Webroot and Logs:
$ sudo chown -R centos:centos /var/lib/jenkins $ sudo chown -R centos:centos /var/cache/jenkins $ sudo chown -R centos:centos /var/log/jenkins
Перезапустите Jenkins и проверьте, что пользователь был изменен:
$ sudo /etc/init.d/jenkins restart $ ps -ef | grep jenkins
Теперь вы должны быть в состоянии запустить рабочие места Jenkins в качестве пользователей CentOS. Теперь вы можете перезагрузить сервер:
$ sudo shutdown now -r
Подсоедините обратно в свой экземпляр и проверьте состояние SELINUX:
$ sestatus
Если он изменился на разрешительность, то вы хотите пойти.
Шаг 3: Настройка трубопровода Jenkins Мы почти готовы настроить трубопровод Дженкинса. Мы должны сделать немного домашнего хозяйства. Войдите в панель инструментов Jenkins.
На левой боковой панели нажмите на управление Jenkins. Это открывает панель управления Дженкинсом. Нажмите на «Настроить глобальную безопасность». Прокрутите вниз и включите «включить совместимость прокси» на «защите CSRF». Применить и сохранить.
Теперь мы можем настроить трубопровод Дженкинса. Перейдите в Дженкинс домой и нажмите на новый предмет. Введите имя и выберите Трубопровод:
Перейдите на следующую страницу. Прокрутите вниз, переключите определение трубопровода на «скрипт трубопровода от SCM», выберите Git в качестве SCM и введите URL-адрес вашего репозитория.
Добавьте триггер к трубопроводу, чтобы перезапустить, когда появится новый коммит. Это то, что обновляет код изменения в вашем приложении автоматически без вас вручную запускаю команды. Вы можете добавить несколько триггеров, таких как работает в разное время дня. Триггеры используют формат строки работы Linux Cron. Вы можете прочитать больше об этом здесь Отказ
Как только все это сделано, вы можете подать заявку и сохранить. Ваш конвейер должен начинаться в ближайшее время. Если вы проверяете readme проекта, используемого в этой статье, существуют некоторые предпосылки, которые должны быть выполнены, чтобы все проводиться плавно.
Трубопровод успешно побежал. Хотя это не гарантирует, что все в порядке. Вы можете проверить журналы этапов в трубопроводе, чтобы убедиться, что все работает.
После проверки журналов всех этапов выглядит все, что все прошло нормально. Теперь я могу посетить веб-страницу с помощью IP-адреса сервера.
Сейчас с тем, как был настроен трубопровод, если в репозитории есть новый коммит, он будет вытащить изменения и перераспределить ваше приложение без вашего ручного вмешательства.
Поздравляю!!! Мы смогли устранить накладные расходы администратора, которые поставляются с тестированием вашего проекта Django в области производства, как среда. Это позволит вам внести изменения и увидеть эффекты практически сразу. Удачи!!!
Ссылки ссылок:
- https://medium.com/fusiontec/how-to-run-jenkins-using-the-root-user-in-linux-centos-79d96749ca5a
- https://stackoverflow.com/questions/17940612/authentication-error-in-jenkins-on-using-sudo
Оригинал: «https://www.codementor.io/@vahiwe/build-a-django-ci-cd-pipeline-using-jenkins-1avemkw6hq»