Глава 12. Масштабное развёртывание WSL

Обсуждение развёртывания

Масштабное развёртывание WSL требует от вас знакомство с некоторыми важными моментами для наилучшего практического опыта.

Важно быть уверенным, что при перезапуске своей системы каталог %APPDATA%\local его пользовательской учётной записи фиксируется. Если этот каталог уничтожается, такому пользователю потребуется повторно устанавливать дистро WSL всякий раз когда он регистрируется в Windows. Это обусловлено тем, что внутри данного каталога сохраняются файловые системы WSL. В качестве альтернативы вы можете устанавливать дистро от имени соответствующего пользователя посредством автоматизации с применением команды wsl.exe --import, которая делает для вас возможны определение того где сохранять соответствующую файловую систему WSL. Это позволит вам выбирать фиксируемое местоположение.

После того как дистро WSL установлен, важно помнить, что соответствующий пользователь ПК Windows будет обладать к этому дистро WSL доступом root. Пользователь root Linux аналогичен учётной записи Administrator Windows в том, что он обладает всеми полномочиями в пределах соответствующего дистро Linux. Пока пользователь будет обладать доступом root к своим дистро WSL и будет способен выполнять что угодно внутри такого дистро, к ресурсам Windows всё ещё будут применяться ваши политики безопасности Windows. Итак, даже с доступом root к тем дистро WSL, которые установил данный пользователь, он будет обладать тем объёмом доступа к ресурсам Windows, которые допускает его учётная запись Windows.

Скорее всего вы обнаружите что управление множеством ПК и пользователей внутри установок WSL является проблематичным.Это побуждает применять Ansible или Landscape, либо иную систему управления для обеспечения того, что вы будете обладать полной видимостью в тех дистро, которые вы развёртываете.

При применении Windows неизбежно возникает задача защиты систем от вредоносного программного обеспечения и вирусов. Если вы пользуетесь сторонней системой безопасности, вы можете обнаружить что она блокирует загрузку драйверов WSL. Обязательно проверяйте развёртывание перед его применением для пользователей, чтобы предотвращать любые неожиданные сюрпризы.

Применение Intune для развёртывания Ubuntu в WSL

В корпоративном мире управление мобильными устройствами это распространённая практика для обеспечения того, что все деловые компьютеры и мобильные устройства обладают неким стандартным набором приложений и настроек Для наполнения этой роли MDM (Mobile Device Management) Microsoft обладает своим продуктом Intune, который вы можете применять для предварительной загрузки своих пользовательских систем Windows с дистро WSL непосредственно из Microsoft Store. Применяя Intune для доставки дистро WSL, ваши пользователи будут получать WSL готовым к работе как только они зарегистрируются в корпоративном устройстве.

Применение Landscape для управления Ubuntu в WSL

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

Раскрутка Ubuntu WSL в сервер Landscape

Мы предполагаем, что у вас имеется установленным сервер Landscape в соответствии с инструкциями из https://docs.ubuntu.com/landscape/en/.

Данная глава собирает обсуждавшуюся нами ранее среду со включённым SystemD, поскольку landscape-client ожидает управления со стороны процесса systemd.

Самый первый шаг после того как вы получили исполняемым сервер Landscape состоит в регистрации в экране Launchpad admin (Рисунок 12-1) и переходе к инструкциям по обнаружению URL вашей регистрации и его ping. Кликните по ссылке в самой левой панели своих страниц администрирования, помеченной как following these instructions. Важно отметить, что ваш ping URL всегда HTTP (не безопасный), в то время как скорее всего регистрируемый URL является HTTPS (безопасный).

 

Рисунок 12-1


Экран Launchpad admin отображающий основную ссылку к инструкциям для регистрации новых компьютеров

