Один пункт для установки сервера SonarQube в экземпляр AWS EC2

Написание чистого кода — это искусство. Это путь на корабль мастера/мастерицы программного обеспечения. Но иногда не все владеют этим искусством. Как говорится, чтобы овладеть навыком, требуется 10 000 часов. Поэтому нам нужно что-то, что заставит разработчиков команды писать код более чистым и безопасным способом.

SonarQube — это удивительный инструмент, который помогает в этом. Он помогает обнаружить запахи кода, потенциальные ошибки и уязвимости безопасности в вашем коде. Он может интегрироваться в существующий рабочий процесс, чтобы обеспечить непрерывную проверку кода в ветках проекта и запросах на исправление.

SonarQube можно запустить на локальной машине, в контейнере docker или разместить на сервере. Если требуется использовать его для всей команды и планируется интеграция в конвейер CI, у вас есть единственный вариант — разместить его на сервере. В этой статье мы расскажем о размещении его на экземпляре AWS EC2.

Сначала о главном:

Предполагается, что читатель имеет базовое представление об облаке, серверах, CI/CD, CLI, базах данных. Знакомство с экосистемой AWS не помешает. Стараемся изложить все как можно проще, даже если читатель не знаком с этими терминами.

Создание экземпляра AWS EC2:

Создайте экземпляр AWS EC2. Просто выкладываю скриншот конфигурации, так как цель этой статьи не направлена на создание экземпляра EC2.

Важное замечание: будьте внимательны при выборе образа машины Amazon Machine Image (AMI). Выберите Amazon Linux AMI 2018.03.0 (ami-005956c5f0f757d37). Этот образ включает PostgreSql, который мы будем использовать в дальнейших шагах.

Скачайте файл «.pem» при создании экземпляра и сохраните его на своей машине. Это необходимо для входа в экземпляр по ssh в дальнейших шагах.
Установка сервера SonarQube в созданный выше экземпляр:

SSHing into the instance :

Подключитесь к экземпляру EC2 с помощью защищенной оболочки. Спасибо серверу jumpbox, который позволяет нам это сделать.

ssh -i <<path to your .pem file>> ec2-user@<<ip address of your EC2>>
Войдите в полноэкранный режим Выход из полноэкранного режима

Настройка PostgreSql : Мы должны настроить базу данных для sonarqube, чтобы сохранять анализ отчетов. Это также поможет в сохранении версий отчетов. Поддерживаемые базы данных включают Oracle, Microsoft SQL server и PostgreSQL. В данном случае мы будем использовать PostgreSQL.

sudo yum install postgre96 postgresql96-server
Вход в полноэкранный режим Выход из полноэкранного режима

Примечание: Установите версию выше, чем 9.3. Версия по умолчанию, которая будет установлена, если вы не укажете версию в команде, будет 9.3, а она не поддерживается SonarQube.

Если вы собираетесь использовать другой AMI, отличный от вышеупомянутого, ознакомьтесь с поддерживаемыми версиями postgresql по этой ссылке.

Приведенные ниже команды не требуют пояснений. Выполните их в таком порядке:

sudo service postgresql96 initdb //creating a new postgre cluster
Войти в полноэкранный режим Выйти из полноэкранного режима
sudo service postgresql96 start  // starting the postgre sevice
Войти в полноэкранный режим Выйти из полноэкранного режима
sudo passwd postgres  // changing the password of the default server
Войти в полноэкранный режим Выход из полноэкранного режима
su — postgres // login with the new password
Войти в полноэкранный режим Выход из полноэкранного режима
psql // start the shell
Войти в полноэкранный режим Выход из полноэкранного режима

Создайте пользователя и базу данных для гидролокатора:

CREATE USER sonar WITH ENCRYPTED PASSWORD ‘sonar_password’;

CREATE DATABASE sonarqube;

GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar

Now we need to edit the authentication modes of postgresql.

Open the file in below path in vim :

sudo vi /var/lib/pgsql96/data/pg_hba.conf
Войти в полноэкранный режим Выйти из полноэкранного режима

Измените режимы, как показано ниже: (Выделено печатными буквами)

TYPE DATABASE USER ADDRESS METHOD
# “local” is for Unix domain socket connections only
local all sonar md5

local all all peer

# IPv4 local connections:

host all all 127.0.0.1/32 md5

# IPv6 local connections:

host all all ::1/128 md5
Войти в полноэкранный режим Выйти из полноэкранного режима

Перезапустите сервер postgreSQL, чтобы новые режимы аутентификации были применены.

sudo service postgresql96 restart
Installing OpenJDK11
Войти в полноэкранный режим Выйти из полноэкранного режима

Для запуска SonarQube 7.9 и выше нам необходим JDK 11 или выше. Экземпляр AWS EC2 поставляется с дистрибутивом java от Amazon corretto. Но лучше придерживаться openJDK.

Загрузите zip-архив в экземпляр:

curl -O https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Распакуйте zip-архив:

tar zxvf openjdk-11.0.1_linux-x64_bin.tar.gz
Войти в полноэкранный режим Выйдите из полноэкранного режима

Переместите папку в нужное вам место (это необязательно)

sudo mv jdk-11.0.1 /usr/local/
Войдите в полноэкранный режим Выйти из полноэкранного режима

Изменить доступ к папке JDK:

