Содержание

1. Установка приложений через репозиторий

1.1. Установка/обновление Р7-Органайзер

1.1.1. Создайте файл r7-organizer.yml со следующим содержанием:

---
- name: Установка Р7-Органайзер
  hosts: all
  gather_facts: true
  become: true
  tasks:
    - name: Определение пакетного менеджера
      ansible.builtin.debug:
        var: ansible_pkg_mgr
      # register: ansible_pkg_mgr
 
    - name: Установка через APT
      block:
        - name: Установка GPG ключа
          ansible.builtin.apt_key:
            url: https://download.r7-office.ru/repos/RPM-GPG-KEY-R7-OFFICE.public
            state: present
            keyring: /etc/apt/trusted.gpg.d/r7.gpg
 
        - name: Изменение прав на ключ
          ansible.builtin.file:
            path: /etc/apt/trusted.gpg.d/r7.gpg
            mode: '0644'
 
        - name: Добавить репозиторий в файл
          ansible.builtin.apt_repository:
            repo: 'deb https://downloads.r7-office.ru/repository/r7-desktop-astra/ astralinux main'
            state: present
            filename: r7
 
        - name: Копирование файла лицензии
          ansible.builtin.copy:
            src: /mnt/license.lickey
            dest: /mnt/license.lickey
 
        - name: Копирование файла auth.conf.d/r7.conf
          ansible.builtin.copy:
            src: /mnt/r7.conf
            dest: /etc/apt/auth.conf.d/r7.conf
 
        - name: Установка прав на файл r7.conf
          ansible.builtin.file:
            path: /etc/apt/auth.conf.d/r7.conf
            mode: '600'
 
        - name: Обновление APT
          ansible.builtin.apt:
            update_cache: yes
 
        - name: Установка/обновление пакета r7-organizer
          ansible.builtin.apt:
            name: r7-organizer
            state: latest
 
        - name: Активация
          ansible.builtin.shell: |
              #!/bin/bash
              SOURCE_FILE="/mnt/license.lickey"
              while IFS=: read -r username _ uid gid _ homedir _; do
                if [ "$uid" -ge 1000 ] && [ -d "$homedir" ]; then
                  mkdir -p "$homedir/.r7organizer/license_pro/"
                  cp "$SOURCE_FILE" "$homedir/.r7organizer/license_pro"
                  chown -R "$username":"$gid" "$homedir/.r7organizer"
                  rm -fr "$homedir/.r7organizer/demo"
                fi
              done < /etc/passwd
              rm -f /mnt/license.lickey
 
      when: ansible_pkg_mgr == "apt"
 
    - name: Установка через YUM
      block:
        - name: Создать директорию для репозиториев yum
          ansible.builtin.file:
            path: /etc/yum.repos.d
            state: directory
 
        - name: Добавление репозитория r7
          ansible.builtin.yum_repository:
            name: r7
            description: r7
            baseurl: https://downloads.r7-office.ru/repository/r7-desktop-yum/
            enabled: 1
            gpgcheck: 1
            gpgkey: https://download.r7-office.ru/repos/RPM-GPG-KEY-R7-OFFICE.public
            sslverify: 0
            username: desktop
            password: gyxiLab84FByn7sCTd5JY
 
        - name: Выполнение команды yum makecache
          yum:
            update_cache: yes
            state: present
 
        - name: Установка/обновление пакет r7organizer
          yum:
            name: r7organizer
            state: latest
 
        - name: Активация
          shell: |
            #!/bin/bash
            SOURCE_FILE="/mnt/license.lickey"
            while IFS=: read -r username _ uid gid _ homedir _; do
              if [ "$uid" -ge 1000 ] && [ -d "$homedir" ]; then
                mkdir -p "$homedir/.r7organizer/license_pro/"
                cp "$SOURCE_FILE" "$homedir/.r7organizer/license_pro"
                chown -R "$username":"$gid" "$homedir/.r7organizer"
                rm -fr "$homedir/.r7organizer/demo"
              fi
            done < /etc/passwd
            rm -f /mnt/license.lickey
             
      when: ansible_distribution == "REDOS" or ansible_distribution == "RED OS" or ansible_pkg_mgr == "dnf" or ansible_pkg_mgr == "yum"

1.1.2. Создайте файл inventory.yaml, в котором нужно указать список клиентов, на которых необходимо выполнить установку

all:
  hosts:
    client.domain.test:
      ansible_host: 192.168.100.111
      ansible_user: root
      ansible_password: password
    client123.domain.test:
      ansible_host: 192.168.100.112
      ansible_user: root
      ansible_password: password

