среда, 24 марта 2021 г.

Руководство администратора Proxmox VE R 6.0 Глава 10.8

Proxmox VE Administration Guide

Виртуальные машины Qemu/KVM

  1. Эмулированные устройства и паравиртуализированные устройства
  2. Параметры Виртуальных Машин
  3. Миграция
  4. Копии и клоны
  5. Шаблоны виртуальных машин
  6. Generation ID виртуальной машины
  7. Импорт ВМ и образов дисков
  8. Поддержка Cloud-Init
  9. Проброс PCI(e)
  10. Hookscripts
  11. Гибернация
  12. Управление VM с помощью qm
  13. Конфигурация
  14. Блокировки
  1. Поддержка Cloud-Init

    Cloud-Init (облачная инициализация) - это де-факто мульти-дистрибутивный пакет, который обрабатывает раннюю инициализацию экземпляра виртуальной машины. С помощью Cloud-Init возможна настройка сетевых устройств и ключей ssh на стороне гипервизора. Когда виртуальная машина запускается в первый раз, программное обеспечение Cloud-Init внутри виртуальной машины применяет эти настройки.

    Многие дистрибутивы Linux предоставляют готовые к использованию образы Cloud-Init, в основном предназначенные для OpenStack. Эти образы также будут работать с Proxmox VE. Несмотря на то, что получение таких готовых образов может показаться удобным, мы как правило рекомендуем подготавливать образы самостоятельно. Преимущество в том, что вы будете точно знать, что вы установили, и это поможет вам позже легко настроить образ в соответствии с вашими требованиями.

    После создания такого образа Cloud-Init мы рекомендуем преобразовать его в шаблон виртуальной машины. С шаблоном ВМ, вы можете быстро создавать связанные клоны, так что это быстрый метод развертывания новых экземпляров виртуальных машин. Вам только необходимо настроить сеть (и, возможно, ключи ssh) перед запуском новой виртуальной машины.

    Мы рекомендуем использовать аутентификацию на основе ключей SSH для входа на виртуальные машины, предоставленные Cloud-Init. Также возможно установить пароль, но это не так безопасно, как использование аутентификации на основе ключа SSH, потому что Proxmox VE приходится хранить зашифрованную версию этого пароля в данных Cloud-Init.

    Proxmox VE создает образ ISO для передачи данных Cloud-Init в ВМ. Для этого всем Cloud-Init ВМ должен быть назначен привод CDROM. Также многие образы Cloud-Init предполагают наличие последовательной консоли, поэтому рекомендуется добавить последовательную консоль и использовать ее в качестве дисплея для этих виртуальных машин.
    1. Подготовка шаблонов Cloud-Init

      Первый шаг - подготовить вашу виртуальную машину. В основном вы можете использовать любую виртуальную машину. Просто установите пакеты Cloud-Init внутри виртуальной машины, которую вы хотите подготовить. В системах на основе Debian/Ubuntu это очень просто:
      apt-get install cloud-init
      Многие дистрибутивы предоставляют уже готовые к использованию образы Cloud-Init (предоставляемые в виде файлов .qcow2 ), поэтому в качестве альтернативы, вы можете просто загрузить и импортировать такие образы. В следующем примере мы будем использовать Cloud-Init образ предоставленый Ubuntu по адресу https://cloud-images.ubuntu.com
      # Загрузить образ
      wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img
      
      # Создать новую VM
      qm create 9000 --memory 2048 --net0 virtio,bridge=vmbr0
      
      # Импортировать загруженный диск в хранилище local-lvm
      qm importdisk 9000 bionic-server-cloudimg-amd64.img local-lvm
      
      # И наконец подключить новый диск к виртуальной машине как scsi-диск
      qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-1

      Примечание
      Образы Ubuntu Cloud-Init требуют типа контроллера virtio-scsi-pci для дисков SCSI.

      Добавление Cloud-Init CDROM
      Следующим шагом является настройка привода CDROM, который будет использоваться для передачи данных Cloud-Init в ВМ.
      qm set 9000 --ide2 local-lvm:cloudinit
      Чтобы иметь возможность загружаться непосредственно из образа Cloud-Init, установите для параметра bootdisk значение scsi0 и ограничьте BIOS для загрузки только с диска. Это ускорит загрузку, поскольку BIOS виртуальной машины пропускает тестирование загрузочного CDROM.
      qm set 9000 --boot c --bootdisk scsi0
      Также настройте последовательную консоль и используйте ее как дисплей. Многие образы Cloud-Init полагаются на это, поскольку это требование для образов OpenStack.
      qm set 9000 --serial0 socket --vga serial0
      На последнем этапе полезно преобразовать виртуальную машину в шаблон. Из этого шаблона вы можете быстро создавать связанные клоны. Развертывание из шаблонов ВМ происходит намного быстрее, чем создание полного клона (копии).
      qm template 9000
    2. Развертывание шаблонов Cloud-Init

      Вы можете легко развернуть такой шаблон путем клонирования:
      qm clone 9000 123 --name ubuntu2
      Затем настройте открытый ключ SSH, используемый для аутентификации, и настройте IP-адрес:
      qm set 123 --sshkey ~/.ssh/id_rsa.pub
      qm set 123 --ipconfig0 ip=10.0.10.123/24,gw=10.0.10.1
      Вы также можете настроить все параметры Cloud-Init, используя только одну команду. Мы просто разделили приведенный выше пример на две команды для уменьшения длины строки. Также не забудьте изменить настройку IP для вашего конкретного окружения.
    3. Пользовательская конфигурация Cloud-Init

      При интеграции Cloud-Init также можно использовать пользовательские файлы конфигурации вместо автоматически сгенерированных. Это делается с помощью опции cicustom в командной строке:
      qm set 9000 --cicustom "user = <volume>, network = <volume>, meta = <volume>"
      Пользовательские файлы конфигурации должны находиться в хранилище, поддерживающем фрагменты (snipets), и должны быть доступны на всех узлах для возможности миграции ВМ. В противном случае виртуальная машина не запустится. Например:
      qm set 9000 --cicustom "user = local: snippets / userconfig.yaml"
      Для Cloud-Init существует три вида конфигураций. Первый - это конфигурация пользователя, как показано в примере выше. Второй - это сетевая конфигурация, а третий - мета- конфигурация. Все они могут быть указаны вместе или их сочетание подбирается по мере необходимости. Автоматически сгенерированная конфигурация будет использоваться для всех, у которых не указан пользовательский файл конфигурации.
      Сгенерированный конфиг-файл можно выгрузить, чтобы он служил базой для пользовательских конфиг-файлов:
      qm cloudinit dump 9000 user
      Та же самая команда существует для network и meta.
    4. Специальные параметры Cloud-Init

      cicustom: [meta=<volume>] [,network=<volume>] [,user=<volume>]
      Укажите пользовательские файлы для замены автоматически сгенерированных при запуске.
      meta=<volume>
      Укажите конфиг-файл, содержащий все метаданные, передаваемые на виртуальную машину через cloud-init. Это провайдер конкретных значений у configdrive2 и nocloud он различный.
      network=<volume>
      Укажите настраиваемый файл, содержащий все сетевые данные, передаваемые на виртуальную машину через cloud-init
      user = <volume>
      Укажите настраиваемый файл, содержащий все пользовательские данные, передаваемые на виртуальную машину через cloud-init
      cipassword: <string>
      Пароль для назначения пользователю. Обычно это не рекомендуется. Вместо этого используйте ssh-ключи. Также обратите внимание, что более старые версии cloud-init не поддерживают хешированные пароли.
      citype: <configdrive2|nocloud>
      Задает формат конфигурации cloud-init. Значение по умолчанию зависит от настроенной операционной системы.type (ostype) . Мы используем формат nocloud для Linux и configdrive2 для windows.
      ciuser: <string>
      Имя пользователя, для которого нужно изменить ключи ssh и пароль, вместо пользователя по умолчанию, настроенного для образа.
      ipconfig[n]: [gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,ip=<IPv4Format/CIDR>] [,ip6=<IPv6Format/CIDR>]
      Укажите IP-адреса и шлюзы для соответствующего интерфейса.
      IP-адреса используют нотацию CIDR, шлюзы не являются обязательными, но для них необходим IP того же типа.
      Специальная строка dhcp может использоваться для IP-адресов для использования DHCP и в этом случае если шлюз не указан явно, он должен быть обеспечен DHCP. Для IPv6 специальная строка auto может использоваться для использования автоконфигурации без сохранения состояния.
      Если включен cloud-init и не указан ни IPv4, ни IPv6-адрес, по умолчанию используется dhcp на IPv4.
      gw = <GatewayIPv4>
      Шлюз по умолчанию для IPv4 трафика
      Примечание
      Требуется опция(и): ip

      gw=<GatewayIPv4>
      Шлюз по умолчанию для IPv6 трафика
      Примечание
      Требуется опция(и): ip6

      ip=<IPv4Format/CIDR> (default = dhcp )
      IPv4 адрес в CIDR формате
      ip=<IPv6Format/CIDR> (default = dhcp )
      IPv6 адрес в CIDR формате
      nameserver: <string>
      Устанавливает IP-адрес DNS-сервера для контейнера. Будет создан автоматически используя настройку хоста, если ни searchdomain, ни nameserver не установлены.
      searchdomain: <string>
      Устанавливает поисковый домен DNS для контейнера. Будет создан автоматически используя настройку хоста, если ни searchdomain, ни nameserver не установлены.
      sshkeys: <string>
      Настроить общедоступные ключи SSH (по одному на строку, формат OpenSSH).


4 комментария:

  1. Александр, спасибище за продолжение перевода!!!

    ОтветитьУдалить
    Ответы
    1. Долго не мог решить как поступать с изменением версии, в итоге решил что начиная со следующего поста будет v6.3, а уже переведенное приведу в соответствие с актуальной версией после завершения всего руководства - изменения есть и значительное количество, но на самом деле не такое уж оно и огромное.

      Удалить
  2. Большое спасибо за ваш труд.

    ОтветитьУдалить
  3. Спасибо. Очень важная и ответсвенная работа. Удачи.

    ОтветитьУдалить