Установка#

Состав дистрибутива#

Единый дистрибутив SberLinux OS Core поставляется в виде zip-архива, состоящего из:

  • zip-архива дистрибутива с компонентами, необходимыми для установки ОС;

  • zip-архива документации (имеет индекс doc в названии) с файлом index.html, позволяющим просматривать документацию локально.

Дистрибутив SberLinux OS Core включает в себя:

  • образы ОС следующих форматов для разных способов установки:

    • iso для создания загрузочного носителя;

    • raw для установки на bare metal;

    • файлы образов ВМ:

      • qcow2 для использования в среде OpenStack;

      • qcow2 для QEMU;

      • ova для VMware;

  • архив ociarchive для системы управления обновлениями OSTree;

  • архив tar.xz, включающий компоненты для развертывания в контейнерной среде:

    • каталог с конфигурационными файлами;

    • JSON-манифесты;

    • файлы системы (ядро, библиотеки и утилиты, необходимые для работы);

    • пакеты;

    • служебные файлы для сборки;

  • SBOM-файл json - машиночитаемый список компонентов, библиотек и зависимостей, входящих в состав ОС.

Актуальный список пакетов, входящих в состав поставки, можно получить:

Выбор способа установки#

Исходя из способа поставки дистрибутива (zip-архив с готовыми образами ВМ) классический способ установки ОС для SberLinux OS Core не применим. Используйте развертывание ОС на ВМ с задействованием файлов конфигурации Ignition.

Ниже приведены примеры часто используемых сценариев развертывания - на ВМ в QEMU, VirtualBox, а также на Bare metall с ISO-образа.

Примечание

По умолчанию при развертывании SberLinux OS Core будет создан привилегированный пользователь core, подробнее - в документе «Руководство по системному администрированию» → «Настройка пользователей и групп» → «Настройка пользователей» → «Пользователь по умолчанию».

Подготовка окружения#

SberLinux OS Core не предъявляет специфических требований к системному программному обеспечению окружения. Конфигурация аппаратного обеспечения (сервера) должна соответствовать приведенной в разделе «Системные требования» → «Аппаратные требования».

Предварительные условия

* Дистрибутив получен из доверенного источника

* Подготовлен файл конфигурации Ignition с пользовательскими настройками. Если файл конфигурации отсутствует, создайте его (подробнее см. в разделе «Установка» → «Конфигурация Ignition»). Варианты конфигурации в зависимости от требуемой функциональности представлены в документе «Руководство по системному администрированию» → «Сценарии администрирования»

* Имеется доступ к ВМ с поддержкой KVM. В примерах ниже используется утилита qemu-kvm, которая не входит в состав поставки и устанавливается пользователем отдельно

Предварительное развертывание среды#

Загрузка новой виртуальной машины в QEMU#

В зависимости от платформы файл конфигурации Ignition передается виртуальной машине, которая устанавливает ключ с конфигурационными данными в устройство настройки ПО QEMU.

Чтобы выделить временное хранилище для ВМ, используйте команду qemu-kvm с опцией -snapshot.

Чтобы создать многоуровневый qcow2 впервые, используйте команду qemu-img create.

Извлечение образа qcow2#

  1. Создайте каталог для виртуальных дисков:

    mkdir -pv ~/.local/share/libvirt/images/
    
  2. Выберите необходимый образ qcow2 из состава поставки и загрузите его в созданный каталог, например, следующим образом:

    cp /<path_to_extracted_sbcos_qemu_image>.qcow2 ~/.local/share/libvirt/images/
    

Установка на виртуальную машину QEMU#

