LINUX.ORG.RU
ФорумAdmin

Ansible и файл .run

 


0

1

Всем привет! появилась одна интересная задача, по установке плагина на RHL, плагин имеет расширение .run. Дело в том что для х32 и х64 свой плагин, а так же имеется большое количество рабочих мест. Было принято решение устанавливать плагин с помощью Ansible и использовать проверку архитектуры процессора. Алгоритм такой:

  • 1. Проверяем архитектуру, беремем переменную.
  • 2. Исходя из значения переменной, запускаем блок задач в котором:
    • 2.1 копируется нужный плагин для своей архитектуры
    • 2.2 устанавливается скопированный плагин.

Код получился такой:

---
- hosts: test

  tasks:
  - name: Chek and print x..
    debug: var=ansible_userspace_bits

  - block:

     - name: Copy Plugin_X64
       copy: src=/repo/Plugin_x64.run dest=/root mode=777
       become: yes

     - name: Install Plugin_X64
       shell: /root/Plugin_x64.run
       become: yes

    when: ansible_userspace_bits == "64"

  - block:
     - name: Copy Plugin_X32
       copy: src=/repo/Plugin_x32.run dest=/root mode=777
       become: yes

     - name: Install Plugin_X32
       become: yes
    when: ansible_userspace_bits == "32"

Вопрос следующий, как правильно написать задачу по установке скопированного плагина, (второй таск в блоках)? yum и shell не работаю

Не понял, зачем здесь вообще блоки.

tasks:
     - name: Copy Plugin
       copy:
         src: "/repo/Plugin_x{{ ansible_userspace_bits }}.run"
         dest: /root/Plugin.run
         mode: 777
       become: yes

     - name: Install Plugin
       shell: /root/Plugin.run
       become: yes

А, понял.

yum и shell не работаю

Какую ошибку пишет? Зачем пытаешься run-файл через yum ставить?

Выполни и скинь вывод, посмотрим, что за плагин такой:

file /root/Plugin_x64.run
ivn86 ()
Последнее исправление: ivn86 (всего исправлений: 1)
Ответ на: комментарий от ivn86
file /root/Plugin_x64.run

Вывод:

/root/Plugin_x64.run: data
Плэйбук удалось запустить, но теперь есть еще один интересный вопрос, как сделать проверку на наличие плагина в системе, при каждом новом запуске плейбука, он устанавливается заново. Код рабочего плейбука:
--- 
- hosts: test

  tasks:
  - name: Chek and print x..
    debug: var=ansible_userspace_bits

  - block:

     - name: Copy Plugin_X64
       copy: src=/repo/Plugin_x64.run dest=/root mode=777
       become: yes

     - name: Install Plugin_X64
       shell: /root/Plugin_x64.run
       become: yes
       
    when: ansible_userspace_bits == "64"
    
  - block:
     - name: Copy Plugin_X32
       copy: src=/repo/Plugin_x32.run dest=/root mode=777
       become: yes

     - name: Install ProxyPlugin X32
       shell: /root/Plugin_x32.run
       become: yes
       
    when: ansible_userspace_bits == "32"

xforasx ()
Ответ на: комментарий от xforasx

Блоки используется для проверки архитектуры ЦП.

Прочитай комментарий @ivn86 в слух 3 раза, дело тебе говорит.

Как ты устанавливаешь свой плагин? руками что делаешь или какой утилитой регистрируешь или ещё что? Зачем yum?

WoozyMasta ()
Ответ на: комментарий от WoozyMasta

Как ты устанавливаешь свой плагин? руками что делаешь или какой утилитой регистрируешь или ещё что? Зачем yum?

С установкой плагина я разобрался, устанавливаю командой:

shell:
yum забыли, я ошибочно его использовал.

Окей, run это скрипт. Перед запуском сделай проверку был ли скопировал файл. И устанавливай только when copy changed

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

А ещё лучше, найди что изменяет установщик в системе, и проверяй это изменение.

Буду просматривать скрип и искать в нем, что он изменяет/создает. Спасибо за помощь

xforasx ()
Ответ на: комментарий от xforasx

учись у вирусов – делай свою «обертку» для этого .run, а в нём определение разрядности (до установки плагина), проверка установки, создание «флага установки» (как вариант, файл с характерным названием/содержанием) после установки плагина…

anonymous ()
Ответ на: комментарий от anonymous

учись у вирусов – делай свою «обертку» для этого .run

Не совсем понял, как это сделать. есть примеры?

проверка установки, создание «флага установки» (как вариант, файл с характерным названием/содержанием) после установки плагина…

нашел файлы, которые создаются после установки плагина, как осуществить проверку условия с помощью Ansible?

xforasx ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.