Где,

  • client.domain.test — имя клиента;
  • 192.168.100.111 — IP-адрес клиента;
  • root — пользователь с правами на установку приложений;
  • password — пароль пользователя.

1.1.3. Проверьте подключение указав устройства из inventory.yaml командой:

ansible all -m ping -i inventory.yml

Перед запуском playbook убедитесь, что на сервере ansible находится файл лицензии по указанному пути /mnt/license.lickey и файл авторизации /mnt/r7.conf со следующим содержимым:

machine downloads.r7-office.ru
login desktop
password gyxiLab84FByn7sCTd5JY

1.1.4. Запустите playbook с использованием inventory.yaml командой:

ansible-playbook -i inventory.yml r7-organizer.yml

1.2. Установка/обновление Р7-Редактор

1.2.1. Создайте файл r7-desktop.yml со следующим содержанием:

---
- name: Установка Р7-Редактор
  hosts: all
  gather_facts: true
  become: true
  tasks:
    - name: Определение пакетного менеджера
      ansible.builtin.debug:
        var: ansible_pkg_mgr
 
    - name: Установка через APT
      block:
        - name: Установка ключа
          apt:
            deb: https://download.r7-office.ru/repos/dist/r7-office-keys_1.0-1_all.deb
            state: present
 
        - name: Изменение прав на ключ
          ansible.builtin.file:
            path: /etc/apt/trusted.gpg.d/r7.gpg
            mode: '0644'
 
        - name: Добавить репозиторий в файл
          ansible.builtin.apt_repository:
            repo: 'deb https://downloads.r7-office.ru/repository/r7-desktop-astra/ astralinux main'
            state: present
            filename: r7
 
        - name: Копирование файла auth.conf.d/r7.conf
          ansible.builtin.copy:
            src: /mnt/r7.conf
            dest: /etc/apt/auth.conf.d/r7.conf
 
        - name: Установка прав на файл r7.conf
          ansible.builtin.file:
            path: /etc/apt/auth.conf.d/r7.conf
            mode: '600'
 
        - name: Обновление APT
          ansible.builtin.apt:
            update_cache: yes
 
        - name: Установка/обновление пакета r7-office
          ansible.builtin.apt:
            name: r7-office
            state: latest
 
        - name: Создание директории лицензии
          ansible.builtin.file:
            path: /etc/r7-office/license
            state: directory
 
        - name: Активация
          ansible.builtin.copy:
            src: /mnt/license.lickey
            dest: /etc/r7-office/license/license.lickey
 
      when: ansible_pkg_mgr == "apt"
 
    - name: Установка через YUM
      block:
        - name: Проверка версии CentOS
          block:
            - name: Установка rpmfusion
              ansible.builtin.yum_repository:
                name: rpmfusion
                description: RPM Fusion
                baseurl: https://download1.rpmfusion.org/free/el/7/x86_64/
                gpgcheck: yes
                gpgkey: https://download1.rpmfusion.org/RPM-GPG-KEY-rpmfusion-free-el-7
                enabled: yes
          when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '9'
 
        - name: Создать директорию для репозиториев yum
          ansible.builtin.file:
            path: /etc/yum.repos.d
            state: directory
 
        - name: Добавление репозитория r7
          ansible.builtin.yum_repository:
            name: r7
            description: r7
            baseurl: https://downloads.r7-office.ru/repository/r7-desktop-yum/
            enabled: 1
            gpgcheck: 1
            gpgkey: https://download.r7-office.ru/repos/RPM-GPG-KEY-R7-OFFICE.public
            sslverify: 0
            username: desktop
            password: gyxiLab84FByn7sCTd5JY
 
        - name: Выполнение команды yum makecache
          yum:
            update_cache: yes
            state: present
 
        - name: Установка/обновление пакет r7-office
          yum:
            name: r7-office
            state: latest
 
        - name: Создание директории лицензии
          ansible.builtin.file:
            path: /etc/r7-office/license
            state: directory
 
        - name: Активация
          ansible.builtin.copy:
            src: /mnt/license.lickey
            dest: /etc/r7-office/license/license.lickey
 
      when: ansible_distribution == "REDOS" or ansible_distribution == "RED OS" or ansible_pkg_mgr == "dnf" or ansible_pkg_mgr == "yum"

1.2.2. Создайте файл inventory.yaml, в котором нужно указать список клиентов, на которых необходимо выполнить установку

