Windows server update services linux
Please understand that both operating systems are different, the internal implemenatation of below subsystems are different.
So i wouldnt recommend running windows applications on linux and there is no guarentee that they would run either. When i said not recommend there is a way to do it using WINE , you can download WINE s/w and tryinstalling the applications on windows but not recommended.
Found this link. http://www.linuxquestions.org/questions/linux-software-2/wsus-situated-in-linux-523954/ Regards Jaco Smit Nerds On Site — South Africa
Which predates this thread by two years, and basically says what’s already been said in this thread — NO. And, even if some hack had been built — it’s worthy of note that the implementation would be totally unsupported by Microsoft, as well as any client systems of that hack — particularly those who might succumb to defects, failures, or infestations as a result of the «server» failing to perform as a native WSUS-on-Windows server would be expected to. Lawrence Garvin, M.S., MCITP:EA, MCDBA, MCSA
Principal/CTO, Onsite Technology Solutions, Houston, Texas
Microsoft MVP — Software Distribution (2005-2011)
My MVP Profile: http://mvp.support.microsoft.com/profile/Lawrence.Garvin
My Blog: http://onsitechsolutions.spaces.live.com
Of course this reply is out of date. You cannot implement all the functionality of WSUS using a linux server. But if what you want is to save WU bandwidth, you can use squid-cache properly configured, with enough disk size. A few recommendations about it can be found in Here but other hints found here (in spanish!) The idea is to cache (for windowsupdate.com and microsoft.com) big files, to ignore Pragma: no-cache, override expires and to download the entire file from windowsupdate.com instead of only a small range
refresh_pattern -i windowsupdate.com/.*\.(cab|exe|ms[i|u|f]|asf|wm[v|a]|dat|zip) 4320 80% 43200 reload-into-ims ignore-no-cache ignore-private override-expire refresh_pattern -i microsoft.com/.*\.(cab|exe|ms[i|u|f]|asf|wm[v|a]|dat|zip) 4320 80% 43200 reload-into-ims ignore-no-cache ignore-private override-expire quick_abort_min 2048 KB quick_abort_max 8192 KB quick_abort_pct 90 range_offset_limit -1 KB
Of course your quick_abort_* settings will vary, it depends mainly in the average use of your network. This will save bandwidth and will not break things, so it won’t interfere with Microsoft’s support as someone said.
But if what you want is to save WU bandwidth, you can use squid-cache properly configured, with enough disk size.
Приручаем WSUS при помощи Ansible и не только
Ну что ж, вот и настала пора подружить Windows-обновления с миром Open Source. В этой статье разнообразим быт интеграцией Ansible со всеми возможными источниками обновлений Windows-машин. Хотя возможности системы значительно шире простой раскатки обновлений на серверы и рабочие станции, но ведь надо с чего-то начинать.
Заодно избавимся от досадных неудобств WSUS, если вы предпочитаете «старую школу».
За что мы не любим WSUS
Про настройку Windows Server Update Services рассказывать я не буду, благо она тривиальна. Сосредоточусь на минусах.
Интерфейс WSUS почти не менялся на протяжении всей истории.
Невозможность установки по требованию. Действительно, для штатной работы WSUS подходит неплохо — обновления спокойно себе настраиваются и ставятся по локальной сети при выключении компьютеров. Но если нужно срочно установить патчи безопасности, то придется выкручиваться скриптами и решениями для запуска этих самых скриптов. В этом может помочь наш материал «1000++ способ запуска команд на удаленном компьютере».
Отсутствие штатного способа установки обновлений стороннего ПО. Если есть сервер обновлений, то выглядит разумным использовать его не только для обновлений программ MS, но для других решений. Например, в не к ночи упомянутом Adobe Flash Player уязвимости находятся с завидной регулярностью, да и радовать пользователей новыми возможностями FireFox тоже хотелось бы. Для того чтобы наладить установку обновлений через WSUS, приходится использовать сторонние решения вроде WSUS Package Publisher. Посмотреть примеры настройки можно в статье «Установка любого программного обеспечения средствами WSUS — 2».
Использование встроенной БД Windows. При стандартной установке WSUS использует WID — Windows Internal Database. По сути это маленький встроенный SQL Server с базой данных. В случае каких-то неполадок или конфликтов — к примеру, если у вас на одном сервере живет Remote Desktop Connection Broker и WSUS, — приходится чинить эту базу, настраивать права доступа и всячески развлекаться. Да и резервное копирование бы не помешало. По счастью, WSUS может использовать и классический SQL. Для переноса БД WSUS можно воспользоваться инструкцией Migrating the WSUS Database from WID to SQL от Microsoft.
Необходимость обслуживания и неочевидная настройка сбойных клиентов. Как это бывает с продуктами от Microsoft, рано или поздно WSUS начинает тормозить: клиенты долго не могут к нему подцепиться и скачать обновления. Сборник советов и оптимизаций есть в статье «Ускоряем работу WSUS» и в комментариях к ней.
Конечно, с этими минусами можно жить, но можно и облегчить себе жизнь другими инструментами, используя их как в паре с WSUS, так и без него.
Устанавливаем обновления при помощи Ansible
Практически любая система управления конфигурациями может облегчить работу с обновлениями. Разберем пример на базе Ansible для установки обновлений по требованию.
Устраивать холивар, что лучше из бесплатных систем — Ansible, Chef, Puppet или вовсе Salt, нет ни малейшего желания. Система Ansible выбрана за отсутствие необходимости использования агентов и за простоту настройки. И, конечно, из-за Python: ведь этот язык намного проще освоить начинающим автоматизаторам, в отличие от Ruby.
Стоит отметить, что помимо решения задачи, это будет неплохое подспорье для ознакомления с принципами работы подобных систем. Если, конечно, вы еще не развлекались установкой Streisand, особенно, когда что-то в процессе идет не так. А если вы уже используете Ansible или другие модные решения, то запросто сможете и обновления устанавливать. С азами Ansible я рекомендую ознакомиться в статье «Пособие по Ansible», а ниже — пошаговая инструкция по работе с обновлениями.
Для начала подготовим сервер Ansible. Подойдет практически любой GNU\Linux дистрибутив, но примеры команд я буду приводить для Ubuntu Server (так исторически сложилось).
Для начала установим пакетный менеджер для приложений на Python:
apt-get install python-pip pip install --upgrade pip pip install --upgrade virtualenv
Затем нам понадобится установить пакет pywinrm для подключения к системам Windows и непосредственно систему Ansible:
sudo pip install pywinrm sudo pip install ansible
Проверить установку можно командой ansible —version.
Проверка установки.
Вместо пакета в теории pywinrm можно использовать любое другое средство для управления Windows с машины на Linux. Часть из них разобрана в статье «Перекрестное опыление: управляем Linux из-под Windows, и наоборот».
Теперь нужно разрешить подключение к Windows по WinRM. Для этого есть уже готовый скрипт ConfigureRemotingForAnsible.ps1, доступный на GitHub. Ну, а как запускать скрипты на удаленных машинах вы уже знаете.
Проверить подключение к Windows можно командой:
ansible windows -m win_ping
Проверка подключения успешна.
Теперь можно заняться созданием playbook. Нам облегчит жизнь тот факт, что разработчики Ansible уже подумали за нас и сделали модуль win_updates, как раз для решения таких задач.
Playbook — это «инструкция», которая говорит системе управления конфигурациями, что же ей делать. Разумеется, пошаговая.
Любой playbook является файлом в формате yml и представляет из себя набор директив — у каждого модуля они свои. Модуль winupdate позволяет использовать следующие директивы (жирным выделены значения по умолчанию):
Название | Значение | Описание |
category_names | Application Connectors CriticalUpdates DefinitionUpdates DeveloperKits FeaturePacks Guidance SecurityUpdates ServicePacks Tools UpdateRollups Updates | Категория обновлений. |
whitelist | Номер обновления или шаблон имени. | Непосредственно номер устанавливаемых обновлений вида KB01234 или шаблон имени в виде регулярного выражения PowerShell. |
blacklist | Номер обновления или шаблон имени. | Непосредственно номер обновлений, которые не нужно устанавливать, вида KB01234 или шаблон имени в виде регулярного выражения PowerShell. |
reboot | yes no | Требуется ли перезагрузка после обновления. |
reboot_timeout | секунды, 1200 | Сколько времени ждать машину после перезагрузки. |
state | installed searched | Устанавливать ли обновления, или только искать. |
log_path | путь к файлу | Журнал установки, при этом папка должна существовать. |
Таким образом, для установки определенных обновлений подойдет следующий playbook:
- name: Install specific updates based on the KBs for those updates win_updates: category_name: - SecurityUpdates whitelist: - KB4073819 - KB4074228
А если надо просто посчитать, сколько обновлений не хватает, playbook будет таким:
– name: Check for missing updates win_updates: state=searched register: update_count
Для установки всех доступных обновлений с последующей перезагрузкой будет подобный playbook:
- name: Install all critical and security updates win_updates: category_names: - CriticalUpdates - SecurityUpdates - UpdateRollups state: installed register: update_result - name: reboot host if required win_reboot: when: update_result.reboot_required
Напомню, что для работы со списком серверов понадобится файл инвентаризации. Например, такой:
[DCs] dc1.mydomain.local dc2.mydomain.local [AppServers] app1.mydomain.local app2.mydomain.local [DBServers] db1.mydomain.local db2.mydomain.local
И теперь для установки обновлений только на контроллеры домена можно использовать playbook:
- hosts: DCs tasks: - name: Choose which Windows updates to install win_updates: category_names: - SecurityUpdates - CriticalUpdates - UpdateRollups
Команда, которая проделает все эти операции, будет такой:
ansible-playbook -i inventory.yml -s windowsupdates.yml
Внимательный читатель может спросить про источник скачиваемых обновлений. Источник будет тот, что настроен на компьютере: будь то Windows Update в интернете или локальный WSUS. Даже если до настройки WSUS руки не дошли, можно дать команду на установку нужных срочных апдейтов, особенно если детальки Lego под ноги уже высыпались.
Остается добавить, что не обязательно использовать именно Ansible. Например, для системы управления конфигурациями Chef можно использовать Cookbook Wsus Client или более навороченный boxstarter. Аналогичные модули существуют и для Puppet. В общем-то практически любая система управления конфигурациями может что-то подобное, в том числе и MS SCCM.
Напоследок приведу еще несколько заинтересовавших меня инструментов.
Прочие системы и решения
WSUS offline. Программа, позволяющая скачать необходимые обновления одним пакетом, при необходимости можно запаковать в ISO. Также можно положить пакет в сетевую папку и устанавливать обновления скриптами, без развертывания полноценного WSUS.
Patch Management от Comodo. Система установки обновлений для Windows и другого ПО. В отличие от других решений — бесплатна.
Интерфейс Comodo Patch Management.
Opsi. Бесплатная, интересная система, поддерживающая установку не только обновлений, но и операционных систем, заодно с инвентаризацией.
BatchPatch. Единственная из платных систем, попавшая в список. Позволяет устанавливать ПО, обновлять его, как и Windows, и многое другое. Отличается олдскульным дизайном, а также стоимостью не за количество обслуживаемых хостов, а за пользователей программы, т.е администраторов. Пожалуй, это одно из немногочисленных решений, позиционирующих себя как аналог WSUS. Цена начинается от $400.
Интерфейс BatchPatch.
В комментариях добавляйте свои любимые инструменты для работы с обновлениями и не только.