Использование Vagrant и Ansible для разворачивания тестовой инфраструктуры

Публикация № 1531329 20.10.21

Администрирование - Администрирование веб-серверов

В статье опишу порядок настройки набора виртуальных машин для отладки сервисов 1С и связанных с ними.

Вводные

  • Желание освоить подход Инфраструктура как код (wikipedia)
  • Хостовая машина с Windows 10
  • Наличие рабочих удаленных виртуальных машин (KVM и LXC)
  • Необходимость создавать за раз нескольких связанных VM
  • При тестировании по возможности использовать наработки сообщества

Про WSL2 знаю, не устраивает одна виртуальная машина с ubuntu которая непонятно где и как установлена. Docker Desktop удобен для разработки микросервисов и подобному, мне нужен набор VM с настроенными "монолитами" потому что эту связку могу безболезненно переносить в инфраструктуру клиента.

 

Задача

Развернуть сервер 1С с возможностью аутентификации по OpenID Connect.

В качестве сервера аутентификации буду использовать https://www.keycloak.org/

 

Вариант решения

Установка, настройка виртуальной машины.

Распространенные под windows: Hyper-V, VMWare, VirtualBox. При решении "в лоб" вручную создается VM, скачивается установочный образ ОС, производится установка, первоначальная настройка. Немного упрощает процесс наличие подготовленных VM с ОС, например для Hyper-V, но донастройку нужно проводить вручную.

Решением подзадачи является использования системы управления виртуальными машинами https://www.vagrantup.com/. Vagrant по сути набор скриптов на Ruby, который обрабатывает декларативное описание и умеет взаимодействовать с API виртуальных машин. В качестве системы виртуализации использую VirtualBox, потому с ним наиболее продвинутая интеграция. Для каждой из систем виртуализации есть своя специфика взаимодействия, например для Hyper-V можно указать только один сетевой интерфейс, остальные добавляются PowerShell скриптом.

Наиболее часто использую Ubuntu 20.04, поэтому обычный конфиг

Vagrant.configure("2") do |config|
  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://vagrantcloud.com/search.
  config.vm.define "srv1c01" do |srv1c01|
   srv1c01.vm.box = "ubuntu/focal64"
   srv1c01.vm.hostname = "srv1c01.malikov.lan"
   srv1c01.vm.network "public_network", bridge: "Realtek PCIe GbE Family Controller"
   srv1c01.vm.provision "shell", path: "bootstrap.sh"
  end
end

По умолчанию для VirtualBox создается подключение к приватной сети и пробрасывается SSH порт до основного хоста. Добавляю публичную сеть для использования DHCP от своего роутера MikroTik c преобразованием в DNS (пример для MikroTik). Сетевых интерфейсов на моем ПК несколько (от OVPN например), поэтому указываю нужный в параметре bridge, название беру из вывода утилиты от VirtualBox:

VBoxManage.exe list bridgedifs

По умолчанию для VirtualBox создается пользователь vagrant с доступом только по ключу, секретная часть хранится в подпапке проекта ".vagrant". Мне удобнее заходить через putty и в дальнейшем к хостам будет подключаться ansible, поэтому добавляю на создаваемый хост открытую часть своего ключа:

cat /vagrant/authorized_keys >> /home/vagrant/.ssh/authorized_keys

Блок provision отрабатывает только при создании VM или при пересборке при указании ключа --provision. Использую специфику работы с VirtualBox, в которой по умолчанию в целевую машину монтируется текущая папка проекта в "/vagrant".

 

Обновление установка пакетов

Устанавливать пакеты, делать настройки возможно

  • Вручную
  • Скомпоновав набор команд в скрипты
  • Описав декларативно и передав в систему управления конфигурациями

Для установки сервера 1С "вручную"

Скачиваю с https://releases.1c.ru/ дистрибутив сервер 1С для DEB, 

Загружаю дистрибутив на виртуальную машину

vagrant upload c:\Users\Aleksandr\Downloads\deb64_8_3_17_2306.tar.gz /home/vagrant/ srv1c01

Распаковываю, устанавливаю

