Spec-Zone.ru › Chef 16

Развертывание без участия пользователя с MicroMDM для macOS

[править на GitHub]

Информация: документация по управлению приложениями для 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 и другие.

Настройка может начаться так:

  1. Создайте новый экземпляр Linux в Azure или AWS и убедитесь, что вы используете ключи SSH для аутентификации, а не пароли.

  2. После запуска экземпляра обновите установленные пакеты:

    sudo apt-get update && sudo apt-get upgrade -y
    sudo reboot
    
  3. Создайте директорию micromdm на диске.

  4. Скопируйте MicroMDM с GitHub:

    curl -L https://github.com/micromdm/micromdm/releases/download/v1.6.0/micromdm_v1.6.0.zip
    
  5. Откройте окно терминала на 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 созданного сервера
  6. Запустите MDM и запомните используемый пароль. Вам понадобится этот пароль с mdmctl для настройки сервера.

    sudo ./micromdm serve -server-url https://somefqdn/ -api-key <password>
    
  7. На вашем сервере MDM есть три важных сертификата:

    • Сертификат TLS, позволяющий подключаться к серверу MDM по порту 443.
    • Сертификат APNS, являющийся сертификатом push, который позволяет серверу MDM взаимодействовать с клиентами macOS.
    • Сертификат DEP, который позволяет серверу MDM взаимодействовать с deploy.apple.com и принимать входящие запросы на загрузку с серверов Apple.

Защита MDM

Прочитайте это руководство, которое описывает шаги, необходимые для создания сертификатов DEP и APNS, которые вам нужны для сервера MicroMDM.

Первоначальное развертывание приложений на узле

InstallApplication — это этап процесса настройки Apple, который происходит между моментом, когда появляется дисплей для пользователя, и моментом, когда пользователь впервые попадает на рабочий стол.

InstallApplications (множественное число) — это соответствующее приложение, которое будет устанавливать приложения или настройки на этом этапе конфигурации.

  1. Начните с загрузки этих приложений на ваши машины macOS:

    • Текущий выпуск Chef Infra Client

    • DepNotify

      Depnotify — это инструмент с открытым исходным кодом, который сообщает пользователям, сколько времени ещё требуется для установки приложений на их компьютеры macOS перед тем, как они смогут начать работу.

    • Caffeinate

      Caffeinate поддерживает активность рабочего стола, чтобы экранная заставка не активировалась во время установки. Активация экранной заставки отключит сетевые подключения и прервёт установку.

    • Chef Bootstrap

      Последним элементом, который мы загружаем, является скрипт Python для настройки файла chef/client.rb и запуска chef-client при первом запуске, чтобы настроить ноутбук в нужном состоянии и удерживать его в этом состоянии.

  2. Установите последнюю версию InstallApplications.

  3. Измените plist LaunchDaemon, чтобы он выглядел как первый пример ниже. Обратите внимание, что мы обновили JSONUrl и несколько разделов идентификации. Также обратите внимание, что мы включили некоторые команды, необходимые для правильного заполнения DepNotify, чтобы он отображал полезную информацию пользователю.

  4. Измените файл build-info.json в строке идентификации, чтобы правильно указать сертификат разработчика. Прочитайте документацию InstallApplications для получения информации о типах учетных записей, необходимых Apple для установки пакетов.

  5. Используйте munkipkg для создания фактического файла pkg. См. документацию munkipkg для получения инструкций.

  6. Загрузите скомпилированный пакет на сервер MDM.

  7. Выполните следующие команды на вашем 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.
    
  8. В примере выше идентификатор разработчика должен соответствовать указанному в файле build-info ниже.

Подписание ваших приложений

Подпишите и/или занотируйте все, к чему сервер MDM имеет доступ.

Настройка и совместное использование приложений

Одно из преимуществ такой автоматизированной системы управления — активное управление приложениями, которые отображаются на рабочем столе пользователей. Для этого в macOS используется Munki. Наша первоначальная цель — развернуть несколько необходимых приложений для пользователей.

Munki будет обрабатывать управляемые установки и удаления. Munki также предоставляет готовое приложение, которое предлагает пользователям неограниченные приложения, которые они могут загрузить при желании.

Создание CDN для хранения содержимого

Для начала следуйте этим инструкциям для настройки пустого CDN в Azure или этим инструкциям для настройки пустого CDN в AWS. Этот пустой CDN будет хранить все содержимое приложения, которое будет развернуто для устройств macOS и Windows. Однако для каждого типа ОС требуется немного другая структура каталогов и файлов.

Создание контейнеров в вашем хранилище

Создайте контейнер в хранилище для хранения содержимого для пользователей. Для macOS все содержимое, управляемое или нет, хранится здесь.

  1. Перейдите в хранилище.
  2. Перейдите к хранилищу блоков -> контейнеры.
  3. Создайте контейнер с меткой Munki
  4. Установите уровень доступа к «Контейнеру»

Далее, создайте базовую структуру каталогов в каждом контейнере, которую ожидают клиенты приложения. В контейнере Gorilla создайте папки, соответствующие этой структуре. Мы собираемся создать файлы, которые будут храниться в папках ниже. Создайте верхние папки для обоих клиентов, а дочерние папки указаны, чтобы дать вам представление о том, как все это выглядит со временем, по мере добавления приложений.

Создайте структуру каталогов, которая выглядит следующим образом:

[Munki web root]├── catalogs│   ├── *.yaml├── manifests│   ├── *.yaml├── icons│   ├── *.ico├── pkgsinfo│   ├── *.*└── pkgs├── *.pkg

Создание каталога и манифеста для ваших клиентов

Эти шаги демонстрируют установку Firefox и VS Code на клиентах, чтобы дать вам представление о том, как развернуть приложение на каждом типе ОС.

Настройка Munki

С Munki файлы конфигурации находятся в формате XML, и непосредственное редактирование их может привести к ошибкам, поэтому мы рекомендуем использовать инструменты командной строки.

  1. Установите Munki-инструменты локально

    Загрузите весь пакет Munki на машину macOS и установите его.

  2. Настройте локальное файловое хранилище на машине macOS

    Настройте локальное файловое хранилище на машине macOS. Используйте указанные ниже инструменты, чтобы заполнить его необходимыми настройками и конфигурациями. Следуйте этому документу, чтобы настроить локальный репозиторий, использовать Server Explorer для синхронизации его с Azure — перейдите к разделу «Создание репозитория "сервера"»

  3. Настройте Munki

    Выполните эту команду для настройки Munki. Путь к репозиторию должен совпадать с созданным вами ранее. Обратите внимание, что путь должен иметь 3 косых черты, например: «file:///».

    munkiimport --configure
    
  4. Теперь импортируйте файлы pkg. При импорте первого пакета каталог будет создан автоматически.

    munkiimport - firefox
    munkiimport - VSCode
    
  5. Далее, выполните следующие команды Autopkg, чтобы получить все инструменты Munki, необходимые узлам (ноутбукам)

    autopkg repo-add recipes
    autopkg run -k MUNKI_REPO=/Users/Shared/Munki_repo Munkitools4.Munki
    
  6. После этого выполните makecatalogs, чтобы получить обновления Munki:

    makecatalogs
    
  7. Наконец, выполните 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API