Установка с помощью qemu-kvm#

  1. Запустите новую ВМ с помощью qemu-kvm.

    Примечание

    В режиме snapshot все изменения, выполненные в режиме реального времени после загрузки, будут удалены после выключения машины. Чтобы сохранить внесенные изменения, настройте выделенный постоянный диск.

  2. Запустите SberLinux OS Core на QEMU:

    2.1. Определите переменные:

    IGNITION_CONFIG="<path_to_example>.ign"
    
    IMAGE="<path_to_image>.qcow2"
    
    IGNITION_DEVICE_ARG="-fw_cfg name=opt/com.oscore/config,file=${IGNITION_CONFIG}"
    

    2.2. Выполните запуск:

    • для временного хранилища:

      qemu-kvm -m 2048 -cpu host -nographic -snapshot \
        -drive if=virtio,file=${IMAGE} ${IGNITION_DEVICE_ARG} \
        -nic user,model=virtio,hostfwd=tcp::2222-:22
      
    • для постоянного хранилища:

      qemu-img create -f qcow2 -F qcow2 -b ${IMAGE} sbcos_vm.qcow2
      
      qemu-kvm -m 2048 -cpu host -nographic \
        -drive if=virtio,file=sbcos_vm.qcow2 ${IGNITION_DEVICE_ARG} \
        -nic user,model=virtio,hostfwd=tcp::2222-:22
      
  3. При подключении к сети в пользовательском режиме QEMU назначенный IP-адрес недоступен с хоста. В приведенных выше примерах используется hostfwd для выборочной переадресации SSH-порта на гостевой машине на локальный хост (порт 2222). Если настроен SSH-ключ для пользователя core по умолчанию, подключитесь к виртуальной машине по SSH через переадресованный порт:

    ssh -p 2222 core@<localhost>
    

Установка с помощью virt-install#

Альтернативный вариант установки ВМ:

  1. Установите необходимые пакеты на хост-машине:

    dnf install -y qemu-kvm libvirt virt-install virt-viewer
    

    Где:

    • qemu-kvm — гипервизор QEMU с поддержкой аппаратной виртуализации KVM;

    • libvirt — библиотека и набор инструментов для управления виртуализацией;

    • virt-install — утилита для создания ВМ и установки на них гостевых ОС;

    • virt-viewer - инструмент для просмотра и управления ВМ.

  2. Добавьте текущего пользователя в группы libvirt и qemu, например, с помощью переменных окружения:

    usermod -a -G libvirt $USER
    
    usermod -a -G qemu $USER
    
  3. Добавьте текущего пользователя в конфигурационный файл QEMU. Например, для пользователя test_user добавьте в файл /etc/libvirt/qemu.conf следующие записи:

    user = "test_user"
    
    group = "libvirt"
    
  4. Запустите виртуальную машину, например, со следующими параметрами:

    VM_NAME="sbcos_vm"
    
    VM_RAM="8192"
    
    VM_CPU="4"
    
    IGNITION_CONFIG="<path_to_example>.ign"
    
    IMAGE="<path_to_image>.qcow2"
    
    virt-install --connect="qemu:///system" --name=${VM_NAME} --vcpus=${VM_CPU} --memory=${VM_RAM} --import --network network=default --graphics=none --disk="size=15,backing_store=${IMAGE}" --qemu-commandline="-fw_cfg name=opt/com.oscore/config,file=${IGNITION_CONFIG}"
    

    В результате будет запущена ВМ sbcos_vm с выделенными ей 8 Гб оперативной памати, 4 виртуальными процессорами, с использованием файла конфигурации Ignition с расположением <path_to_example>.ign, и образом - <path_to_image>.qcow2.

    После окончания загрузки машины в конце вывода будет находиться ее IP-адрес.

  5. Подключитесь к ВМ по SSH:

    ssh core@<IP_addr_vm>
    

    Где вместо <IP_addr_vm> укажите IP-адрес ВМ из вывода предыдущего шага.

Для настройки хранилища после установки ОС обратитесь к разделу «Руководство по системному администрированию» → «Настройка хранилища».

