Агент Microsoft Azure для Linux
Редактор Downcodes познакомит вас с агентом Microsoft Azure Linux (waagent), который представляет собой инструмент, который управляет подготовкой Linux и взаимодействием виртуальных машин с контроллером структуры Azure. Он предоставляет следующие возможности для развертываний Linux IaaS:
1. Подготовка образа: waagent отвечает за управление процессом первоначальной подготовки виртуальных машин Linux, включая настройку сети, установку драйверов и настройку начальных учетных записей пользователей.
2. Управление сетью. waagent координирует свои действия с контроллером структуры Azure для настройки сетевых параметров виртуальной машины, таких как IP-адрес, маска подсети и шлюз.
3. Управление ядром: waagent может управлять обновлениями ядра виртуальной машины, чтобы гарантировать, что на ней всегда работает последняя и безопасная версия ядра.
4. Диагностика: waagent может собирать и сообщать информацию о состоянии виртуальных машин, чтобы помочь в диагностике проблем и устранении сбоев.
5. Развертывание SCVMM: waagent поддерживает интеграцию с System Center Virtual Machine Manager (SCVMM) для управления виртуальными машинами и их предоставления.
6. Расширения виртуальных машин: waagent поддерживает запуск расширений виртуальных машин, которые предоставляют дополнительные функции и настройки, такие как установка программного обеспечения или мониторинг показателей.
7. Связь: waagent обменивается данными с контроллером структуры Azure по двум каналам:
* DVD-диск с добавлением во время загрузки. Для развертываний IaaS DVD-диск с добавлением во время загрузки, содержащий OVF-совместимый файл конфигурации, предоставляет информацию для подготовки (в дополнение к паре ключей SSH).
* REST API: конечная точка TCP, предоставляющая REST API для получения конфигураций развертывания и топологии.
waagent может использовать HTTP-прокси через переменные среды httpproxy (для HTTP-запросов) или httpsproxy (для HTTPS-запросов). Из-за ограничений Python waagent не поддерживает HTTP-прокси, требующие аутентификации.
Аналогично, если установлена переменная среды no_proxy, waagent будет обходить прокси.
Обратите внимание, что способ определения этих переменных среды для службы waagent варьируется в зависимости от дистрибутива. Для дистрибутивов, использующих systemd, обычным подходом является использование Environment или EnvironmentFile в разделе [Service] определения службы, например, с использованием переопределения или вставки файла (переопределения см. в редактировании systemctl).
Пример
`
кот /etc/systemd/system/walinuxagent.service.d/http-proxy.conf
[Услуга]
Environment="http_proxy=http://proxy.example.com:80/"
Environment="https_proxy=http://proxy.example.com:80/"
#
`
waagent передает свою среду расширениям виртуальной машины, которые он выполняет, включая httpproxy и httpsproxy, поэтому определение прокси для waagent также определит прокси для расширения виртуальной машины.
Если вы используете переменные конфигурации HttpProxy.Host и HttpProxy.Port, они переопределяют параметры среды. Обратите внимание, что эти переменные конфигурации являются локальными для процесса waagent и не передаются расширению виртуальной машины.
Для правильной работы waagent требуются некоторые системные пакеты. Эти пакеты различаются в зависимости от дистрибутива.
Установка через репозиторий дистрибутива — единственный поддерживаемый метод установки.
Вы можете установить из исходного кода, чтобы получить более расширенные возможности, такие как установка в произвольное расположение или создание собственного образа. Однако установка из исходного кода может переопределить настройки, внесенные в waagent вашим дистрибутивом, и предназначена только для опытных пользователей. У нас очень ограниченная поддержка этого метода.
Для установки из исходного кода вы можете использовать инструменты настройки:
`
sudo python setup.py install --register-service
`
Для Python 3 используйте:
`
sudo python3 setup.py install --register-service
`
Вы можете просмотреть дополнительные параметры установки, выполнив следующую команду:
`
sudo python setup.py install --help
`
Файл журнала waagent сохраняется в /var/log/waagent.log.
Наконец, вы можете настроить свой собственный пакет RPM или DEB, используя примеры конфигурации, представленные в разделах DEB и RPM ниже. Этот метод также подходит для опытных пользователей, и у нас очень ограниченная поддержка этого метода.
Обновление через репозиторий дистрибутива или использование автоматических обновлений — единственные поддерживаемые методы. Дополнительную информацию можно найти здесь: Обновление агента Linux.
Чтобы обновить waagent из исходного кода, вы можете использовать setuptools. Обновление из исходного кода предназначено только для опытных пользователей, и у нас очень ограниченная поддержка этого метода.
`
sudo python setup.py install --force
`
Перезапустите службу waagent:
`
перезапуск службы sudo waagent
`
Для Ubuntu используйте:
`
перезапустить службу sudo walinuxagent
`
Для CoreOS используйте:
`
sudo systemctl перезапустить ваагент
`
-verbose: увеличить уровень детализации указанной команды.
-force: пропустить интерактивное подтверждение для некоторых команд.
-help: список поддерживаемых команд и флагов.
-deprovision: пытается очистить систему и сделать ее пригодной для повторной инициализации, удалив следующее:
* Все ключи хоста SSH (если Provisioning.RegenerateSshHostKeyPair в файле конфигурации имеет значение «y»).
* Конфигурация сервера имен в /etc/resolv.conf.
* Пароль root в /etc/shadow (если Provisioning.DeleteRootPassword в файле конфигурации имеет значение «y»).
* Аренда кэшированного DHCP-клиента.
* Сбросьте имя хоста на localhost.localdomain.
предупреждать! деинициализация не может гарантировать, что изображение очищено от всей конфиденциальной информации и пригодно для повторного распространения.
-deprovision+user: выполняет все действия при деинициализации (описанные выше), а также удаляет последнюю подготовленную учетную запись пользователя и связанные с ней данные.
-version: Отобразить версию waagent.
-serialconsole: настройте GRUB, чтобы пометить ttyS0 (первый последовательный порт) как загрузочную консоль. Это обеспечит отправку журналов загрузки ядра на последовательный порт и их можно будет использовать для отладки.
-daemon: запустить waagent как процесс-демон для управления взаимодействием с платформой. Этот параметр указывается для waagent в скрипте инициализации waagent.
-start: запустить waagent в качестве фонового процесса.
-collect-logs [-full]: запускает утилиту сбора журналов, которая будет собирать журналы, связанные с агентом, для целей отладки и сохранять их в папке агента на диске. Точное местоположение будет отображаться при запуске. Используйте флаг -full для более полного сбора журналов.
Файл конфигурации (/etc/waagent.conf) управляет работой waagent. Пустые строки и строки, первый символ которых #, игнорируются (комментарии в конце строки не поддерживаются).
Пример файла конфигурации показан ниже:
`
Расширения.Enabled=y
Extensions.GoalStatePeriod=6
Provisioning.Agent=авто
Provisioning.DeleteRootPassword=n
Provisioning.RegenerateSshHostKeyPair=y
Provisioning.SshHostKeyPairType=rsa
Provisioning.MonitorHostName=y
Provisioning.DecodeCustomData=n
Provisioning.ExecuteCustomData=n
Provisioning.PasswordCryptId=6
Provisioning.PasswordCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.MountOptions=Нет
ResourceDisk.EnableSwap=n
ResourceDisk.EnableSwapEncryption=n
ResourceDisk.SwapSizeMB=0
Журналы.Verbose=n
Журналы.Collect=y
Logs.CollectPeriod=3600
ОС.AllowHTTP=n
OS.RootDeviceScsiTimeout=300
ОС.EnableFIPS=n
OS.OpensslPath=Нет
OS.SshClientAliveInterval=180
OS.SshDir=/etc/ssh
HttpProxy.Host=Нет
HttpProxy.Port=Нет
`
Различные варианты конфигурации подробно описаны ниже. Параметры конфигурации делятся на три типа: логические, строковые и целочисленные. Логические параметры конфигурации могут быть указаны как «y» или «n». Специальное ключевое слово «Нет» можно использовать с определенными элементами конфигурации строки, как описано ниже.
Тип: Логический
Значение по умолчанию: да
Эта опция позволяет пользователю включать или отключать расширенные возможности обработки в агенте. Допустимые значения: «y» или «n». Если расширенная обработка отключена, целевой статус по-прежнему будет обрабатываться и о состоянии виртуальной машины будет сообщаться, но только каждые 5 минут. Расширенная конфигурация в целевом состоянии будет игнорироваться. Обратите внимание, что такие функции, как сброс пароля, обновление ключей SSH и резервное копирование, зависят от расширений. Отключайте эту опцию, только если вам вообще не нужно расширение.
Примечание. Отключить расширение таким способом — это не то же самое, что вообще не использовать прокси. Для этого флаг обеспеченияVMAgent должен быть установлен во время подготовки через любой используемый API. Мы предоставим более подробную информацию об этом на нашей вики, но она пока недоступна.
Тип: Логический
Значение по умолчанию: н
Дождитесь завершения Cloud-Init, прежде чем приступать к расширению виртуальной машины (состояние Cloud-Init --wait).
Cloud-init и расширения виртуальной машины — это распространенные способы настройки виртуальной машины во время первоначального развертывания. По умолчанию агент начнет выполнять масштабирование, пока Cloud-init все еще находится на этапе «Настройка», и не будет ждать завершения «заключительного» этапа. Cloud-init и расширения могут выполнять операции, конфликтующие друг с другом (например, они оба могут пытаться установить пакет). Установка для этого параметра значения «y» гарантирует, что расширение виртуальной машины будет выполняться только после того, как Cloud-init завершит все этапы.
Обратите внимание, что для использования этого параметра необходимо создать собственный образ и установить для этого параметра значение «y», чтобы гарантировать выполнение операции ожидания во время первоначального развертывания виртуальной машины.
Тип: целое число
Значение по умолчанию: 3600
Тайм-аут в секундах, в течение которого агент ожидает Cloud-Init. По истечении времени ожидания агент продолжает выполнять расширение виртуальной машины. Дополнительные сведения см. в Extensions.WaitForCloudInit.
Тип: целое число
Значение по умолчанию: 6
Как часто (в секундах) опрашивать новый целевой статус и сообщать о состоянии виртуальных машин и расширений. Целевое состояние описывает желаемое состояние расширения на виртуальной машине.
Примечание. Установка этого параметра более чем на несколько минут может привести к тому, что на портале Azure состояние виртуальной машины будет отображаться как «Не отвечает/Недоступно». Кроме того, этот параметр влияет на то, как быстро агент начнет масштабирование.
Тип: Логический
Значение по умолчанию: да
Включает автоматическое обновление обработчиков расширений. Обработчики расширений отвечают за управление расширениями и отчеты о состоянии виртуальной машины. Основные функции агента содержатся в обработчике расширений, и пользователям рекомендуется включить эту опцию, чтобы поддерживать последнюю версию.
Если эта опция включена, агент будет устанавливать новые версии по мере их появления. Если этот параметр отключен, агент не будет устанавливать новые версии, а будет использовать последнюю версию, уже установленную на виртуальной машине.
проиллюстрировать:
Дополнительную информацию о версиях агентов см. в разделе Часто задаваемые вопросы.
Дополнительную информацию об обновлениях агентов можно найти в разделе часто задаваемых вопросов.
Дополнительные сведения об AutoUpdate.UpdateToLatestVersion и AutoUpdate.Enabled см. в разделе часто задаваемых вопросов.
Тип: Логический
Значение по умолчанию: да
Включает автоматическое обновление обработчиков расширений. Этот флаг поддерживается по причинам, связанным с устаревшими версиями, и мы настоятельно рекомендуем использовать AutoUpdate.UpdateToLatestVersion вместо этого флага.
Разница между этими двумя флагами заключается в том, что если установлено значение «n», AutoUpdate.Enabled будет использовать версию обработчика расширений, предварительно установленную в образе, а AutoUpdate.UpdateToLatestVersion будет использовать последнюю версию, установленную на виртуальной машине (посредством автоматических обновлений). .
В большинстве дистрибутивов значением по умолчанию является «y».
Тип: строка
Значение по умолчанию: авто
Выберите агент обеспечения, который будет использоваться (или разрешите waagent определить это, указав «авто»). Возможные варианты: «авто» (по умолчанию), «waagent», «cloud-init» или «отключено».
Тип: Логический
Значение по умолчанию: да
Эта опция позволяет пользователю включать или отключать функции подготовки в агенте. Допустимые значения: «y» или «n». Если подготовка отключена, ключи узла SSH и пользователя в образе будут сохранены, а любая конфигурация, указанная в API подготовки Azure, будет игнорироваться.
ПРИМЕЧАНИЕ. Этот параметр конфигурации был удален и больше не имеет никакого эффекта. waagent теперь автоматически определяет Cloud-init в качестве агента подготовки (необязательно переопределяется с помощью Provisioning.Agent).
Тип: Логический
Значение по умолчанию: н
Отслеживайте изменения имени хоста и публикуйте изменения через запросы DHCP.
Тип: целое число
Значение по умолчанию: 30
Как часто (в секундах) отслеживать изменения имени хоста. Если MonitorHostName не задан, этот параметр игнорируется.
Тип: Логический
Значение по умолчанию: н
Эта опция включает/отключает поддержку подготовки через Cloud-init.
Если это правда («y»), агент будет ждать завершения Cloud-Init перед установкой расширений и обработкой последнего целевого состояния. Provisioning.Enabled Должен быть отключен («n»), чтобы этот параметр вступил в силу. Установка для Provisioning.Enabled значения true («y») переопределяет этот параметр и запускает встроенный код подготовки агента.
ПРИМЕЧАНИЕ. Этот параметр конфигурации был удален и больше не имеет никакого эффекта. waagent теперь автоматически определяет Cloud-init в качестве агента подготовки (необязательно переопределяется с помощью Provisioning.Agent).
Тип: Логический
Значение по умолчанию: н
Если этот параметр установлен, пароль root в файле /etc/shadow удаляется во время подготовки.
Тип: Логический
Значение по умолчанию: да
Если этот параметр установлен, все пары ключей хоста SSH (ecdsa, dsa и rsa) в /etc/ssh/ будут удалены во время подготовки. и сгенерируйте новую пару ключей.
Тип шифрования новой пары ключей можно настроить с помощью записи Provisioning.SshHostKeyPairType. Обратите внимание, что некоторые дистрибутивы заново создают пары ключей SSH для любых отсутствующих типов шифрования при перезапуске демона SSH (например, после перезагрузки).
Тип: строка
По умолчанию: RSA
Здесь можно установить тип алгоритма шифрования, поддерживаемый демоном SSH на виртуальной машине. Обычно поддерживаемые значения включают «rsa», «dsa» и «ecdsa».
Обратите внимание, что «ecdsa» не поддерживается «putty.exe» в Windows. Поэтому, если вы планируете использовать putty.exe в Windows для подключения к развертыванию Linux, используйте «rsa» или «dsa».
Тип: Логический
Значение по умолчанию: да
Если эта опция установлена, waagent будет отслеживать виртуальные машины Linux на предмет изменений имени хоста (возвращаемого командой «hostname») и автоматически обновлять конфигурацию сети в образе, чтобы отразить эти изменения. Чтобы отправить изменение имени на DNS-сервер, сеть на виртуальной машине будет перезапущена. Это приведет к кратковременной потере подключения к Интернету.
Тип: Логический
Значение по умолчанию: н
Если эта опция установлена, waagent будет декодировать CustomData из Base64.
Тип: Логический
Значение по умолчанию: н
Если эта опция установлена, waagent выполнит CustomData после подготовки.
Тип: строка
Значение по умолчанию: 6
Алгоритм, используемый crypt при генерации хэшей паролей.
Тип: строка
Значение по умолчанию: 10
Длина случайной соли, используемой при генерации хэшей паролей.
Тип: Логический
Значение по умолчанию: да
Если эта опция установлена, ресурсный диск, предоставленный платформой, будет отформатирован и смонтирован waagent при условии, что тип файловой системы, запрошенный пользователем в «ResourceDisk.Filesystem», не является «ntfs». На диске будет один раздел типа Linux (83). Обратите внимание: если этот раздел удастся успешно смонтировать, он не будет отформатирован.
Тип: строка
По умолчанию: ext4
Это указывает тип файловой системы ресурсного диска. Поддерживаемые значения различаются в зависимости от дистрибутива Linux. Если строка равна X, в образе Linux должен присутствовать mkfs.X. В образах SLES 11 обычно следует использовать ext3. В образах BSD здесь следует использовать «ufs2».
Тип: строка
Значение по умолчанию: /mnt/resource.
Это указывает путь для монтирования ресурсного диска.
Тип: строка
Значение по умолчанию: Нет
Указывает параметры монтирования диска, которые необходимо передать команде mount -o. Это список значений, разделенных запятыми, например «nodev,nosuid». Подробности смотрите в mount(8).
Тип: Логический
Значение по умолчанию: н
Если этот параметр установлен, файл подкачки (/swapfile) создается на ресурсном диске и добавляется в системное пространство подкачки.
Тип: Логический
Значение по умолчанию: н
Если этот параметр установлен, файл подкачки (/swapfile) будет смонтирован как зашифрованная файловая система (флаг поддерживается только во FreeBSD).
Тип: целое число
Значение по умолчанию: 0
Размер файла подкачки в мегабайтах.
Тип: Логический
Значение по умолчанию: н
Если эта опция установлена, подробность журнала будет увеличена. waagent регистрирует журналы в /var/log/waagent.log и использует системную функцию logrotate для ротации журналов.
Тип: Логический
Значение по умолчанию: да
Если этот параметр установлен, журналы агентов будут периодически собираться и загружаться в безопасное место для улучшения поддержки.
ПРИМЕЧАНИЕ. Эта функция зависит от возможностей использования ресурсов агента (cgroups); этот флаг не будет действовать ни в одном дистрибутиве, который не поддерживается.
Тип: целое число
Значение по умолчанию: 3600
Это определяет, как часто собираются и загружаются журналы. Значение по умолчанию — каждый час.
Примечание. Это вступает в силу только в том случае, если включена опция Logs.Collect.
Тип: Логический
Значение по умолчанию: н
Если поддержка SSL не скомпилирована в Python, прокси-сервер не сможет выполнить все запросы HTTPS. Вы можете установить для этой опции значение «y», чтобы прокси-сервер переключился на HTTP вместо того, чтобы отклонять запрос.
Примечание. Разрешение HTTP может непреднамеренно раскрыть защищенные данные.
Тип: Логический
Значение по умолчанию: н
Если этот параметр установлен, агент попытается установить и загрузить драйвер ядра RDMA, соответствующий версии прошивки на базовом оборудовании.
Тип: Логический
Значение по умолчанию: н
Если этот параметр установлен, агент будет отправлять в среду «OPENSSL_FIPS=1» при выполнении команд OpenSSL. Это указывает OpenSSL использовать любые установленные библиотеки, совместимые с FIPS.
Обратите внимание, что сам агент не имеет кода, связанного с FIPS. Если сертификат, соответствующий FIPS, не установлен, включение этой опции приведет к сбою всех команд OpenSSL.
Тип: целое число
Значение по умолчанию: 30
Агент отслеживает перезапуск DHCP-клиента и восстанавливает сетевые правила при перезапуске. Этот параметр определяет, как часто (в секундах) будет перезапускаться мониторинг.
Тип: целое число
Значение по умолчанию: 300
Это настраивает тайм-аут SCSI в секундах на корневом устройстве. Если не установлено, используется системное значение по умолчанию.
Тип: целое число
Значение по умолчанию: 30
Как часто (в секундах) устанавливать тайм-аут SCSI на корневом устройстве. Если RootDeviceScsiTimeout не установлен, этот параметр игнорируется.
Тип: строка
Значение по умолчанию: Нет
Это можно использовать для указания альтернативного пути к двоичному файлу openssl, используемому для криптографических операций.
Тип: целое число
Значение по умолчанию: 30
Как часто (в секундах) правила udev (75-persistent-net-generator.rules и /etc/udev/rules.d/70-persistent-net.rules) удаляются для постоянных имен сетевых интерфейсов.
Тип: целое число
По умолчанию: 180
Это значение задает количество секунд, которое агент использует для параметра конфигурации SSH ClientAliveInterval.
Тип: строка
По умолчанию: /etc/ssh
Эту опцию можно использовать для переопределения местоположения каталога конфигурации SSH по умолчанию.
Тип: строка
Значение по умолчанию: Нет
Если эта опция установлена, агент будет использовать этот прокси-сервер для запросов HTTP/HTTPS. Эти значения переопределяют переменные среды httpproxy или httpsproxy. Наконец, HttpProxy.Host является обязательным, если он используется, а HttpProxy.Port является необязательным.
Тип: Логический
Значение по умолчанию: да
Если эта опция установлена, агент попытается установить ограничения cgroups для ЦП и памяти для самого процесса агента, а также для расширенных процессов. Дополнительную информацию об этом смотрите в вики.
Тип: строка
Значение по умолчанию: пользовательский скрипт, команда запуска.
Список расширений, которые следует исключить из ограничений cgroups. Это должно быть разделено запятой.
WALinuxAgent собирает и отправляет данные об использовании в Microsoft, чтобы помочь нам улучшить наши продукты и услуги. Собранные данные используются для отслеживания работоспособности службы и помощи в обработке запросов в службу поддержки Azure. Собранные данные не содержат никакой личной информации. Прочтите наше заявление о конфиденциальности, чтобы узнать больше.
WALinuxAgent в настоящее время не поддерживает отключение телеметрии. Чтобы отключить сбор телеметрии, необходимо удалить WALinuxAgent. Если вам нужна эта функция, откройте проблему на GitHub и опишите свои потребности.
Мы не храним информацию об упаковке в этом репозитории, но некоторые примеры показаны ниже для справки. Официально поддерживаемую упаковку см. в репозитории последующих выпусков.
Официальный пакет Ubuntu WALinuxAgent можно найти здесь.
Выполните один раз:
Установите необходимые пакеты
`
sudo apt-get -y install ubuntu-dev-tools pbuilder python-all debhelper
`
Создать среду pbuilder
`
sudo pbuilder create --debootstrapopts --variant=buildd
`
Получите waagent.dsc из нижестоящего репозитория пакетов.
Чтобы скомпилировать пакет, выполните следующие действия в самом верхнем каталоге:
Сборка пакета исходного кода
`
dpkg-buildpackage -S
`
Сборка пакета
`
sudo pbuilder построить waagent.dsc
`
Получите собранный пакет, обычно расположенный в /var/cache/pbuilder/result.
Следующие инструкции описывают, как собирать пакеты rpm.
Установить инструменты настройки
`
локон https://bootstrap.pypa.io/ez_setup.py -o - | питон
`
Следующие команды создадут двоичный и исходный RPM:
`
python setup.py bdist_rpm
`
В этом проекте принят Кодекс поведения Microsoft для открытого исходного кода. Для получения дополнительной информации ознакомьтесь с часто задаваемыми вопросами о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.
Пример:
Лицензия Apache-2.0