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

Обзор Ignition

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

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

Процесс настройки

Конфигурации Ignition имеют формат JSON, который быстро и легко читается машиной. Однако эти файлы неудобны для чтения или записи человеком. Решение — двухэтапный процесс настройки, удобный как для людей, так и для машин:

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

  2. Запустите Butane, чтобы преобразовать файл YAML в конфигурацию Ignition в формате JSON.

Во время процесса транспиляции Butane проверяет синтаксис файла YAML, что позволяет выявить ошибки до того, как вы используете его для запуска системы FCOS.

Как только у вас есть файл Ignition (.ign), вы можете использовать его для загрузки системы FCOS в виртуальной машине или её установки на «голое железо».

Постарайтесь спланировать конфигурацию с полным набором деталей настройки до провизионирования экземпляра Fedora CoreOS. Но не волнуйтесь, если вы что-то забыли, так как вы можете исправить конфигурацию и повторно развернуть экземпляр из свежего образа.

Получение Butane

Вы можете запускать Butane как контейнер с помощью docker или podman или загрузить его как отдельный бинарный файл.

Если не указано иное, новые выпуски Butane обратно совместимы со старыми выпусками.

Через контейнер с podman или docker

Вы можете получить Butane из контейнера, размещённого на quay.io:

podman pull quay.io/coreos/butane:release
Тег release отслеживает самый последний выпуск, а тег latest отслеживает ветку разработки Git.

Запускайте Butane либо используя стандартный ввод и стандартный вывод, либо используя файлы:

Пример запуска Butane с использованием стандартного ввода и стандартного вывода
podman run --interactive --rm quay.io/coreos/butane:release \
       --pretty --strict < your_config.bu > transpiled_config.ign
Пример запуска Butane с использованием файла в качестве ввода и стандартного вывода
podman run --interactive --rm --security-opt label=disable \
       --volume "${PWD}:/pwd" --workdir /pwd quay.io/coreos/butane:release \
       --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'
В этих примерах используется podman, но вы можете аналогичным образом использовать docker.

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

Установка в Fedora

Butane доступен как пакет Fedora:

sudo dnf install -y butane

Установка через Homebrew

Butane доступен как пакет Homebrew:

brew install butane

Установка через MacPorts

Butane доступен как пакет MacPorts:

sudo port install butane

Установка через Scoop

Butane доступен как пакет Scoop через extras:

scoop bucket add extras
scoop install butane

Установка через клиент Windows Package Manager (winget)

Butane доступен как пакет winget:

winget install --id Fedora.CoreOS.butane

Отдельный бинарный файл

Linux

Чтобы использовать бинарный файл Butane в Linux, выполните следующие шаги:

  1. Если вы ещё этого не сделали, загрузите ключи подписи Fedora и импортируйте их:

    curl https://fedoraproject.org/fedora.gpg | gpg --import
  2. Загрузите последнюю версию Butane и отсоединённую подпись со страницы выпусков.

  3. Проверьте её с помощью gpg:

    gpg --verify butane-x86_64-unknown-linux-gnu.asc

macOS

Чтобы использовать бинарный файл Butane в macOS, выполните следующие шаги:

  1. Если вы ещё этого не сделали, загрузите ключи подписи Fedora и импортируйте их:

    curl https://fedoraproject.org/fedora.gpg | gpg --import
  2. Загрузите последнюю версию Butane и отсоединённую подпись со страницы выпусков.

  3. Проверьте её с помощью gpg:

    gpg --verify butane-x86_64-apple-darwin.asc

Windows

Чтобы использовать бинарный файл Butane в Windows, выполните следующие шаги:

  1. Если вы ещё этого не сделали, загрузите ключи подписи Fedora и импортируйте их:

    Invoke-RestMethod -Uri https://fedoraproject.org/fedora.gpg | gpg --import
  2. Загрузите последнюю версию Butane и отсоединённую подпись со страницы выпусков.

  3. Проверьте её с помощью gpg:

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

Пример

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

Общие шаги следующие:

  1. Напишите конфигурацию Butane в формате YAML.

  2. Используйте Butane, чтобы преобразовать конфигурацию Butane в конфигурацию Ignition (JSON).

  3. Загрузите свежий образ Fedora CoreOS с полученной конфигурацией Ignition.

Предварительное требование

В этом примере используется пара открытого и закрытого SSH-ключей. Если у вас её ещё нет, вы можете сгенерировать пару SSH-ключей.

Открытый SSH-ключ будет провизионирован на машину Fedora CoreOS (через Ignition). Закрытый SSH-ключ должен быть доступен вашему пользователю на локальной рабочей станции, чтобы вы могли удалённо аутентифицироваться по SSH.

Написание конфигурации Butane

  1. Скопируйте следующий пример в текстовый редактор:

    variant: fcos
    version: 1.7.0
    passwd:
      users:
        - name: core
          ssh_authorized_keys:
            - ssh-rsa AAAA...
  2. Замените приведённую выше строку, начинающуюся с ssh-rsa, содержимым вашего файла открытого SSH-ключа.

  3. Сохраните файл под именем example.bu.

Файлы YAML должны иметь согласованные отступы. Хотя Butane проверяет синтаксические ошибки, убедитесь, что отступы соответствуют приведённому выше примеру. В целом конфигурации Butane должны соответствовать формату спецификации конфигурации Butane.
Если вы используете VS Code с расширением Red Hat Yaml, вы можете связать файлы *.bu с yaml в настройке files.associations и получить справку/автодополнение.
Вы также можете установить пароль для входа в консоль (аутентификация по паролю через SSH отключена). См. Использование аутентификации по паролю.

Использование Butane

  1. Запустите Butane для конфигурации Butane:

    butane --pretty --strict example.bu > example.ign
  2. Используйте файл example.ign для загрузки Fedora CoreOS.

При использовании Butane в Windows > example.ign создаст файл Ignition в кодировке UTF-16. Это может помешать правильной загрузке Fedora CoreOS. Используйте вместо этого --output example.ign.