Основные приводимые в руководстве инструкции таковы:

  1. Обновите свои репозитории:

    
    > sudo apt-get update
    		
  2. Установите необходимого клиента:

    
    > sudo apt-get install landscape-client
    		
     

    Рисунок 12-2


    Установка landscape-client посредством apt-get

  3. Если вы следовали инструкциям установки Quickstart для своего сервера Landscape, вам также потребуется скопировать ключ шифрования для каждого из хостов, потому что он не подписан распознаваемым SSL Certification Authority вашей компании.

    1. Зарегистрируйтесь в консоли своего сервера Landscape и скопируйте необходимый файл из /etc/ssl/certs/landscape_server_ca.crt в известное совместно используемое местоположение.

    2. В каждой системе, которую вы желаете добавить в свой сервер Landscape скопируйте этот файл, который мы сохранили ранее в п.3a в /etc/landscape/server.pem каждого клиента.

    3. При исполнении команды п.4 добавляйте в её конец для применения сохранённого общедоступного ключа такой параметр:

      
      --ssl-public-key /etc/landscape/server.pem
      		
  4. Зарегистрируйте свой компьютер - ваш landscape-url, скорее всего, будет отличаться, вы можете пожелать заменить My Computer Title на подходящее вам описание для своего экземпляра WSL и вам может потребоваться изменить название учётной зпаиси своей оргранизации Launchpad. Если вы сомневаетесь в названии своей организации или landscape-url, проконсультируйтесь с инструкциями на страницах администрирования своего Launchpad.

    
    > sudo landscape-config --computer-title "My Computer Title" --account-name "standalone" --url https://landscape-url/message-system --ping-url http://landscape-url/ping
    		

    Для возможности исполнения команд от имени rot вам потребуется добавлять имя пользователя при получении приглашения на его ввод, которому допускается применять Landscape для исполнения сценария. На приводимом снимке экрана он настроен на специальное ключевое слово ALL, что подразумевает, что Landscape может применяться любым пользователем.

     

    Рисунок 12-3


    Успешная регистрация при помощи Launchpad

  5. Если регистрация успешна, вы должны получить свой компьютер помещённым на странице “Pending Computers” Launchpad. Ваша регистрация может столкнуться с отказом если имя хоста не разрешается в DNS, в таком случае вы можете либо воспользоваться IP адресом или добавить имя хоста своего экземпляра WSL в файл /etc/hosts.

    Рисунок 12-4


    Отложенная регистрация для нового компьютера

Выполнение сценария в экземпляре WSL при помощи Landscape

Теперь, когда вы обладаете установленным подключением, мы можем начать запускать сценарии и свои пакеты обновлений. Прежде всего мы исполним сценарий для отображения занятости диска вашего экземпляра WSL. Переместитесь в компьютеры и выберите “scripts” сверху в самой правой панели.

 

Рисунок 12-5


Настройка сценария применения Get Disk

В блок кода вставьте такой сценарий:


#!/bin/bash
echo "Free Disk Space"
df –h

echo # blank line to separate the scripts

