Установка Kaspersky Network Agent for Linux

Регистрация
22.10.24
Сообщения
10
Реакции
2
Прошу помочь в отладке скрипта задания автоматизации установки агента.
Задача такая - Всё должно выполняться в чёткой последовательности:
1. update_apt должен выполняться только после set_ksc_repo
2. install_kscagent_if_not_installed должен выполняться только после завершения update_apt
3. load_file_answer в принципе может выполнятся и сам по себе, но лучше бы он выполнился после завершения install_kscagent_if_not_installed
4. postinstall_ksc_agent должен выполняться при условии, что корректно завершился install_kscagent_if_not_installed и выполнился load_file_answer.
Понимаю, что чего-то не дочитал в умных книжках и там всё это есть, но очень уж не хватает времени на полное изучение всего.

По факту проблемы такие:
1. postinstall_ksc_agent может запуститься ещё до того, как появился файл из load_file_answer
2. install_kscagent_if_not_installed может запуститься ещё до окончания update_apt
3. а в postinstall_ksc_agent видимо не срабатывает вся команда, а только её первая часть, где export, а всё, что после ; уже не выполняется

Помогите, пожалуйста, настроить очерёдность, условия выполнения и правильно передать составную команду в postinstall_ksc_agent.

YAML:
{% set ksc_agent_answers = 'http://urr61-rep01.urr61.esk/repos/ksc-agent/kscagent_answers.txt' %}
{% do salt.log.info("ksc_agent_answers: " + ksc_agent_answers) %}
{% set ksc_agent_answers_filename = salt['file.basename'](ksc_agent_answers) %}
{% do salt.log.info("ksc_agent_answers_filename: " + ksc_agent_answers_filename) %}
{% set ksc_agent_answers_new = "/tmp/kscagent_install/" +  ksc_agent_answers_filename %}
{% do salt.log.info("ksc_agent_answers_new: " + ksc_agent_answers_new) %}

set_ksc_repo:
  file.managed:
    - name: /etc/apt/sources.list.d/ksc.list
    - contents:
      - deb [trusted=yes] http://urr61-rep01.urr61.esk/repos/ksc-agent/ kscagent main
    - mode: 644
    - create: true
    - replace: true

update_apt:
  cmd.run:
    - name: 'apt-get update'

install_kscagent_if_not_installed:
  cmd.run:
    - name: "apt-get install -y klnagent64"
    - unless: 'dpkg -l | grep -q klnagent64'
    - shell: /bin/bash
    - watch:
      - cmd: update_apt

load_file_answer:
  file.managed:
    - name: {{ ksc_agent_answers_new }}
    - source: {{ ksc_agent_answers }}
    - makedirs: true
    - create: true
    - replace: true
    - skip_verify: true

postinstall_ksc_agent:
  cmd.run:
    - name: "export KLAUTOANSWERS={{ ksc_agent_answers_new }}; /opt/kaspersky/klnagent64/lib/bin/setup/postinstall.pl"
    - unless: 'dpkg -l | grep -q klnagent64'
    - shell: /bin/bash
    - watch:
      - cmd: install_kscagent_if_not_installed
 
Как всё сложно. А не проще в KSC сделать автономный пакет? И ответы внутри и ссылка на него по http. Только sh запустить
 
Зачем из-за одноразовой ерунды лепить такую сложность?
Есть скрипт - запустил, он все сделал.
 
Друзья, вариантов решить подобную задачу - масса, но меня интересует именно этот вариант :)
Я ведь не просил совета, каким образом решить эту задачу.
Я выбрал именно такой вариант решения и прошу помощи в понимании как устроить очередность выполнения команд и условий их выполнения в YAML :)
 
Для тех, кто любит создать себе сложности и затем их героически преодолевать :)

YAML:
{% set ksc_agent_path = 'http://urr61-rep01.urr61.esk/repos/ksc-agent/' %}
{% set ksc_agent_answers_filename = 'kscagent_answers.txt' %}
{% set ksc_agent_answers_global = ksc_agent_path + ksc_agent_answers_filename %}
{% set ksc_agent_answers_local = "/tmp/kscagent_install/" +  ksc_agent_answers_filename %}

load_file_answer:
  file.managed:
    - name: {{ ksc_agent_answers_local }}
    - source: {{ ksc_agent_answers_global }}
    - makedirs: true
    - create: true
    - replace: true
    - skip_verify: true
    - order: 1

set_ksc_repo:
  file.managed:
    - name: /etc/apt/sources.list.d/ksc.list
    - contents:
      - deb [trusted=yes] {{ ksc_agent_path }} kscagent main
    - mode: 644
    - create: true
    - replace: true

kscagent_install:
  pkg.installed:
    - refresh: True
    - pkgs:
      - klnagent64
    - require:
      - file: set_ksc_repo

postinstall_ksc_agent:
  cmd.run:
    - name: "/opt/kaspersky/klnagent64/lib/bin/setup/postinstall.pl"
    - env:
      - KLAUTOANSWERS: {{ ksc_agent_answers_local }}
    - require_any:
      - file: load_file_answer
      - pkg: kscagent_install
PS: небольшое пояснение, почему пошел по этому пути.
Единственное, что нужно сделать на клиенте - вести его в домен ALD Pro и точка.
На мой взгляд очень простое решение, ввёл в домен, запустил задачу автоматизации, получил настроенного агента, пошел в ksc и там уже установил kesl через агента.
PS1: возможно конечно, что я недочитал что-то в инструкциях по установке агента непосредственно из KSCL, но мне показалось, что там слишком много чего нужно сделать, чтобы сервер KSCL смог установить агента
 
Последнее редактирование:
Назад
Сверху Снизу