Установка#
Перед началом установки убедитесь, что выполнена подготовка окружения.
Ручная установка сервиса#
Для ручной установки сервиса выполните следующие действия:
Необходимо разместить содержимое дистрибутива в репозитории 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.В настройка Jenkins Job в поле 'Pipeline' выбрать режим
Pipeline Script from SCM.
Рисунок. Выбор режима
Добавить информацию о репозитории и путь до 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».