Авторские статьи

Установка оперативных обновлений Astra Linux в домене ALD Pro.


В официальной вики нашёл рекомендацию, как через SaltStack, используя механизм групповых политик или задания автоматизации, обновлять клиентские Astra Linux в домене ALD Pro. Но мой опыт подсказывает что не всё предусмотрено, поэтому укажу и свою наработку по данному вопросу.

Рекомендации от разработчиков

Красивый код без башизмов, используя модули SaltStack.

Change repositories:
    file.managed:
        - name: /etc/apt/sources.list
        - contents:
            - deb адрес_репозитория_main 1.7_x86-64 main contrib non-free
            - deb адрес_репозитория_base 1.7_x86-64 main contrib non-free
            - deb адрес_репозитория_extended 1.7_x86-64 main contrib non-free
            - deb адрес_репозитория_update 1.7_x86-64 main contrib non-free

Update sources:
    pkg.update:
        - dist_upgrade: True
        - refresh: True
        - kwargs:
            - -o "Dpkg::options::=--force-confold"
            - -o "Dpkg::options::=--force-confdef"
            - --allow-downgrades
            - -f
            - -u

Актуальные адреса официальных репозиториев в статье Что такое Astra Linux?

Мои личные рекомендации

К сожалению, в жизни всё бывает сложнее - нужно предусмотреть массу вариантов и всё равно что-то не учесть.

Во-первых, кто вам сказал что обновляемый компьютер на данный момент корректен с точки зрения apt/dpkg? Советы из мира Debian про sudo dpkg --configure -a и sudo apt --fix-broken install видели многие.

Во-вторых, нужно решить вопрос с интерактивностью. Главная цель, ничто не должно выводить запросов, на которые никто не ответит в рамках работы задания (job) на клиентском salt-minion. Ключ -y (--yes, --assume-yes) - наш помощник.

В-третьих, редко, но метко может вылезти при обновлении вопрос про настройку grub. Приходится заранее предусмотреть это и выполнить действия по безмолвной настройке пакета grub-pc.

Мой башизм, что подразумевает не использование модулей SaltStack, а топорное выполнение конкретных команд. Моя цель - работать должно железобетонно!

UpdateAstraLinux:
    cmd.run:
        - name: |
            sudo apt -y clean
            env DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LANG=C sudo dpkg --configure -a
            sudo apt -y --fix-broken install
            sudo apt -y update
            sudo apt -y install astra-update openssh-server salt-minion
            mountdev=`mount | grep "/ " | awk '{ print $1;exit }' | sed 's/.$//'`
            env DEBIAN_FRONTEND=noninteractive sudo apt-get -y install grub-pc
            debconf-set-selections <<< "
            grub-pc grub-pc/kopt_extracted boolean true
            grub-pc grub2/linux_cmdline string
            grub-pc grub-pc/install_devices multiselect ${mountdev}
            grub-pc grub-pc/install_devices_failed_upgrade boolean true
            grub-pc grub-pc/install_devices_disks_changed multiselect ${mountdev}"
            sudo grub-install ${mountdev}
            sudo dpkg-reconfigure -f noninteractive grub-pc
            sudo apt -y --download-only full-upgrade && sudo astra-update -A -r -T -K
            sudo apt -y clean
            env DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LANG=C sudo dpkg --configure -a
            sudo apt -y --fix-broken install

Объяснение важности порядка следования и самих команд, которые были выстраданы на обновлении множества машин с Astra Linux 1.7.5 до 1.7.6:

  1. sudo apt -y clean
    Сразу чистим занятое место от возможных обновлений вручную и т.д, так как даже если что-то находится в папке /var/cache/apt/archives/, то с большой долей вероятности нам уже не нужно.
  2. env DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LANG=C sudo dpkg --configure -a
    sudo apt -y --fix-broken install
    Предполагаем что по какой-то причине предыдущее обновление закончилось неудачно. Пытаемся исправить ситуацию без запросов.
  3. sudo apt -y update
    sudo apt -y install astra-update openssh-server salt-minion
    Обновляем списки пакетов и сразу же обновляем важные для нас пакеты: astra-update, openssh-server, salt-minion
  4. mountdev=`mount | grep "/ " | awk '{ print $1;exit }' | sed 's/.$//'`
    env DEBIAN_FRONTEND=noninteractive sudo apt-get -y install grub-pc
    debconf-set-selections <<< "
    grub-pc grub-pc/kopt_extracted boolean true
    grub-pc grub2/linux_cmdline string
    grub-pc grub-pc/install_devices multiselect ${mountdev}
    grub-pc grub-pc/install_devices_failed_upgrade boolean true
    grub-pc grub-pc/install_devices_disks_changed multiselect ${mountdev}"
    sudo grub-install ${mountdev}
    sudo dpkg-reconfigure -f noninteractive grub-pc

    Узнаём заранее и сохраняем в переменную mountdev диск, связанный с корнем системы. Используем её для настройки пакета grub-pc без лишних вопросов. В дальнейшем astra-update не будет спрашивать то что уже обновлено и настроено должным способом.
  5. sudo apt -y --download-only full-upgrade && sudo astra-update -A -r -T -K
    Маленькая оптимизация, позволяющая ДО установки сначала скачать пакеты с официального сайта, вашего зеркала, через apt-cacher-ng и т.д. И только в случае успешного скачивания пакетов (&&) выполнить обновление без запросов с помощью официальной утилиты astra-update.

    • -A   Установить обновление полностью автоматически, не задавая вопросов, выполняя выключение и включение функций безопасности (комбинация действий -d, -I, -e).
    • -r   Установка обновления из репозиториев /etc/apt/sources.list (без изменений самого файла), несовместимо с -g, -m, -k;
    • -T   Не искать репозиторий установочного диска, репозиторий обновления является технологическим диском.
    • -K   Установить последнее доступное ядро, совместимо только с -a, -A, -i, -I;
  6. sudo apt -y clean
    env DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LANG=C sudo dpkg --configure -a
    sudo apt -y --fix-broken install
    Снова подчищаем скачанные пакеты, которые больше не нужны и вызываем sudo dpkg --configure -a навсякий случай, предполагая что предыдущий вызов astra-update, почему-то и к сожалению, завершился неуспешно.

Мой топорный способ не даёт 100% гарантии что вы корректно обновите Astra Linux в дни серьёзных изменений типа с 1.7.5 на 1.7.6, поэтому тщательно тестируйте, критикуйте, предлагайте! Обновление строго в рамках минорной версии типа 1.7.5 скорее всего будет проходить более-менее гладко.

А что ещё завтра жизнь подкинет - покажет время!

Дополнительные материалы:
Мини-оглавление если Не удаётся настроить доверительные отношения с Microsoft Active Directory.
Оглавление всех вопросов и ответов ALD Pro.
Как обновить Astra Linux 1.7 до 1.8?

Дата последней правки: 2024-10-22 16:21:29

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта