Установка плагина через Ansible на Alt Linux#

Что такое Ansible#

Ansible — инструмент автоматизации, который позволяет устанавливать и настраивать ПО сразу на множестве машин одной командой, без необходимости заходить на каждую вручную.

Установка Ansible#

Обновление системы#

Перед установкой Ansible необходимо обновить операционную систему:

sudo apt-get update
sudo apt-get upgrade

Установка зависимостей#

Для работы Ansible требуются некоторые зависимости:

sudo apt-get install software-properties-common sshpass

sshpass необходим для передачи пароля при SSH-подключении к хостам.

Установка Ansible#

sudo apt-get install ansible

Проверка установки#

После установки проверьте работоспособность:

ansible --version

При корректной установке будет выведена информация о версии.

Структура репозитория#

.
├── ansible.cfg
├── inventory
├── install-plugin.yaml
└── files/
    ├── globalerp-browser-extension-latest-alt1.x86_64.rpm
    └── globalerp-desktop-agent-latest-alt1.x86_64.rpm

Описание файлов:

  • ansible.cfg — файл конфигурации Ansible.

  • inventory — файл инвентаризации, содержащий список хостов для установки плагина.

  • install-plugin.yaml — основной плейбук, выполняющий полный цикл установки плагина.

  • files/ — директория с RPM-пакетами (плагином и расширением), которые будут скопированы на все хосты.

Файл ansible.cfg#

[defaults]
host_key_checking = False

Отключает проверку SSH-fingerprint при первом подключении к хостам, поэтому предварительно заходить на каждую машину вручную не нужно.

Подготовка пакетов#

Скачайте актуальные RPM-пакеты в директорию files/:

wget -P files/ https://repo.global-system.ru/artifactory/common/ru/bitec/gs-browser-extension/rpm/globalerp-browser-extension-latest-alt1.x86_64.rpm
wget -P files/ https://repo.global-system.ru/artifactory/common/ru/bitec/gs-desktop-agent/linux/rpm/globalerp-desktop-agent-latest-alt1.x86_64.rpm

Настройка хостов#

Для автоматизации необходимо настроить хосты, на которых будут выполняться задачи. Для этого создайте файл inventory и перечислите в нём список хостов.

Пример файла inventory#

[browser_hosts]
alt10 ansible_host=<ip_address>
alt11 ansible_host=<ip_address>
[browser_hosts:vars]
ansible_user=<user>
ansible_ssh_pass=<password>
ansible_become=true
ansible_become_method=sudo
ansible_become_pass=<password>

где <ip_address> — IP-адрес хоста, <user> — имя пользователя, <password> — пароль.

Плейбук install-plugin.yaml#

- name: Install browser extension and desktop agent via RPM
  hosts: browser_hosts
  become: true
  vars:
    extension_rpm_src: "files/globalerp-browser-extension-latest-alt1.x86_64.rpm"
    extension_rpm_dest: "/tmp/globalerp-browser-extension-latest-alt1.x86_64.rpm"
    agent_rpm_src: "files/globalerp-desktop-agent-latest-alt1.x86_64.rpm"
    agent_rpm_dest: "/tmp/globalerp-desktop-agent-latest-alt1.x86_64.rpm"
  tasks:
    - name: Copy browser extension RPM to host
      ansible.builtin.copy:
        src: "{{ extension_rpm_src }}"
        dest: "{{ extension_rpm_dest }}"
        mode: "0644"
    - name: Install browser extension from RPM
      ansible.builtin.command: "apt-get -y install {{ extension_rpm_dest }}"
    - name: Copy desktop agent RPM to host
      ansible.builtin.copy:
        src: "{{ agent_rpm_src }}"
        dest: "{{ agent_rpm_dest }}"
        mode: "0644"
    - name: Install desktop agent from RPM
      ansible.builtin.command: "apt-get -y install {{ agent_rpm_dest }}"

Запуск#

Установка плагина на все хосты из inventory:

ansible-playbook -i inventory install-plugin.yaml