Каталог решений - Установка 1С используя Ansible

Установка 1С используя Ansible

Установка 1С используя Ansible

В наличии

HOWTO. Как быстро обновить платформу на серверах 1С, если у Вас их парк.

Категория:

Описание

Представьте, что у Вас 20 серверов 1С и пришло время обновления релиза платформы. Нужно на каждом сервере установить новую версию платформы, удалить старую, поднять службу агента сервера и т.д. Накапливается масса рутинных операций. Есть несколько вариантов решения. Пойдем от сложного к простому:

  1. Вручную 
  2. Полуавтоматический — подготовить скрипт установки и выполнить его на каждой машине
  3. Автоматический — воспользоваться системой удаленного управления конфигурациями, т.е. с одной машины дать всем серверам команду на выполнение скрипта установки  

В статье будет показано как использовать Ansible для подобного рода задач.

Ansible — система управления конфигурациями, написанная на Python, с использованием декларативного языка разметки для описания конфигураций. Используется для автоматизации настройки и развертывания программного обеспечения. Обычно используется для управления Linux-узлами, но Windows также поддерживается.

С помощью Ansible вы можете написать сценарий автоматизации любой сложности, от создания пользователя, до поднятия сложного окружения продуктивного сервера.

Пойдем по порядку:

В качестве управляющей ноды (где будет установлен Ansible) может выступать только машина с ОС Linux. Поддерживается большинство дистрибутивов. В качестве хостов (где будут выполняться сценарии) могут выступать как Linux, так и Windows машины.

В примере, на управляющей ноде установлена ОС CentOS 7

Установка Ansible:

sudo yum install ansible

Подготовка файла Inventory:

Файл Inventory содержит в себе список хостов, к которым Ansible может подключиться. По умолчанию это файл /etc/ansible/hosts. 
Файл имеет гибкую настройку, мы будем использовать следующую сигнатуру указания хостов.

[group_name]

server_ip

Добавим в него два сервера и объединим их в группу [appservers] 

[appservers]

192.168.0.15
192.168.0.16

Подготовка Windows хоста для работы с Ansible:

Если в случае с Linux хостами доступ к ним осуществляется по SSH и все работает “из коробки”, то для того чтобы Ansible мог управлять Windows хостами, нужно на них включить службу удаленного управления (WS-Management). 
В репозитории Ansible есть PowerShell скрипт который выполнит всю предварительную настройку Windows хоста:

https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1

Запускаем скрипт на Windows машине

powershell.exe -File ConfigureRemotingForAnsible.ps1

Более подробную информацию по настройке Windows хоста можно посмотреть тут:

https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html

Настройка подключения Ansible к группам хостов:

После того как мы подготовили файл Inventory и настроили хост машины, нужно указать параметры подключения к этим машинам (под каким пользователем, через что подключаемся). Настройки подключения хранятся в каталоге /etc/ansible/group_vars
Для каждой группы создается одноименный файл, в котором указываются параметры подключения.

Создаем каталог:

mkdir /etc/ansible/group_vars

Создаем файл с именем нашей группы appservers:

vi /etc/ansible/group_vars/appservers

И вводим в него следующие параметры:

ansible_user: ansible
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_transport: credssp
ansible_winrm_server_cert_validation: ignore

Теперь, ко всем хостам группы appservers, Ansible будет подключаться используя вышеуказанные параметры. Пароль от пользователя ansible мы также можем указать в файле appservers добавив строку:

ansible_password: p@ssw0rd

В целях безопасности мы этого не делаем и запрашивать пароль будем в момент запуска сценария, указав ключ —ask-pass

Проверка подключения Ansible к группе хостов:

Для проверки подключения будем использовать модуль win_ping. Все модули которые могут выполнятся на Windows хостах начинаются с префикса win_. Подробное описание всех модулей можно найти в официальном сайте. 

Выполняем команду

ansible appservers -m win_ping

В случае успешного подключения получим сообщение

192.168.0.15 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Плэйбуки (сценарии) Ansible

Playbook (файл сценариев) — это файл, в котором описываются действия, которые нужно выполнить на какой-то группе хостов. Сценарии описываются в формате YAML

Плэйбук представляет собой набор задач (tasks). Каждая задача выполняется определенным модулем.

В плэйбуке по установке сервера 1С использованы следующие модули:

  • win_service — модуль для работы со службами
  • set_fact — модуль для работы с переменными
  • win_package — модуль установки/удаления пакетов Windows

Отдельно стоит отметить шифрование паролей в плэйбуке. Для этого используется ansible-vault (зашифрованное хранилище)

Чтобы поместить пароль в хранилище воспользуемся следующей командой:

echo -n "p@ssw0rd" | ansible-vault encrypt_string

Ansible потребует установить пароль для vault. Важно его запомнить, т.к. при утере восстановить исходный пароль будет уже невозможно. 

В результате выполнения команды получим пароль в зашифрованном виде:

!vault | $ANSIBLE_VAULT;1.1;AES256 64396632346366373434356466396230364121656130363134316537306339643265656637366565 
3763393238623632663732623034313738386561356232320a333766336638646137316463363031 
66666435333939663832353937623638643764336662343834663338623666653965366233343536 
3232633839646337300a333935333663613864306230343538653837353936373564623636366664 
3537

Теперь вместо пароля мы можем указывать данную строку.

Пример плэйбука по установке платформы:

 

has been added to your cart:
Оформление заказа