Установка на виртуальную машину VirtualBox#

  1. Импортируйте ВМ и укажите место ее хранения с помощью переменных:

    VM_NAME='sbcos'
    
    VM_DISK=$(realpath ~/VirtualBox\ VMs/${VM_NAME})/${VM_NAME}.vdi
    
  2. ignition считывает конфигурацию из /Ignition/Config гостевых свойств ОС ВМ. Задайте конфигурацию Ignition для ВМ:

    IGN_PATH="<path_to_config>.ign"
    
    VM_NAME='sbcos'
    
    VBoxManage guestproperty set "$VM_NAME" /Ignition/Config "$(cat $IGN_PATH)"
    

    Размер /Ignition/Config файла свойств гостевой ОС зависит от максимальной длины командной строки в ОС. Ограничения для конкретных ОС составляют приблизительно:

    • ОС на основе Linux - 128 Кб;

    • macOS - 256 Кб;

    • Windows - 8 Кб.

    Если конфигурация Ignition превышает ограничение, можно разместить ее на HTTPS-сервере и ссылаться на нее с помощью параметра конфигурации (подробнее см. в разделе «Конфигурация Ignition» → «Использование удаленной конфигурации Ignition» ниже).

    Примечание

    Утилита VBoxManage не поставляется в составе продукта и устанавливается пользователем отдельно при выборе Oracle VM VirtualBox в качестве инструмента для развертывания ВМ.

  3. Создайте ВМ, установив необходимые параметры (тип виртуальной ОС, объем памяти, процессоры, контроллеры хранения и проч.), например:

    VBoxManage createvm --name "${VM_NAME}" --ostype OScore_64 --register
    
    VBoxManage modifyvm "${VM_NAME}" --memory 4096 --cpus 2 --vram 20 --graphicscontroller vmsvga --rtcuseutc on
    
    VBoxManage storagectl "${VM_NAME}" --name SATA --add sata --controller IntelAhci --portcount 30 --bootable on
    
  4. Создайте жесткий диск и задайте размер диска (например, 10 Гб):

    VBoxManage createmedium --filename "${VM_DISK}" --size 10240 --format VDI
    
    VBoxManage storageattach "${VM_NAME}" --storagectl SATA --type hdd --port 0 --device 0 --medium "${VM_DISK}"
    
  5. Настройте сеть и правила переадресации портов. По умолчанию ВМ будет использовать сеть NAT с общим IP-адресом хоста. При необходимости использования ВМ IP-адреса, отличного от хоста, можно настроить сетевой адаптер ВМ на сеть bridged. Примеры настройки:

    • сеть NAT - по умолчанию не разрешает входящие подключения к ВМ. Чтобы разрешить входящие SSH-соединения, можно перенаправлять соединения, например, через порт 2222 на хосте на SSH-сервер в ВМ:

      VBoxManage modifyvm "$VM_NAME" --natpf1 "guestssh,tcp,,2222,,22"
      

      После загрузки ВМ можно подключиться к ней по SSH с хоста:

      ssh core@<localhost> -p 2222
      
    • сеть bridged - для ее использования определите сетевой адаптер, который должен быть подключен к ВМ. Получите имя сетевого адаптера хоста по умолчанию:

      ip route ls default | grep -Po '(?<= dev )(\S+)'
      

      Измените настройки сетевого адаптера ВМ:

      VM_NAME='sbcos'
      
      ADAPTER=adapter-name
      
      VBoxManage modifyvm "$VM_NAME" --nic1 bridged --bridgeadapter1 "$ADAPTER"
      

Установка на серверах Bare metall с использованием ISO-образа#

Примечание

Если предполагается установка ОС на серверы с разными типами и/или количеством жестких дисков, создайте отдельную настраиваемую конфигурацию Ignition для каждой машины (или класса машин). Возможно объединение общих частей конфигурации в отдельную конфигурацию Ignition, которая может быть объединена в пользовательскую конфигурацию для каждой машины.

