Установка#
Перед началом установки убедитесь, что выполнена подготовка окружения.
Ручная установка сервиса#
Для ручной установки сервиса выполните следующие действия:
Разместить содержимое дистрибутива в репозитории SMDL.Core, предназначенном для ядра SMDL и произвести commit и push.
Создать структуру каталогов и файлов, в репозитории конфигураций SMDL.Configs.
smdl_configs.git ├── vars └── resources └── custom ├── configs | ├── Dev | | ├── ReposXml.xml | | └── ClustersXml.xml | └── CIXml.xml └── .jenkinsСкопировать содержимое каталога
installationResources/varsи разместить его в каталогеvarsв репозитории предназначенном для конфигурации SMDL.Configs.Скопировать
configDev.Template.ymlиз каталогаinstallationResources/templatesи разместить его в каталогеresources/custom/.jenkinsв репозитории конфигураций SMDL.Configs.Переименовать
configDev.Template.ymlвconfigDev.yml.Внести следующие корректировки в файле
configDev.yml(если поле необязательно и не будет заполнено, то его следует удалить или заполнить пустой строкой''):Адрес параметра в конфигурационном файле
Значение, которое необходимо подставить
Обязательное
general.Division
Среда работы (Dev/Psi/Prom)
+
general.Segment
Сегмент использования (Dzo/Sigma/Delta)
+
general.sonarQubeUrl
Ссылка для работы с SonarQube. Пример: https://sonar.ru/sonar
-
general.jiraUrl
Ссылка для работы с Jira. Пример: https://jira.ru
+
general.creds.ciCred
ID CredentialsId для обращения к ресурсам с использованием логина и пароля (тип: username with password). Пример: ci-cred
+
general.creds.apiTokenCred
ID CredentialsId для обращения к ресурсам с использованием логина и токена Jenkins (тип: username with password). Пример: ci-token-cred
+
general.creds.mavenCredSettingXml
ID CredentialsId (тип: Secret file) в котором лежит персонализированный settings.xml для Maven. Пример: setting-maven-ci
-
general.creds.AnsibleVaultCredentialsId
ID CredentialsId для шифрации и дешифрации (тип: Secret file). Пример: dev_common_ansible_vault_secret
+
general.jobs.*.checkout.*.credentialsId
ID CredentialsId для обращения к репозиториям по SSH (тип: SSH username with private key). Пример: ssh-cred
+
general.tools.python.name
Имя Jenkins Tool для работы с Python
+
general.tools.python.type
Тип Jenkins Tool для работы с Python
+
general.tools.python.path
Путь до bin файла в Jenkins Tool для работы с Python
+
general.tools.executor.name
Имя Jenkins Tool для работы с системой оркестрации приложений
+
general.tools.executor.type
Тип Jenkins Tool для работы с системой оркестрации приложений
+
general.tools.executor.path
Путь до bin файла в Jenkins Tool для работы с системой оркестрации приложений
+
general.tools.precheckExecutor.name
Имя Jenkins Tool для работы с системой оркестрации приложений в части PreCheck
-
general.tools.precheckExecutor.type
Тип Jenkins Tool для работы с системой оркестрации приложений в части PreCheck
-
general.tools.precheckExecutor.path
Путь до bin файла в Jenkins Tool для работы с системой оркестрации приложений в части PreCheck
-
general.tools.sonarQube.name
Имя Jenkins Tool для сканирования SonarQube
-
general.tools.sonarQube.type
Тип Jenkins Tool для сканирования SonarQube
-
general.tools.sonarQube.path
Путь Jenkins Tool для сканирования SonarQube
-
general.tools.helm.name
Имя Jenkins Tool для работы с Helm
-
general.tools.helm.type
Тип Jenkins Tool для работы с Helm
-
general.tools.helm.path
Путь до bin файла в Jenkins Tool для работы с Helm
-
general.tools.istioctl.name
Имя Jenkins Tool для работы с IstioCTL
-
general.tools.istioctl.type
Тип Jenkins Tool для работы с IstioCTL
-
general.tools.istioctl.path
Путь до bin файла в Jenkins Tool для работы с IstioCTL
-
general.tools.jdk.name
Имя Jenkins Tool для работы с JDK
+
general.tools.jdk.type
Тип Jenkins Tool для работы с JDK
+
general.tools.jdk.path
Путь до bin файла в Jenkins Tool для работы с JDK
-
general.tools.jdkSonar.name
Имя Jenkins Tool для работы с JDK, используемого при сканировании SonarQube
-
general.tools.jdkSonar.type
Тип Jenkins Tool для работы с JDK, используемого при сканировании SonarQube
-
general.tools.jdkSonar.path
Путь до bin файла в Jenkins Tool для работы с JDK
+
general.tools.gradle.name
Имя Jenkins Tool для работы с Gradle
+
general.tools.gradle.type
Тип Jenkins Tool для работы с Gradle
+
general.tools.gradle.path
Путь до bin файла в Jenkins Tool для работы с Gradle
+
general.tools.maven.name
Имя Jenkins Tool для работы с Maven
-
general.tools.maven.type
Тип Jenkins Tool для работы с Maven
-
general.tools.maven.path
Путь до bin файла в Jenkins Tool для работы с Maven
-
general.tools.nodejs.name
Имя Jenkins Tool для работы с NodeJs
-
general.tools.nodejs.type
Тип Jenkins Tool для работы с NodeJs
-
general.tools.nodejs.path
Путь до bin файла в Jenkins Tool для работы с NodeJs
-
general.tools.yq.name
Имя Jenkins Tool для работы с YQ
-
general.tools.yq.type
Тип Jenkins Tool для работы с YQ
-
general.tools.yq.path
Путь до bin файла в Jenkins Tool для работы с YQ
-
general.taskTrackerSettings.fieldCi
Идентификатор поля для КЭ в Jira
+
Сформировать «CIXml», «ClustersXml» и «ReposXml» в соответствии с документацией и разместить в ранее созданных файлах (шаг 2).
Произвести commit и push проделанных изменений в репозитории конфигураций SMDL.Configs.
Подключить библиотеки в Jenkins:
Перейти в ваше пространство Jenkins и нажать „Configure“.