all:
  hosts:
    client.domain.test:
      ansible_host: 192.168.100.111
      ansible_user: root
      ansible_password: password
    client123.domain.test:
      ansible_host: 192.168.100.112
      ansible_user: root
      ansible_password: password

Где,

  • client.domain.test — имя клиента;
  • 192.168.100.111 — IP-адрес клиента;
  • root — пользователь с правами на установку приложений;
  • password — пароль пользователя.

1.2.3. Проверьте подключение указав устройства из inventory.yaml командой:

ansible all -m ping -i inventory.yml

Запустите playbook с использованием inventory.yaml командой:

Перед запуском playbook убедитесь, что на сервере ansible находится файл лицензии по указанному пути /mnt/license.lickey

ansible-playbook -i inventory.yml r7-organizer.yml

2. Установка приложений через пакет

2.1. Установка Р7-Органайзер

2.1.1. Создайте файл r7-organizer.yml со следующим содержанием:

---
- name: Установка Р7-Органайзер
  hosts: all
  gather_facts: true
  become: true
  tasks:
 
    - name: Distribution
      ansible.builtin.debug:
        var: ansible_distribution
       
    - name: Определение пакетного менеджера
      ansible.builtin.debug:
        var: ansible_pkg_mgr
         
    - name: Астра Линукс
      block:
        - name: Копирование deb-пакета
          ansible.builtin.copy:
            src: /mnt/r7-organizer.deb
            dest: /tmp/r7-organizer.deb
  
        - name: Установка Р7-Органайзер
          apt:
            deb: /tmp/r7-organizer.deb
            state: present
 
        - name: Копирование файла лицензии
          ansible.builtin.copy:
            src: /mnt/license.lickey
            dest: /mnt/license.lickey
 
        - name: Активация
          ansible.builtin.shell: |
            #!/bin/bash
            SOURCE_FILE="/mnt/license.lickey"
            while IFS=: read -r username _ uid gid _ homedir _; do
              if [ "$uid" -ge 1000 ] && [ -d "$homedir" ]; then
                mkdir -p "$homedir/.r7organizer/license_pro/"
                cp "$SOURCE_FILE" "$homedir/.r7organizer/license_pro"
                chown -R "$username":"$gid" "$homedir/.r7organizer"
                rm -fr "$homedir/.r7organizer/demo"
              fi
            done < /etc/passwd
            rm -f /mnt/license.lickey
  
      when: ansible_distribution == "Astra Linux" or ansible_distribution == "Ubuntu" or ansible_distribution == "Debian"
  
    - name: Установка через YUM/DNF
      block:
        - name: Копирование rpm-пакета
          ansible.builtin.copy:
            src: /mnt/r7-organizer.rpm
            dest: /tmp/r7-organizer.rpm
  
        - name: Установить Р7-Органайзер
          yum:
            name: /tmp/r7-organizer.rpm
            state: latest
            disable_gpg_check: yes
 
        - name: Копирование файла лицензии
          ansible.builtin.copy:
            src: /mnt/license.lickey
            dest: /mnt/license.lickey
 
        - name: Активация
          ansible.builtin.shell: |
            #!/bin/bash
            SOURCE_FILE="/mnt/license.lickey"
            while IFS=: read -r username _ uid gid _ homedir _; do
              if [ "$uid" -ge 1000 ] && [ -d "$homedir" ]; then
                mkdir -p "$homedir/.r7organizer/license_pro/"
                cp "$SOURCE_FILE" "$homedir/.r7organizer/license_pro"
                chown -R "$username":"$gid" "$homedir/.r7organizer"
                rm -fr "$homedir/.r7organizer/demo"
              fi
            done < /etc/passwd
            rm -f /mnt/license.lickey
  
      when: ansible_distribution == "REDOS" or ansible_distribution == "RED OS" or ansible_pkg_mgr == "dnf" or ansible_pkg_mgr == "yum"

2.1.2. Создайте файл inventory.yaml, в котором нужно указать список клиентов, на которых необходимо выполнить установку

all:
  hosts:
    client.domain.test:
      ansible_host: 192.168.100.111
      ansible_user: root
      ansible_password: password
    client123.domain.test:
      ansible_host: 192.168.100.112
      ansible_user: root
      ansible_password: password

Где,

  • client.domain.test — имя клиента;
  • 192.168.100.111 — IP-адрес клиента;
  • root — пользователь с правами на установку приложений;
  • password — пароль пользователя.

2.1.3. Проверьте подключение указав устройства из inventory.yaml командой:

ansible all -m ping -i inventory.yml