Чтобы установить SberLinux OS Core на сервер Bare metall в интерактивном режиме с использованием ISO-образа, выполните следующие шаги:

  1. Запишите ISO-образ на диск - в Linux и MacOS с помощью утилиты dd, в Windows с помощью Rufus в режиме «DD Image».

  2. Запустите целевой сервер и выполните загрузку с использованием ISO-образа. По умолчанию вход осуществляется без пароля. SberLinux OS Core устанавливается с ISO-образа без использования дискового хранилища. После загрузки появится доступ к командной строке.

  3. Запустите установщик coreos-installer:

    coreos-installer install /dev/sda \
        --ignition-url <ignition_URL>
    

    Где:

    • /dev/sda - пример расположения первого диска, смонтированного в системе и предназначенного для установки дистрибутива; целевые директория и диск могут отличаться в зависимости от используемого аппаратного обеспечения;

    • --ignition-url - ссылка на файл конфигурации Ignition, расположенный на вспомогательном сервере.

  4. После завершения установки перезагрузите систему, выполнив команду reboot.

  5. После перезагрузки ignition загрузит файл конфигурации и подготовит систему к работе в соответствии с заданными параметрами.

Конфигурация Ignition#

По умолчанию образ SberLinux OS Core не содержит пользователей и образ прикладного хоста, а предлагает систему файлов конфигурации Ignition, с помощью которых каждый экземпляр ОС настраивается при первой загрузке.

ignition — это утилита подготовки, которая считывает файл конфигурации (в формате JSON) и подготавливает систему на основе этой конфигурации. Настраиваемые компоненты включают в себя хранилища и файловые системы, модули systemd и пользователей.

ignition запускается один раз во время первой загрузки системы (в режиме initramfs). Поскольку ignition запускается на ранней стадии процесса загрузки, она может перераспределять разделы дисков, форматировать файловые системы, создавать пользователей и записывать файлы до загрузки пользовательского пространства. В результате системные службы записываются на диск при запуске системы, что ускоряет время загрузки.

Формат конфигураций Ignition - машиночитаемый файл JSON. Для удобства чтения и записи человеком используется дополнительный промежуточный файл - конфигурация Butane в формате YAML.

Для создания конфигурации Ignition:

  1. Создайте конфигурацию Butane в формате YAML (файл .bu);

  2. Преобразуйте созданный файл .bu в файл конфигурации Ignition (.ign) с помощью утилиты butane.

В процессе транспиляции butane проверяет синтаксис файла YAML и информирует о выявленных ошибках.

Полученный файл конфигурации Ignition готов для использования при загрузке ОС на виртуальной машине или для установки на Bare metal.

Примечание

Планируйте конфигурацию с учетом полного набора сведений о настройке перед запуском экземпляра SberLinux OS Core. Для корректировки параметров настройки отредактируйте конфигурацию Ignition и повторно разверните экземпляр ОС из нового образа.

Запуск butane#

butane можно запустить в виде контейнера с помощью podman/docker (в примерах ниже будет использован podman), из дистрибутивных пакетов или загрузить его в виде отдельного двоичного файла.

Примечание

butane в виде Docker-образа поставляется в Platform V DropApp начиная с версии 3.1.0.

Запуск из контейнера с помощью podman#

Примеры разных вариантов запуска:

  • Из контейнера, размещенного в реестре Quay.io:

    podman pull quay.io/coreos/butane:<release_tag>
    
  • C использованием стандартного ввода и стандартного вывода:

    podman run --interactive --rm quay.io/coreos/butane:<release_tag> \
          --pretty --strict <your_config>.bu <transpiled_config>.ign
    
  • C использованием файла в качестве входных данных и стандартного вывода:

    podman run --interactive --rm --security-opt label=disable \
          --volume ${PWD}:/pwd --workdir /pwd quay.io/coreos/butane:<release_tag> \
          --pretty --strict <your_config>.bu <transpiled_config>.ign
    

Примечание

Для упрощения ввода текста добавьте следующий псевдоним в конфигурацию своей оболочки:

alias butane='podman run --rm --interactive       \
              --security-opt label=disable        \
              --volume ${PWD}:/pwd --workdir /pwd \
              quay.io/coreos/butane:<release_tag>'

