Установка#

Перед началом установки убедитесь, что выполнена подготовка окружения.

Ручная установка сервиса#

Для ручной установки сервиса выполните следующие действия:

  1. Необходимо разместить содержимое дистрибутива в репозитории SMDL.Core, предназначенном для ядра SMDL и произвести commit и push.

  2. В репозитории конфигураций SMDL.Configs, создать структуру каталогов и файлов.

    smdl_configs.git
      ├── vars
      └── resources
          └── custom
              ├── configs
              |   ├── Dev
              |   |   ├── ReposXml.xml
              |   |   └── ClustersXml.xml
              |   └── CIXml.xml
              └── .jenkins
    
  3. Скопировать содержимое каталога installationResources/vars и разместить его в каталоге vars в репозитории предназначенном для конфигурации SMDL.Configs.

  4. Скопировать configDev.Template.yml из каталога installationResources/templates и разместить его в каталоге resources/custom/.jenkins в репозитории конфигураций SMDL.Configs.

  5. Переименовать configDev.Template.yml в configDev.yml.

  6. В файле 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

    +

  7. Сформировать «CIXml», «ClustersXml» и «ReposXml» в соответствии с документацией и разместить в ранее созданных файлах (шаг 2).

  8. Произвести commit и push проделанных изменений в репозитории конфигураций SMDL.Configs.

  9. Подключить библиотеки в Jenkins

    1. Перейти в ваше пространство Jenkins и нажать 'Configure'

      jenkins_folder_settings

      Рисунок. Выбор пункта меню "Configure"

    2. В открывшемся окне найти раздел 'Pipeline Libraries' и нажать 'Добавить'

      jenkins_library_add

      Рисунок. Добавление новой библиотеки

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

      jenkins_library_devopslib

      Рисунок. Добавление данных для библиотеки

    4. Добавить информацию о второй библиотеке с конфигурацией SMDL. Поле 'Name' (указывается nestedDevopsLib), 'Project Repository' (SSH-ссылка на репозиторий конфигураций SMDL.Configs), остальные поля заполняются по аналогии с предыдущим пунктом.

  10. Создать Jenkins Job SynapseBuilder, SynapseInstaller, OrchestratorToken, PullSecret.

    Процесс создания Jenkins Job:

    1. Перейти в ваше пространство Jenkins и нажать 'New Item'.

      jenkins_job_new

      Рисунок. Выбор пункта меню "New Item"

    2. В открывшемся окне указываем имя Jenkins Job в поле 'Введите имя Item'а', выбираем тип Pipeline и нажимаем 'OK'

      jenkins_job_info

      Рисунок. Заполнение необходимой информации

    3. Далее необходимо в поле '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 из репозитория. Для этого необходимо:

    1. Скрипт, описанный выше сохранить в файл с именем ИмяВашегоPipeline.groovy (пример: SynapseInstaller.groovy).

    2. Полученный файл разместить в репозитории конфигураций SMDL.Configs по пути scripts/СредаВыполнения (пример: scripts/Psi/SynapseInstaller.groovy) и произвести commit и push.

    3. В настройка Jenkins Job в поле 'Pipeline' выбрать режим Pipeline Script from SCM.

      jenkins_job_pipeline_from_scm

      Рисунок. Выбор режима

    4. Добавить информацию о репозитории и путь до Pipeline. Выбрать SCM (тип репозитория), 'Repository URL' (SSH ссылка на репозиторий конфигураций SMDL.Configs), 'Credentials' (SSH Credential созданный ранее), 'Branches to build' (ветка из которой будет выгружаться Pipeline), 'Script Path' (путь до Pipeline в репозитории).

      jenkins_job_pipeline_repo_settings

      Рисунок. Настройка Jenkins Job

    5. После заполнения нажать 'Сохранить'.

    Для ряда Jenkins Job, чтобы обеспечить полную функциональность, необходимо подключать дополнительные библиотеки при задании Pipeline. В таблице ниже представлены Jenkins Jobs и дополнительные библиотеки, необходимые для работы.

    Библиотеки

    Jenkins Jobs

    @Library('ru.sbrf.devsecops@master')

    PublishQG, DPM, NexusPublisher, SynapseBuilder

    @Library('DPMPipelineUtils@1.4') _

    DPM, ScannerSastOss, SynapseBuilder, SynapseInstaller

  11. Запустить созданные на предыдущем шаге Jenkins Job, путем нажатия кнопки 'Собрать сейчас'. В рамках первой сборки будет произведено автообновление Jenkins Job, и параметров запуска в результате чего сборка будет завершена неуспешно. После этого можно начинать пользоваться Jenkins Job.

Автоматизированная установка сервиса#

  1. Создать два каталога на персональном компьютере (для ядра SMDL.Core и конфигураций SMDL.Configs) из которых в дальнейшем будет произведен push в соответствующие репозитории.

  2. Необходимо разместить содержимое дистрибутива в репозитории SMDL.Core, предназначенном для ядра SMDL.

  3. Открыть терминал по данному каталогу.

  4. Перейти в каталог cli, используя команду cd installationResources/cli/

  5. Запуск CLI для установки SMDL:

    1. В интерактивном режиме. В данном режиме все параметры, необходимые для развертывания будут запрашиваться поочередно с подсказками по заполнению и проверками корректности (проверка корректности реализована не для всех параметров). Командна запуска в интерактивном режиме: ./smdl_install

    2. В режиме чтения файла с настройками. В данном режиме можно предварительно подготовить 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 будет настроен и готов к работе.

Также после установки можно дополнительно настроить интеграцию с платформенными зависимостями:

  1. HashiCorp Vault. Описание настройки интеграции отражено в «Руководство по системному администрированию» компонента DevOps инструменты Service Mesh (SMDL), раздел «Описание по интеграции c HashiCorp Vault».

  2. SynAI. Описание настройки интеграции отражено в «Руководство по системному администрированию» компонента DevOps инструменты Service Mesh (SMDL), раздел «Описание по интеграции c SynAI».