Рисунок. Выбор пункта меню «Configure»
Найти раздел „Pipeline Libraries“ в открывшемся окне и нажать „Добавить“.

Рисунок. Добавление новой библиотеки
Добавить информацию о первой библиотеке с ядром SMDL, заполнить поле „Name“ (указывается devopsLib), поле „Default version“ (ветка из которой будут выгружаться исходники), „Project Repository“ (SSH ссылка на репозиторий ядра SMDL.Core), „Credentials“ (SSH Credential созданный ранее).

Рисунок. Добавление данных для библиотеки
Добавить информацию о второй библиотеке с конфигурацией SMDL. Поле „Name“ (указывается nestedDevopsLib), „Project Repository“ (SSH-ссылка на репозиторий конфигураций SMDL.Configs), остальные поля заполняются по аналогии с предыдущим пунктом.
Создать Jenkins Job SynapseBuilder, SynapseInstaller, OrchestratorToken, PullSecret.
Процесс создания Jenkins Job:
Перейти в ваше пространство Jenkins и нажать „New Item“.

Рисунок. Выбор пункта меню «New Item»
Указать имя Jenkins Job в открывшемся окне в поле „Введите имя Item’а“, выбрать тип Pipeline и нажать „OK“.

Рисунок. Заполнение необходимой информации
Заполнить в поле „Pipeline“ скрипт по шаблону и после заполнения нажать „Сохранить“.
library "nestedDevopsLib" _ devopsLibInit() runPipeline("ИмяВашегоPipeline",[agentLabel: 'ИмяАгентаJenkins', updateParams: true, verbose: false, configFile: "ПутьДоФайлаКонфигурации"])Пример заполнения:
library "nestedDevopsLib" _ devopsLibInit() runPipeline("SynapseBuilder",[agentLabel: 'rhel7 || kubernetes_16Gb || kubernetes_8Gb || kubernetes || Linux_Default', updateParams: true, verbose: false, configFile: ".jenkins/configDev.yml"])
При наличии ограничений на стороне Jenkins, в части задания Pipeline Script, SMDL позволяет работать с Pipeline из репозитория. Для этого необходимо:
Сохранить скрипт, описанный выше, в файл с именем
ИмяВашегоPipeline.groovy(пример:SynapseInstaller.groovy).Разместить полученный файл со скриптом в репозитории конфигураций SMDL.Configs по пути
scripts/СредаВыполнения(пример:scripts/Psi/SynapseInstaller.groovy) и произвести commit и push.Выбрать режим
Pipeline Script from SCMв настройках Jenkins Job в поле „Pipeline“.
Рисунок. Выбор режима
Добавить информацию о репозитории и путь до Pipeline. Выбрать SCM (тип репозитория), „Repository URL“ (SSH ссылка на репозиторий конфигураций SMDL.Configs), „Credentials“ (SSH Credential созданный ранее), „Branches to build“ (ветка из которой будет выгружаться Pipeline), „Script Path“ (путь до Pipeline в репозитории).