Установка из дистрибутивных пакетов#

Установите butane, например, одним из следующих способов:

  • с помощью пакетного менеджера DNF/YUM:

    dnf install -y butane
    
  • в виде пакета Homebrew:

    brew install butane
    
  • в виде пакета MacPorts:

    port install butane
    
  • в виде пакета Scoop через дополнительные опции:

    scoop bucket add extras
    
    scoop install butane
    

Установка с использованием готового исполняемого файла#

  • для ОС на основе Linux:

    1. Загрузите ключи подписи и импортируйте их:

      curl <URL_to_gpg_key> | gpg --import
      
    2. Загрузите последнюю версию Butane и отдельную подпись с официального сайта и проверьте с помощью gpg:

      gpg --verify butane-x86_64-unknown-linux-gnu.asc
      
  • для macOS:

    1. Загрузите ключи подписи и импортируйте их:

      curl <URL_to_gpg_key> | gpg --import
      
    2. Загрузите последнюю версию Butane и отдельную подпись с официального сайта и проверьте с помощью gpg:

      gpg --verify butane-x86_64-apple-darwin.asc
      
  • для Windows:

    1. Загрузите ключи подписи и импортируйте их:

      Invoke-RestMethod -Uri <URL_to_gpg_key> | gpg --import
      
    2. Загрузите последнюю версию Butane и отдельную подпись с официального сайта и проверьте с помощью gpg:

      gpg --verify butane-x86_64-pc-windows-gnu.exe.asc
      

Создание конфигурации Ignition#

В качестве примера приведено создание базовой конфигурации Ignition, модифицирующей параметры пользователя по умолчанию (core) таким образом, чтобы позволить ему входить в систему с помощью SSH-ключа.

Предварительные условия

* Наличие пары открытых и закрытых ключей SSH для аутентификации пользователя. Сгенерируйте SSH-ключ, например, с помощью команды ssh-keygen -t rsa. Открытый SSH-ключ будет передан на машину с SberLinux OS Core через конфигурацию Ignition. Закрытый SSH-ключ должен быть доступен пользователю на локальной рабочей станции для удаленного прохождения аутентификации по SSH

Сценарий:

  1. Создайте конфигурацию Butane в формате YAML:

    1.1. Скопируйте следующий пример конфигурации в текстовый редактор;

    variant: sbcos
    version: 3.2.0
    passwd:
    users:
       - name: core
          ssh_authorized_keys:
          - ssh-rsa <key>
    

    Где:

    • variant: - идентификатор конфигурации;

    • version: - семантическая версия конфигурации, может быть задана пользователем в произвольном порядке;

    • passwd: - описание дополнений, вносимых в файл /etc/passwd;

    • users: - список пользователей, создаваемых в ВМ;

    • name: - имя пользователя;

    • ssh_authorized_keys: - список SSH-ключей, которые будут добавлены для соответствующего пользователя.

    1.2. Замените строку, начинающуюся с - ssh-rsa, содержимым файла с открытым ключом SSH (.pub);

    1.3. Сохраните файл в формате Butane, например, под именем example.bu.

    Примечание

    Конфигурация Butane должна соответствовать синтаксису файлов YAML, которые должны иметь последовательный отступ. butane проверяет синтаксические ошибки и проинформирует в случае их наличия. Для корректной работы конфигурации Butane должны соответствовать формату спецификации конфигурации Butane.

  2. Запустите butane и создайте файл конфигурации Ignition в формате JSON (например, под именем example.ign), преобразовав ранее созданный example.bu:

    butane --pretty --strict example.bu > example.ign
    

    В приведенной команде опция --pretty выводит результат в более удобочитаемом для человека виде; --strict - включает строгий режим проверки синтаксиса входного файла.

    Примечание

    Для Windows использование > example.ign в команде выше приведет к созданию файла Ignition в кодировке UTF-16, что может помешать правильной загрузке SberLinux OS Core. Вместо > example.ign используйте --output example.ign .