sudo apt update
tar -xvzf deb64*.tar.gz
sudo dpkg -i 1c-enterprise*.deb

 

Настройка через декларативное описание

Для управления конфигурациями использую https://www.ansible.com/, потому что он относительно прост не требует "агентов" на управляемых машинах.

Конфиг для VM под Ansible, монтирую папку ansible для размещения в ней playbook-ов.

Vagrant.configure("2") do |config|
  config.vm.define "controlnode" do |controlnode|
    controlnode.vm.box = "ubuntu/focal64"
    controlnode.vm.hostname = "controlnode"
    controlnode.vm.network "public_network", bridge: "Realtek PCIe GbE Family Controller"
    controlnode.vm.provision "shell", path: "bootstrap.sh"
    config.vm.synced_folder "ansible/", "/home/vagrant/ansible"
  end
end

 

Скрипт по установке Ansible. Источники гуглю, например по "install ansible ubuntu 20.04", обычно хватает статей на digitalocean.com

sudo apt-add-repository ppa:ansible/ansible
sudo apt install ansible -y

# Переношу закрытую чать ключа для доступа к остальным VM
sudo cp /home/vagrant/ansible/insecure_private_key /home/vagrant/.ssh/id_rsa
sudo chmod 700 /home/vagrant/.ssh/id_rsa

 

Чтобы каждый раз не загружать весь архив с дистрибутивом распаковал его и разместил на доступном с VM FTP. После использовал ansible playbook:

---
- hosts: "onec_srv"
  become: true
  vars:
    ansible_ssh_private_key_file: "/home/vagrant/.ssh/id_rsa"
    disr_url: "https://selcdn.ru/distrib/srv1c"
    version_1c: "8.3.18-1661"
    version_1c_dot: "8.3.18.1661"
  tasks:
    # apt update upgrade
    - name: Update all packages to their latest version
      ansible.builtin.apt:
        update_cache: yes
        name: "*"
        state: latest

    - name: "1C Install a .deb package"
      ansible.builtin.apt:
        deb: "{{ disr_url }}/1c-enterprise-{{ version_1c_dot }}-{{ item }}_{{ version_1c }}_amd64.deb"
      loop:
        - common
        - server
        - ws

с указанием файла hosts

[onec_srv]
server.malikov.lan ansible_user=vagrant

Аутентификация работает через связку "ansible_user=vagrant" и ansible_ssh_private_key_file:

 

Для сервиса keykloack использую отдельную VM

  config.vm.define "auth" do |auth|
    auth.vm.box = "ubuntu/focal64"
    auth.vm.hostname = "auth"
    auth.vm.network "public_network", bridge: "Realtek PCIe GbE Family Controller"
    auth.vm.provision "shell", path: "bootstrap.sh"
  end

Для настройки использую https://github.com/malikov-pro/ansible-role-keycloak, в репозитории описана роль которую можно переиспользовать подключив её в основной playbook сам репозиторий загрузить в подпапку /roles/keycloak

---
- hosts: "auth"
  roles:
    - keycloak
  vars:
    keycloak_admin_password: "123456"

 

Если есть готовая сборка под docker, а под VM нет готового скрипта

Например сервис PlanUML, работает через maven как собирать с ходу непонятно, но есть готовый докер контейнер, тогда на VM собрать

  • Руками https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ru
  • Небольшим скриптом ansible https://medium.com/@pierangelo1982/install-docker-with-ansible-d078ad7b0a54
  • Проработанной ролью https://github.com/geerlingguy/ansible-role-docker

После запустить вручную сервис

docker run -d -p 8080:8080 plantuml/plantuml-server:jetty

Если поискать еще то найдется готовая сборка https://github.com/ansible-playbooks-mamono210/plantuml-server, которая переиспользует роль с docker описанную выше. Заявлено под CentOS, переделать её под Ubuntu думаю не сложно.

 

Итог

На мой взгляд, достаточно удобно собирать тестовые контуры используя описание для Vagrant и Ansible, после переносить настройки на рабочий контур.

Настройку сервисов 1С и Keycloack опишу в отдельной статье.