echo "Disk Usage by top-level folder"
du -sh --exclude=/mnt --exclude=/proc /*
 	   

Прокрутите к блоку “Run as user” и введите “root” или иного пользователя по своему выбору - этому пользователю должна быть позволена настройка landscape-client, которая приглашается на ввод при первой установке этого клиента. Наконец, кликните кнопку “Run” внизу этой страницы и дождитесь завершения данного сценария в тот момент, когда ваша страница обновится с указанием успешности или отказа.

 

Рисунок 12-6


Успешное исполнение нашего сценария занятости Get Disk

Затем вы можете кликнуть по значению состояния команды для просмотра результатов вывода этого сценария.

 

Рисунок 12-7


Результаты исполнения нашего сценария занятости Get Disk

Управление пакетами экземпляра WSL при помощи Landscape

У нас также имеется возможность управления установленными пакетами когда мы перейдём в закладку Packages. Для установки некого пакета введите в Search для блока пакетов его название, например, ffmpeg, и затем кликните по увеличительному стеклу или нажмите Ввод.

 

Рисунок 12-8


Поиск пакета

В каждой из страниц результатов поиска пользуйтесь символом + вслед за теми пакетами, которые вы пожелаете установить. В данном примере мы выбрали толко пакет ffmpeg.

 

Рисунок 12-9


Выбор пакета для утановки

Кликните по кнопке “Apply changes” внизу и дождитесь завершения этой задачи.

 

Рисунок 12-10


Успешная установка пакета

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

 

Рисунок 12-11


Доступные обновления в закладке Packages

Вы также обнаружите следующие сведения в закладке Organization, а также ниспадающее меню предупредительных сообщений (Alert).

 

Рисунок 12-12


Организация предупреждений, отображающих доступные обновления

Кликните по предупредительным сообщениям или изберите компьютер (компьютеры), а затем выбор закладки Packages переместит вас на аналогичный экран, в котором вы можете выбрать обновления для их применения. Здесь пакеты могут либо обновляться путём клика по символу -, либо обновляться через клик по символу (Рисунок 12-13). В любом случае вы применяете сделанные изменения через кнопку “Apply changes” внизу.

 

Рисунок 12-13


Выбор пакета для обновления

Применение Ansible для управления Ubuntu в WSL

Ansible является одной из ведущих платформ автоматизации управления конфигурациями. Являясь продуктом с открытым исходным кодом, он готов к доступу на выгрузку с https://github.com/ansible/ansible, а также доступен в репозитории APT Ubuntu. Он разработан Red Hat и также обладает планами поддержки на время вашего путешествия на сайте https://ansible.com/. {Прим. пер.: рекомендуем также наши переводы 3 издания Полного руководства Ansible Джеймса Фримана и Джесса Китинга и Практической автоматизации предприятия в Linux Джеймса Фримана}.

Вам потребуется система Linux или macOS для размещения части серверной стороны Ansible, поскольку Windows пока не поддерживается в настоящее время для такого сервера. Для тех систем, которыми вы желаете управлять из Ansible, вам также потребуется запустить некий сервер SSH, например OpenSSH. В дистро WSL Ubuntu вы можете установить OpenSSH через APT:


> sudo apt install openssh-server
		

Тем не менее, поскольку WSL не запускает службы автоматически, вам придётся установить среду systemd, как это обсуждалось ранее. В качестве альтернативы, если вы не желаете запускать установку SystemD, вы должны вызывать команду sshd через некие иные средства, например, посредством заданий Планировщика задач Windows (Windows Task Scheduler). Такое задание Планировщика задач Windows обязано выполнить регистрацию в Windows и воспользоваться командой wsl.exe для запуска необходимого дистро и sshd внутри него.

Для управления множеством дистро WSL при помощи Ansible в одном и том же ПК Windows вам потребуется настроить sshd каждого дистро WSL на применение некого уникального сетевого “порта”, если только и сервер управления, и управляемые экземпляры WSL2 не находятся в одном и том же ПК, поскольку у вас может иметься несколько служб, прослушивающих один и тот же порт, а для управления с удалённого сервера вместо того же самого ПК, вам требуется настроить цель на имя хоста соответствующего ПК Windows или IP для доступа к тому порту, который выступает посредником (прокси) в Windows из каждого экземпляра WSL. По умолчанию sshd связывается по порту 22.

Когда все управляемые клиенты и сам сервер в одном и том же ПК в раздельных дистро WSL и эти дистро применяют WSL2, тогда вы можете ставить целями соответствующие дистро по их внутренним адресам вместо изменения номера порта в каждой из служб sshd. Тем не менее, такие сервер и клиенты обязаны применять WSL2 для их доступности по внутреннему адресу, отличающемуся от физического сетевого адреса своего ПК.

При создании описи (inventory) хоста для Ansible вам придётся добавлять соответствующий номер порта, когда его дистро WSL настроен на применение отличного от 22 порта. В самом сервере управления создайте файл /etc/ansible/hosts для удержания имён хостов или IP адресов и, в качестве не обязательного параметра, их номеров портов, когда они отличаются от 22:


192.0.2.50
windows-pc.example.org
windows-pc.example.org:8022 ; alternative port number 8022.
 	   

Вам следует настроить пары ключей SSH в своём сервере при помощи ssh-keygen и настроить каждого клиента на применение его для аутентификации. Ubuntu настраивается на поддержку идентификации по общедоступному ключу сразу после установки. Вам потребуется скопировать общедоступный ключ SSH в файл $HOME/.ssh/authorized_keys каждого клиента, к которому вы будете подключаться со своего сервера. Это можно упростить при помощи команды ssh-copy-id в системе с установленными и общедоступным и частным ключами, причём самым простым местом является та система, в которой вы запускали ssh-keygen. Возможно, вам придётся перенастроить sshd своих клиентов, чтобы допускать аутентификацию по паролю ssh-copy-id для правильного копирования ключа SSH.