sudo chmod -R 755 /usr/local/jdk-11.0.1
Войти в полноэкранный режим Выйти из полноэкранного режима

Добавить домашний путь java:

export JAVA_HOME=/usr/local/jdk-11.0.1export PATH=$JAVA_HOME/bin:$PATH
Войти в полноэкранный режим Выйти из полноэкранного режима

проверьте версию java:

java -version Это должно показать установленную версию java в экземпляре.
Установка SonarQube

Мы собираемся загрузить двоичные файлы и использовать их для установки.

Примечание: Пожалуйста, будьте внимательны к редакции, которую вы собираетесь установить. Sonarqube поставляется в редакциях community, developer и enterprise.

В этой статье мы будем использовать редакцию community. Более подробную информацию можно найти по этой ссылке. Щелкните правой кнопкой мыши на соответствующей кнопке загрузки и выберите copy link location, если вы хотите установить другую редакцию.

Скачайте двоичные файлы:

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.3.1.34397.zip

Unzip the binaries:

unzip sonarqube-8.3.1.34397.zip
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Переместите путь к файлу в нужное место:

sudo mv -v sonarqube-8.3.1.34397/* /opt/sonarqube
Войдите в полноэкранный режим Выйти из полноэкранного режима

Создайте группу для пользователей сонара:

sudo groupadd sonar
Войти в полноэкранный режим Выйти из полноэкранного режима

Создать пользователя:

sudo useradd -c “Sonar System User” -d /opt/sonarqube -g sonar -s /bin/bash sonar
Войти в полноэкранный режим Выход из полноэкранного режима

Активация пользователя с паролем:

sudo passwd sonar
Вход в полноэкранный режим Выход из полноэкранного режима

Добавление пользователя sonar к пользователю EC2:

sudo usermod -a -G sonar ec2-user
Войти в полноэкранный режим Выход из полноэкранного режима

Выйдите из ec2-user bash и снова подключитесь к серверу, чтобы загрузить новую группу для ec2-user

Измените права собственности на все файлы sonar на пользователя sonar:

sudo chown -R sonar:sonar /opt/sonarqube
Войти в полноэкранный режим Выйти из полноэкранного режима

Изменить привилегии доступа к файлам:

sudo chmod -R 775 /opt/sonarqube
Войти в полноэкранный режим Выйти из полноэкранного режима

Настройка сервера SonarQube:

Установите запуск от имени пользователя:

sudo vi /opt/sonarqube/bin/linux-x86–64/sonar.sh
Войти в полноэкранный режим Выход из полноэкранного режима

Найдите строку RUN_AS_USER, откомментируйте ее, удалив знак фунта, и введите sonar user как значение ниже

RUN_AS_USER=sonar
Войти в полноэкранный режим Выйти из полноэкранного режима

Измените sonar.properties, чтобы добавить данные о postgreSQL:

sudo vi /opt/sonarqube/conf/sonar.properties
Войти в полноэкранный режим Выйти из полноэкранного режима

Добавьте имя пользователя jdbc и пароль:

sonar.jdbc.username=sonar sonar.jdbc.password=sonar_password
Войти в полноэкранный режим Выйти из полноэкранного режима

Снимите комментарий Postgres driver property.Remove current schema param, если вы не используете пользовательскую схему для базы данных SonarQube

sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
Войдите в полноэкранный режим Выйти из полноэкранного режима

задать путь для выделенного тома с fast io для хранения данных Elasticsearch

sonar.path.data=/path/to/fast/io/volume/data sonar.path.temp=/path/to/fast/io/volume/temp
Войти в полноэкранный режим Выйти из полноэкранного режима

Запустите сервер:

$/opt/sonarqube/bin/linux-x86–64/sonar.sh start
Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы хотите просматривать журналы сервера в терминале, выполните следующие действия:

$/opt/sonarqube/bin/linux-x86–64/sonar.sh console
Войти в полноэкранный режим Выйти из полноэкранного режима

Ура!!! Теперь ваш сонар должен работать. Вы можете получить доступ к пользовательскому интерфейсу sonarQube по адресу

http://<<EC2 instance public ip>>:9000/sonarqube
Войти в полноэкранный режим Выйти из полноэкранного режима

Соображения:

Мы установили PostgreSQL внутри экземпляра. Это делает его государственным и создает единую точку отказа базы данных, если экземпляр EC2 выйдет из строя. Рассмотрите возможность использования AWS RDS для настройки вместо внутренней БД, как мы сделали здесь. Это поможет сохранить базу данных, даже если экземпляр выйдет из строя. Как только новый экземпляр снова подключится к базе данных в AWS RDS, вы получите все обратно.
Заключение:

Постарался охватить все ошибки, которые встречались при установке SonarQube в EC2. Надеюсь, это поможет кому-то не повторять их!

Бог в помощь!!!

Ссылки, использованные для написания этой статьи:

https://stackoverflow.com/questions/44658510/setting-up-sonarqube-on-aws-using-ec2

https://medium.com/@mkaschke/how-to-install-sonarqube-on-aws-ec2-20e3a2fec634

https://medium.com/@harith.sankalpa/a-complete-guide-to-install-sonarqube-server-in-amazon-linux-ed1fee227d81

https://docs.sonarqube.org/latest/setup/install-server/

Эта статья была первоначально опубликована на https://akhil-ghatiki.github.io/#/sonar-aws

Оцените статью
Procodings.ru
Добавить комментарий