Рисунок. Настройка Jenkins Job
Нажать „Сохранить“ после заполнения.
Для ряда Jenkins Job, чтобы обеспечить полную функциональность, необходимо подключать дополнительные библиотеки при задании Pipeline. В таблице ниже представлены Jenkins Jobs и дополнительные библиотеки, необходимые для работы.
Библиотеки
Jenkins Jobs
@Library(„ru.sbrf.devsecops@master“)
PublishQG, DPM, NexusPublisher, SynapseBuilder
@Library(„DPMPipelineUtils@1.4“) _
DPM, ScannerSastOss, SynapseBuilder, SynapseInstaller
Запустить созданные на предыдущем шаге Jenkins Job, путем нажатия кнопки „Собрать сейчас“. В рамках первой сборки будет произведено автообновление Jenkins Job, и параметров запуска в результате чего сборка будет завершена неуспешно. После этого можно начинать пользоваться Jenkins Job.
Автоматизированная установка сервиса#
Для автоматизированной установки сервиса необходимо:
Создать два каталога на персональном компьютере (для ядра SMDL.Core и конфигураций SMDL.Configs) из которых в дальнейшем будет произведен push в соответствующие репозитории.
Разместить содержимое дистрибутива в репозитории SMDL.Core, предназначенном для ядра SMDL.
Открыть терминал по данному каталогу.
Перейти в каталог
cli, используя командуcd installationResources/cli/Запустить CLI для установки SMDL. Существует два режима:
В интерактивном режиме. В данном режиме все параметры, необходимые для развертывания будут запрашиваться поочередно с подсказками по заполнению и проверками корректности (проверка корректности реализована не для всех параметров). Командна запуска в интерактивном режиме:
./smdl_installВ режиме чтения файла с настройками. В данном режиме можно предварительно подготовить JSON-файл с настройками для разворота SMDL. Также данный файл будет генерироваться по результатам установки SMDL с использованием CLI в интерактивном режиме. Данный файл можно в дальнейшем использовать для обновления SMDL. Командна запуска в режиме чтения файла с настройками:
./smdl_install -f settings.jsonПример файла с настройками:{ "type_install": "dev", "format_install": "update", "need_create_job": "y", "path_to_repo_configs": "/Users/user_login/IdeaProjects/importSMDLConfigs", "segment": "Dzo", "smdl_core_git_ssh_target": "ssh://git@example.ru:7998/sydevops/importsmdl.git", "smdl_configs_git_ssh_target": "ssh://git@example.ru:7998/sydevops/importsmdlconfigs.git", "branch_target": "master", "slave_builder_job": "builderAgent", "slave_other_jobs": "agent", "tool_python_name": "ansible-core2.10.3", "tool_python_type": "org.jenkinsci.plugins.ansible.AnsibleInstallation", "tool_python_path": "python3.6", "jenkins_url": "https://jenkins.ru/jenkins-ci/job/synapse/job/DevopsLib/", "ci_number": "00000017", "nexus_url": "https://nexus.ru/nexus-cd", "nexus_group_id": "nexus_PROD.CI00000017_synapse", "nexus_artifact_id": "SYNAPSE", "nexus_dev_repo": "nexus_PROD", "nexus_release_repo": "nexus_PROD", "docker_registry_url": "registry.ru", "docker_registry_ci": "ci00000182_sydevops", "docker_registry_project": "ci00000182_sydevops", "dev_docker_registry_url": "registry.ru/repo", "docker_dev_repo": "devrepo", "release_docker_registry_url": "registry.ru/repo", "docker_release_repo": "releaserepo", "docker_release_repo_prefix": "repoprefix", "ci_credentials_id": "tuz_ci_sybuild", "ssh_credentials_id": "ssh-tuz_ci_sybuild", "ci_token_credentials_id": "tuz_ci_sybuild_jenkins_token", "ansible_vault_credentials_id": "dev_common_ansible_vault_secret", "orchestrator_cluster_url": "https://api.k8s-cluster.ru:6443", "orchestrator_project_array": "k8s-project1,k8s-project2", "projects_config_git_url_sources": "ssh://git@example.ru:7998/synapse/synapse-config-dev-gen.git", "synapse_git_url_sources": "ssh://git@example.ru:7998/synapse/synapse-federal.git", "tool_executor_name": "oc3.11.0", "tool_executor_type": "oc", "tool_executor_path": "oc", "tool_jdk_name": "openjdk-11.0.2_linux", "tool_jdk_type": "jdk", "tool_jdk_path": "", "tool_gradle_name": "gradle-4.10.2", "tool_gradle_type": "gradle", "tool_gradle_path": "", "tool_yq_name": "yq-4.20.2", "tool_yq_type": "com.cloudbees.jenkins.plugins.customtools.CustomTool", "tool_yq_path": "yq_linux_amd64", "jira_url": "https://jira.ru", "jira_field_ci": "customfield_18300" }
По результатам автоматизированной установки SMDL будет настроен и готов к работе.
Также после установки можно дополнительно настроить интеграцию с платформенными зависимостями:
HashiCorp Vault. Описание настройки интеграции отражено в «Руководство по системному администрированию» компонента DevOps инструменты Service Mesh (SMDL), раздел «Описание по интеграции c HashiCorp Vault».
SynAI. Описание настройки интеграции отражено в «Руководство по системному администрированию» компонента DevOps инструменты Service Mesh (SMDL), раздел «Описание по интеграции c SynAI».