2.1.4. Запустите playbook с использованием inventory.yaml командой:

Перед запуском playbook убедитесь, что на сервере ansible находится файл лицензии по указанному пути /mnt/license.lickey и установочный файл с именем r7-organizer.deb или r7-organizer.rpm, в зависимости от пакетного менеджера клиента

ansible-playbook -i inventory.yml r7-desktop.yml

2.2. Установка Р7-Редактор

2.2.1. Создайте файл r7-desktop.yml со следующим содержанием:

---
- name: Установка Р7-Редактор
  hosts: all
  gather_facts: true
  become: true
  tasks:
 
    - name: Определение пакетного менеджера
      ansible.builtin.debug:
        var: ansible_pkg_mgr
 
    - name: Установка через APT
      block:
        - name: Установка ключа
          apt:
            deb: https://download.r7-office.ru/repos/dist/r7-office-keys_1.0-1_all.deb
            state: present
         
        - name: Перезагрузка
          reboot:
          async: 40
          poll: 0
 
        - name: Ожидание включения
          wait_for_connection:
            timeout: 20
 
        - name: Установка необходимых пакетов
          apt:
            name: "{{ item }}"
            state: present
          with_items:
            - fonts-crosextra-carlito
            - fonts-dejavu
            - fonts-liberation
            - fonts-opensymbol
            - curl
            - gstreamer1.0-libav
            - gstreamer1.0-plugins-ugly
            - libasound2
            - libc6
            - libcairo2
            - libgcc1
            - libgconf-2-4
            - libgtk-3-0
            - libstdc++6
            - libx11-6
            - libxss1
            - x11-common
            - xdg-utils
 
        - name: Копирование deb-пакета
          ansible.builtin.copy:
            src: /mnt/r7-desktop.deb
            dest: /tmp/r7-desktop.deb
 
        - name: Установка Р7-Редактор
          apt:
            deb: /tmp/r7-desktop.deb
            state: present
 
        - name: Создание директории лицензии
          ansible.builtin.file:
            path: /etc/r7-office/license
            state: directory
 
        - name: Активация
          ansible.builtin.copy:
            src: /mnt/license.lickey
            dest: /etc/r7-office/license/license.lickey
 
      when: ansible_pkg_mgr == "apt"
 
    - name: Установка через YUM/DNF
      block:
        - name: Проверка версии CentOS
          block:
            - name: Создать директорию для репозиториев yum
              ansible.builtin.file:
                path: /etc/yum.repos.d
                state: directory
            - name: Установка rpmfusion
              command: sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm
          when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '9'
 
        - name: Копирование rpm-пакета
          ansible.builtin.copy:
            src: /mnt/r7-office-2024.1.1-373.el8.x86_64.rpm
            dest: /tmp/r7-desktop.rpm
                         
        - name: Установить Р7-Редактор
          yum:
            name: /tmp/r7-desktop.rpm
            state: present
            disable_gpg_check: yes
 
        - name: Создание директории лицензии
          ansible.builtin.file:
            path: /etc/r7-office/license
            state: directory
 
        - name: Активация
          ansible.builtin.copy:
            src: /mnt/license.lickey
            dest: /etc/r7-office/license/license.lickey
 
      when: ansible_distribution == "REDOS" or ansible_distribution == "RED OS" or ansible_pkg_mgr == "dnf" or ansible_pkg_mgr == "yum"

2.2.2. Создайте файл inventory.yaml, в котором нужно указать список клиентов, на которых необходимо выполнить установку

all:
  hosts:
    client.domain.test:
      ansible_host: 192.168.100.111
      ansible_user: root
      ansible_password: password
    client123.domain.test:
      ansible_host: 192.168.100.112
      ansible_user: root
      ansible_password: password

Где,

  • client.domain.test — имя клиента;
  • 192.168.100.111 — IP-адрес клиента;
  • root — пользователь с правами на установку приложений;
  • password — пароль пользователя.

2.2.3. Проверьте подключение указав устройства из inventory.yaml командой:

ansible all -m ping -i inventory.yml

2.2.4. Запустите playbook с использованием inventory.yaml командой:

Перед запуском playbook убедитесь, что на сервере ansible находится файл лицензии по указанному пути /mnt/license.lickey и установочный файл с именем r7-desktop.deb или r7-desktop.rpm, в зависимости от пакетного менеджера клиента

Также обратите внимание, что использовав данный playbook, будет выполнена перезагрузка на хостах.

ansible-playbook -i inventory.yml r7-desktop.yml