Развертывание без участия пользователя с MicroMDM для macOS
Информация: документация по управлению приложениями для Chef Desktop находится в активной разработке. Следите за обновлениями и улучшениями.
Введение
Шаблон управления Chef Desktop позволяет управлять всеми вашими устройствами macOS с помощью сервера MicroMDM для полностью автоматизированного процесса.
Если вы этого еще не сделали, прочитайте Шаблон разработки Chef Desktop, чтобы ознакомиться с некоторыми основными шагами для начала работы. Мы повторим несколько из этих шагов здесь.
Обзор
Этот документ описывает, как настроить следующие элементы:
- Установка Chef Infra Server и Chef Automate
- Создание локального репозитория и тестирование Chef Desktop
- Создание пакета InstallApplications.
- Создание сервера MDM
- Создание и развертывание Munki для развертывания приложений на ноутбуках
Настройка MDM
Нам нужна служба управления мобильными устройствами (MDM), чтобы регистрировать машины macOS при их загрузке и безопасно подключаться к ним, а также отправлять приложения и конфигурационные настройки. В этом документе мы используем MicroMDM, но на рынке есть и другие, такие как VMware Airwatch, SimpleMDM и другие.
Настройка может начаться так:
Создайте новый экземпляр Linux в Azure или AWS и убедитесь, что вы используете ключи SSH для аутентификации, а не пароли.
-
После запуска экземпляра обновите установленные пакеты:
sudo apt-get update && sudo apt-get upgrade -y sudo reboot Создайте директорию micromdm на диске.
-
Скопируйте MicroMDM с GitHub:
curl -L https://github.com/micromdm/micromdm/releases/download/v1.6.0/micromdm_v1.6.0.zip -
Откройте окно терминала на Linux-боксе.
sudo apt-get install unzip unzip micromdm_v1.6.0.zip cd /micromdm/build/linux ./mdmctl config set -name <some name> -api-token <password> -server-url https://somefqdnГде:
-name- является меткой, которую вы выбираете для идентификации сервера MicroMDM
-api-token- является паролем, который вы будете использовать для подключения к серверу для его настройки
-server-url- является общедоступным IP-адресом или FQDN созданного сервера
-
Запустите MDM и запомните используемый пароль. Вам понадобится этот пароль с
mdmctlдля настройки сервера.sudo ./micromdm serve -server-url https://somefqdn/ -api-key <password> -
На вашем сервере MDM есть три важных сертификата:
- Сертификат TLS, позволяющий подключаться к серверу MDM по порту 443.
- Сертификат APNS, являющийся сертификатом push, который позволяет серверу MDM взаимодействовать с клиентами macOS.
- Сертификат DEP, который позволяет серверу MDM взаимодействовать с deploy.apple.com и принимать входящие запросы на загрузку с серверов Apple.
Защита MDM
Прочитайте это руководство, которое описывает шаги, необходимые для создания сертификатов DEP и APNS, которые вам нужны для сервера MicroMDM.
Первоначальное развертывание приложений на узле
InstallApplication — это этап процесса настройки Apple, который происходит между моментом, когда появляется дисплей для пользователя, и моментом, когда пользователь впервые попадает на рабочий стол.
InstallApplications (множественное число) — это соответствующее приложение, которое будет устанавливать приложения или настройки на этом этапе конфигурации.
-
Начните с загрузки этих приложений на ваши машины macOS:
Текущий выпуск Chef Infra Client
-
DepNotify
Depnotify — это инструмент с открытым исходным кодом, который сообщает пользователям, сколько времени ещё требуется для установки приложений на их компьютеры macOS перед тем, как они смогут начать работу.
-
Caffeinate
Caffeinate поддерживает активность рабочего стола, чтобы экранная заставка не активировалась во время установки. Активация экранной заставки отключит сетевые подключения и прервёт установку.
-
Последним элементом, который мы загружаем, является скрипт Python для настройки файла
chef/client.rbи запускаchef-clientпри первом запуске, чтобы настроить ноутбук в нужном состоянии и удерживать его в этом состоянии.
Установите последнюю версию InstallApplications.
Измените plist LaunchDaemon, чтобы он выглядел как первый пример ниже. Обратите внимание, что мы обновили JSONUrl и несколько разделов идентификации. Также обратите внимание, что мы включили некоторые команды, необходимые для правильного заполнения DepNotify, чтобы он отображал полезную информацию пользователю.
Измените файл build-info.json в строке идентификации, чтобы правильно указать сертификат разработчика. Прочитайте документацию InstallApplications для получения информации о типах учетных записей, необходимых Apple для установки пакетов.
Используйте
munkipkgдля создания фактического файла pkg. См. документацию munkipkg для получения инструкций.Загрузите скомпилированный пакет на сервер MDM.
-
Выполните следующие команды на вашем MDM:
~/mdm/build/linux/mdmctl apply app -pkg ~/Desktop/mdmvid/InstallApplications.pkg -sign "Developer ID Installer: groob (myid)" -upload [WARNING] package signing only implemented on macOS. An unsigned macOS package will not install with MDM. В примере выше идентификатор разработчика должен соответствовать указанному в файле
build-infoниже.
Подписание ваших приложений
Подпишите и/или занотируйте все, к чему сервер MDM имеет доступ.
Настройка и совместное использование приложений
Одно из преимуществ такой автоматизированной системы управления — активное управление приложениями, которые отображаются на рабочем столе пользователей. Для этого в macOS используется Munki. Наша первоначальная цель — развернуть несколько необходимых приложений для пользователей.
Munki будет обрабатывать управляемые установки и удаления. Munki также предоставляет готовое приложение, которое предлагает пользователям неограниченные приложения, которые они могут загрузить при желании.
Создание CDN для хранения содержимого
Для начала следуйте этим инструкциям для настройки пустого CDN в Azure или этим инструкциям для настройки пустого CDN в AWS. Этот пустой CDN будет хранить все содержимое приложения, которое будет развернуто для устройств macOS и Windows. Однако для каждого типа ОС требуется немного другая структура каталогов и файлов.
Создание контейнеров в вашем хранилище
Создайте контейнер в хранилище для хранения содержимого для пользователей. Для macOS все содержимое, управляемое или нет, хранится здесь.
- Перейдите в хранилище.
- Перейдите к хранилищу блоков -> контейнеры.
- Создайте контейнер с меткой Munki
- Установите уровень доступа к «Контейнеру»
Далее, создайте базовую структуру каталогов в каждом контейнере, которую ожидают клиенты приложения. В контейнере Gorilla создайте папки, соответствующие этой структуре. Мы собираемся создать файлы, которые будут храниться в папках ниже. Создайте верхние папки для обоих клиентов, а дочерние папки указаны, чтобы дать вам представление о том, как все это выглядит со временем, по мере добавления приложений.
Создайте структуру каталогов, которая выглядит следующим образом:
[Munki web root]├── catalogs│ ├── *.yaml├── manifests│ ├── *.yaml├── icons│ ├── *.ico├── pkgsinfo│ ├── *.*└── pkgs├── *.pkgСоздание каталога и манифеста для ваших клиентов
Эти шаги демонстрируют установку Firefox и VS Code на клиентах, чтобы дать вам представление о том, как развернуть приложение на каждом типе ОС.
Настройка Munki
С Munki файлы конфигурации находятся в формате XML, и непосредственное редактирование их может привести к ошибкам, поэтому мы рекомендуем использовать инструменты командной строки.
-
Установите Munki-инструменты локально
Загрузите весь пакет Munki на машину macOS и установите его.
-
Настройте локальное файловое хранилище на машине macOS
Настройте локальное файловое хранилище на машине macOS. Используйте указанные ниже инструменты, чтобы заполнить его необходимыми настройками и конфигурациями. Следуйте этому документу, чтобы настроить локальный репозиторий, использовать Server Explorer для синхронизации его с Azure — перейдите к разделу «Создание репозитория "сервера"»
-
Настройте Munki
Выполните эту команду для настройки Munki. Путь к репозиторию должен совпадать с созданным вами ранее. Обратите внимание, что путь должен иметь 3 косых черты, например: «file:///».
munkiimport --configure -
Теперь импортируйте файлы pkg. При импорте первого пакета каталог будет создан автоматически.
munkiimport - firefox munkiimport - VSCode -
Далее, выполните следующие команды Autopkg, чтобы получить все инструменты Munki, необходимые узлам (ноутбукам)
autopkg repo-add recipes autopkg run -k MUNKI_REPO=/Users/Shared/Munki_repo Munkitools4.Munki -
После этого выполните
makecatalogs, чтобы получить обновления Munki:makecatalogs -
Наконец, выполните
manifestutil, чтобы создать манифест и получить ваши приложения в управляемых установках. Если у вас возникнут проблемы с инструментом, используйте графический интерфейс MunkiAdmin. Он намного удобнее для просмотра конфигурационных файлов./usr/local/Munki/manifestutil Entering interactive mode... (type "help" for commands) > new-manifest site_default > add-catalog my_catalog --manifest site_default Added testing to catalogs of manifest site_default. > add-pkg Firefox --manifest site_default Added Firefox to section managed_installs of manifest site_default. > add-pkg VSCode --manifest site_default Added VSCode to section managed_installs of manifest site_default. > add-pkg Munkitools_admin --manifest site_default Added Munkitools_admin to section managed_installs of manifest site_default. ... > exit
Теперь вы можете использовать Storage Explorer для перемещения всего в ваше хранилище Azure Blob Storage
Пример каталога Munki
Ниже приведен фрагмент каталога Munki. Вы можете вручную изменить детали, если необходимо, но мы настоятельно рекомендуем использовать указанные выше инструменты, чтобы свести к минимуму вероятность ошибки.
<plist version="1.0">
<array>
<dict>
<key>autoremove</key>
<false/>
<key>catalogs</key>
<array>
<string>mycatalog</string>
</array>
<key>display_name</key>
<string>VSCode</string>
<key>installed_size</key>
<integer>1285143</integer>
<key>installer_item_hash</key>
<string>
b9a5b90ff2b0bb733a9b719fe2afea5d5dc02875dc96b969a9fcf8b9de9214a6
</string>
<key>installer_item_location</key>
<string>VSCode.pkg</string>
<key>installer_item_size</key>
<integer>513821</integer>
<key>minimum_os_version</key>
<string>10.5.0</string>
<key>name</key>
<string>VSCode</string>
<key>receipts</key>
<array>
<dict>
<key>installed_size</key>
<integer>1285143</integer>
<key>packageid</key>
<string>com.microsoft.visual-studio</string>
<key>version</key>
<string>8.5.2</string>
</dict>
</array>
<key>unattended_install</key>
<true/>
<key>uninstall_method</key>
<string>removepackages</string>
<key>uninstallable</key>
<true/>
<key>version</key>
<string>1.45.1</string>
</dict>
Пример манифеста Munki
Обратите внимание, что формат манифеста аналогичен используемому Gorilla:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>catalogs</key>
<array>
<string>my_catalog</string>
</array>
<key>included_manifests</key>
<array>
</array>
<key>managed_installs</key>
<array>
<string>munkitools_app</string>
<string>munkitools_app_usage</string>
<string>munkitools_core</string>
<string>munkitools_launchd</string>
<string>Firefox</string>
<string>VSCode</string>
</array>
<key>managed_uninstalls</key>
<array>
</array>
<key>managed_updates</key>
<array>
</array>
<key>optional_installs</key>
<array>
</array>
</dict>
</plist>
Теперь, когда каталог и манифест готовы, протестируйте их на узле macOS, выполнив следующие команды в окне терминала.
Выполните первую команду на клиенте macOS, чтобы проверить, что правильная конфигурация достигла этого узла, а затем выполните вторую команду, чтобы фактически установить управляемые приложения.
sudo /usr/local/munki/managedsoftwareupdate --show-config
sudo /usr/local/munki/managedsoftwareupdate
Окончательная проверка
Вы почти готовы начать процесс. Убедитесь, что вы выполнили следующие шаги:
- Вы настроили Apple Business Manager
- Вы импортировали серийный номер как минимум одного вашего устройства macOS
- Вы настроили свой сервер MDM в Apple Business Manager для приема ваших устройств
-
Вы настроили и наконфигурировали MDM для приема устройств из Apple Business Manager
- У вас установлены все необходимые сертификаты
- Вы создали и загрузили пакет InstallApplications и импортировали его в MDM
- Если вы собираетесь использовать Munki, правильно ли настроен S3-ведро для него?
Настройка первого узла
Если все пойдет по плану, первый узел должен быть готов к перезапуску, загрузке всех пакетов и/или скриптов, загрузке Chef Infra Client и выполнению первого запуска клиента.
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/desktop/desktop_micromdm/