Благодарю за внимание.

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Gakuseii 1 22.03.23 08:34 Сейчас в теме
добрый день, ссылка на гитхаб не работает для кк
ну и самое интересное не показано, что содержит bootstrap.sh
Оставьте свое сообщение

См. также

Путь самурая. Ставим локальный Сервер взаимодействия

Сервера Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подробная пошаговая инструкция (как делал я) установки Сервера взаимодействия версия 22.0.26 на Windows Server 2022. Установка собственного объектного хранилище с помощью системы MinIO (https://min.io/). Настройка Сервера взаимодействия для обмена файлами в сообщениях.

1 стартмани

07.04.2023    3667    VPanin56    17    

56

Публикатор 1С. Как публиковать базы с комфортом

Администрирование веб-серверов Платформа 1С v8.3 Абонемент ($m)

Сегодня я расскажу вам про публикатор 1С баз. Это приложение, которое позволит с комфортом и удобством управлять зоопарком ваших веб публикаций. Если у вас больше 5 публикаций, и вам надо с ними что-то делать с завидным постоянством. Если для того чтобы опубликовать тестовую базу, вам приходится идти в техподдержку Если вам просто надоело копаться в конфигах, раздумывая, а нигде ли вы не ошиблись в пробелах и запятых - то тогда вам будет интересна эта публикация.

20.03.2023    3853    0    Segate    3    

17

Midnight Commander, установленный с Entware, не выполняет команды и не запускает файлы

Администрирование веб-серверов Linux Бесплатно (free)

Столкнулся с проблемой, установил на роутер Midnigt Commander с репозитория Entware, при попытке выполнения команды программа пишет ошибку "The shell is already running a command". Данная публикация описывает способ решения этой проблемы.

20.03.2023    446    Eugen-S    2    

3

Публикация 1С на Apache SSL в локальной среде разработки

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

В статье описывается установка и настройка веб-сервера Apache для работы с 1С через https.

09.02.2023    2473    lone_mayson    4    

36

Контейнер Docker для размещения публикации базы 1С на разных платформах

Администрирование веб-серверов Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

Появилась необходимость развернуть на одном хосте две публикации базы, но не на одной платформе, а на разных. Тут я расскажу, как это сделать для версии 8.3.22.1704.

02.02.2023    1450    Sney_Kice    1    

19

Быстрое конфигурирование серверов с Ansible

Администрирование веб-серверов Сервера Бесплатно (free)

Всю рутину по обновлению платформы, настройке веб-серверов и серверов хранилищ на всем парке серверов компании можно автоматизировать с помощью удобочитаемых YAML-скриптов Ansible. О том, как написать сценарии такой автоматизации, чтобы запускать их параллельно для группы серверов, на митапе «Инструменты автоматизации рутины в 1С-разработке» рассказал ведущий разработчик компании ПИК Digital Павел Комаров.

26.01.2023    1937    lopatrik    4    

21

Доступ по IP к ИБ, опубликованной через WWW

Информационная безопасность Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Расширение с вариантом фильтра доступа пользователей ИБ по IP. Платформа не ниже 8.3.17.

2 стартмани

06.12.2022    2284    2    mcd2003    10    

6

Получение внешнего IP адреса клиента и сервера за NAT

Администрирование веб-серверов Облачные сервисы, хостинг Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Иногда надо узнать внешний адрес, с которого 1С (клиент или сервер) ходит в интернет.

1 стартмани

25.03.2022    2753    1    blackhorse1976    2    

7

Обновление платформы 1С тонкого клиента с вебсервера без публикации базы данных, когда сервер 1С ПРОФ.

Администрирование веб-серверов Администрирование СУБД Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Обновление платформы 1С: тонкого клиента с вебсервера описывается здесь: https://its.1c.ru/db/v8316doc#bookmark:adm:TI000001058, (11.2.2. Обновление через диалог публикации на веб-сервере) и здесь: https://its.1c.ru/db/v8319doc#bookmark:adm:TI000000428, (6.2. Получение дистрибутива клиентского приложения) - доступно только для КОРП Для ПРОФ реализация полностью описана в данной статье. Выражаю благодарность Панюшкину Михаилу Михайловичу за разбор задачи и доведение ее до практического результата. Обновление не проходит если например предварительно установка выполнялась регламентными политиками и есть в папке conf файл adminstall.cfg Этот файл следует удалить, чтобы данная установка тонкого клиента проходила успешно Применяется только для системы «1С:Предприятие» под ОС Windows. Файл adminstall.cfg указывает на то, что установка системы программ «1С:Предприятие» выполнялась с использованием средств администрирования ОС Windows. Файл располагается в каталоге конфигурационных файлов системы «1С:Предприятие» и представляет собой текстовый документ в кодировке UTF-8. В файле может располагаться единственная строка, определяющая вариант установки: AdmInstall= Описывает режим установки: Logon - установка выполнена с помощью logon-скрипта во время входа пользователя в домен. Restart - установка выполнена с помощью групповых политик.

19.10.2021    9976    ser6702    28    

47

Под капотом IIS, или как сделать WEB публикацию базы 1С без конфигуратора

Администрирование веб-серверов Бесплатно (free)

В интернете есть много инструкций как установить Internet Information Services и опубликовать на нем базу, будь то файловую, или клиент-серверную. Но, крайне мало кто пытается разобраться, как IIS работает, и что делает платформа при публикации базы. В этой статье я покажу как опубликовать базу на IIS без использования конфигуратора.

29.04.2021    18241    evvakra    14    

100

Служебные http-сервисы, которые работают даже в заблокированной базе

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

В этой публикации описывается опыт доступа к служебным http-сервисам в обход установленной блокировки информационной базы.

16.03.2021    6048    ardn    11    

44

Как настраивать кросс-доменные (CORS) запросы к HTTP сервису 1C на веб сервере IIS с сайтом EDIbot

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

Сервис EDIbot позволяет отобразить в виде прогрессивного веб приложения, полученный JSON по REST запросу. Разберемся, как решить проблему кросс-доменных запросов на веб сервере IIS для корректной работы HTTP сервиса 1C и сервиса.

21.10.2020    3839    SizovE    0    

7

Настраиваем PWA приложение на платформе 8.3.18 с бесплатным действительным сертификатом SSL

Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Вышла платформа 8.3.18 с поддержкой PWA приложений. Получаем БЕСПЛАТНЫЙ действительный сертификат SSL. Настраиваем прогрессивное веб приложение для опубликованной бухгалтерии 3.0 на IIS сервере.

18.10.2020    9732    IamAlexy    35    

59

Инструкция по установке redmine, gitea на Ubuntu 20.04

Администрирование веб-серверов Бесплатно (free)

В статье опишу порядок настройки сервисов для групповой работы.

06.07.2020    5508    malikov_pro    3    

13

Вариант настройки сервисов для рабочей группы

Сервера Администрирование веб-серверов Россия Бесплатно (free)

В публикации описан мой вариант построения сервисов для рабочей группы.

24.06.2020    5045    malikov_pro    0    

7

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

HighLoad оптимизация WEB-интеграция Мобильная разработка Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    18560    informa1555    35    

150

Ansible роли для 1С

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

Готовые роли для развертывания 1С через Ansible.

24.03.2020    4213    lopatrik    0    

16

Пошаговая инструкция по установке веб-сервера Apache и завязка с 1С

Инструменты администратора БД Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Данная статья больше предназначена для начинающих администраторов, но «бывалые» тоже могут освежить свои знания и в этой статье в деталях расскажу, как устанавливать Apache и использовать веб-сервер для работы с 1С.

10.03.2020    13679    dy4amaks    10    

37

Простой пример работы с аутентификацией OpenID на IIS

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

OpenID, аутентификация, HTTPS, получение сертификата SSL, веб-сервер IIS, Internet Information Server, самоподписанный сертификат, самозаверенный сертификат.

26.12.2019    16914    budidich    22    

78

Проброс IP-адреса клиента в http-сервис 1С. Реализация для IIS

Администрирование веб-серверов Бесплатно (free)

Настраиваем веб-сервер IIS для передачи в 1С IP-адреса клиента, вызвавшего http-сервис. Разбираемся с этим же вопросом при использовании фронтэнд вебсервера на примере nginx.

01.12.2019    12053    VKislitsin    10    

85

Свой веб интерфейс к 1С: побеждаем CORS на IIS, сохраняя авторизацию

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

Если "веб морда" расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С - это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.

20.08.2019    17094    Fragster    11    

97

1С + IIS + SSL: Перевод опубликованной базы на защищенное соединение https с сертификатом от Let's encrypt

Администрирование веб-серверов Платформа 1С v8.3 1С:CRM ПРОФ, КОРП Абонемент ($m)

Всем Доброго времени! Предлагаю Вам небольшую базовую инструкцию, где я опишу, как быстро перевести опубликованную в веб базу 1С на защищенное https соединение, используя стандартный IIS сервер и бесплатный сертификат SSL от Let's encrypt.

1 стартмани

10.08.2019    45175    aximo    53    

143

Тонкости настройки IIS

Администрирование веб-серверов Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Тонкости и возможные проблемы при настройке IIS для работы с 1C. С учетом обновления платформ большинство инструкций стало неактуально и отнимает лишние время, заставляя выполнять ненужные пункты.

11.12.2018    76160    kas205    34    

109

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе. Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии. Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

04.04.2018    36963    petr.myazin    40    

126

1C + Linux + PostgreSQL + Apache

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

Дружим 1С с Линуксом ИЛИ Установка окружения для работы с 1С на Линуксе под Постгресом и Апачем (в 2023-м году).

26.03.2018    98119    SerVer1C    139    

177

Установщик Apache 2.4

Администрирование веб-серверов Абонемент ($m)

Установщики для Apache 2.4.29 в формате .exe и .msi для ленивых.

1 стартмани

22.01.2018    24153    51    frkbvfnjh    26    

40

Установка сервера Аpache 2.4

Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В публикации описана установка web-сервера Аpache 2.4 на платформе Windows

26.10.2017    186550    ВикторП    20    

120

Настройка веб сервера Apache + 1С (Пошаговое руководство)

Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пошаговое руководство настройки Web сервера Apache на Windows. Не секрет, что файловые базы через веб-сервер будут работать намного шустрее, чем через обычный доступ к сетевому каталогу. Эффект особенно заметен, когда старые компы вообще не справляются с обычным сетевым доступом, регулярно выплевывают 1С. А доступ через веб сервер даже на компьютерах серии "Хлам" работает на ура!

19.07.2017    420147    Aleksey81    174    

369

Публикация базы 1С на веб-сервере Apache на сервере Linux

Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В отличие от других подобных публикаций здесь будет описано как опубликовать базу (располагающуюся на сервере windows) на веб-сервере apache (расположенном на соседнем сервере под linux).

20.09.2014    173755    spezc    86    

110

Обработка POST запросов 1С в связке с Apache

Администрирование веб-серверов Платформа 1С v8.3 Абонемент ($m)

Обработка POST запросов 1С в связке с Apache для тех, кто хотел бы получить некоторые практические советы.

1 стартмани

13.08.2014    22786    32    profiprog1c    8    

7

Решение проблемы с настройкой веб сервисов 1с для Windows Server 2012 R2 и IIS версии 8.5

Администрирование веб-серверов Бесплатно (free)

Борьба с ошибкой Extra content at the end of the document, а также с ошибкой 500 при попытке открытия страницы с ws - описанием в браузере.

16.06.2014    59090    bulpi    16    

22

Пошаговая инструкция настройки web-сервисов для 1Сv8.3 и IIS 8.5

Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пошаговая инструкция настройки web-сервисов для 1Сv8.3 и IIS 8.5. Windows Server 2012 R2 Standard, 1С:Предприятие 8.3 (8.3.4.465)

30.04.2014    531924    alexstey    110    

382

Веб-сервис на стороне 1С: неочевидное

Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

О веб-сервисах, поднятых на стороне 1С под IIS, пишут и говорят много. Но некоторые моменты как бы сами собой подразумеваются, и выявляются лишь методом тыка. Предлагаю обзор, "куда ещё тыкнуться, чтобы наконец заработало".

1 стартмани

20.12.2013    27600    96    Yashazz    14    

14