Полученный example.ign готов для применения при загрузке SberLinux OS Core.

Использование удаленной конфигурации Ignition#

Кроме локальных конфигураций Ignition, при необходимости, можно использовать другие конфигурации, извлекаемые из удаленных источников. Данные конфигурации будут заменять или объединяться с существующей.

В примерах ниже показано, как получить файл конфигурации Ignition из удаленного источника, с заменой текущей конфигурации:

  • Получение удаленного файла конфигурации Ignition по протоколу HTTPS:

    variant: sbcos
    version: 3.2.0
    ignition:
      config:
        replace:
          source: <ignition_config_URL>
    

    Где:

    • ignition: - метаданные о конфигурации;

    • config: - параметры, связанные с конфигурацией;

    • replace: - блок для задания конфигурации, которая заменит текущую;

    • source: - URL-адрес необходимой конфигурации.

  • Получение удаленного файла конфигурации Ignition по протоколу HTTPS с помощью пользовательского центра сертификации:

    variant: sbcos
    version: 3.2.0
    ignition:
      config:
        replace:
          source: <ignition_config_URL>
      security:
        tls:
          certificate_authorities:
            - source: <certificate_authority_URL>
    

    Где:

    • security: - параметры сетевой безопасности;

    • tls: - параметры, относящиеся к TLS при получении ресурсов через HTTPS;

    • certificate_authorities: - блок задания списка центров сертификации (дополнительных к системным), которые будут использоваться для проверки TLS при получении данных по HTTPS;

    • source: <certificate_authority_URL> - URL пакета сертификатов (в формате PEM).

    Примечание

    Приведенные в примере дополнительные пользовательские центры сертификации не добавляются автоматически в файловую систему хоста. Они используются ignition при загрузке по протоколу HTTPS. Чтобы установить их в файловую систему хоста, включите их в массив storage.files.

При необходимости объединения (а не замены) конфигураций используйте параметр merge (слияние) вместо replace (замена) в файле конфигурации Butane. Пример получения удаленного файла конфигурации Ignition по протоколу HTTPS и объединения его с текущей конфигурацией:

variant: sbcos
version: 3.2.0
ignition:
   config:
      merge:
      - source: <ignition_config_URL>
passwd:
   users:
      - name: core
      ssh_authorized_keys:
         - ssh-rsa <key>

Также возможно получение удаленных файлов конфигурации Ignition по обычному протоколу HTTP:

Внимание

При получении удаленной конфигурации Ignition через HTTP ее содержимое становится доступным любому, кто следит за сетевым трафиком. При использовании протокола HTTP используйте параметр verification, чтобы убедиться, что содержимое не было изменено.

variant: sbcos
version: 3.2.0
ignition:
   config:
      replace:
      source: <ignition_config_URL>
      verification:
         hash: <hash>

Где:

  • verification: - блок для указания параметров, связанных с проверкой пакета сертификатов;

  • hash: - хеш пакета сертификатов.

Если необходимо получить удаленный файл конфигурации Ignition при отсутствии прямого доступа к удаленному хосту, можно указать прокси-сервер для обычного HTTP и/или HTTPS. Также можно указать хосты, которые должны быть исключены из проксирования.

Пример получения удаленного файла конфигурации Ignition через прокси-сервер:

variant: sbcos
version: 3.2.0
ignition:
   config:
      merge:
      - source: <ignition_config_URL_1>
      - source: <ignition_config_URL_2>
   proxy:
      https_proxy: <https_proxy_URL>
      no_proxy:
      - example.org

Где:

  • proxy: - блок задания параметров, относящихся к настройке прокси-сервера HTTP/HTTPS при извлечении ресурсов;

  • https_proxy: - URL-адрес прокси-сервера для HTTPS-запросов, если это не переопределено с помощью параметра no_proxy;

  • no_proxy: - список хостов, которые должны быть исключены из проксирования.