В официальной вики нашёл рекомендацию, как через 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:
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
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?