Butane#

Butane - это инструмент, который помогает генерировать из человекочитаемого файла Butane в формате YAML конфигурационный файл Ignition в формате JSON для развертывания ОС.

Функциональность#

Файлы Butane позволяют задать сценарии:

  • создания пользователей;

  • создания файлов систем;

  • настройки сетей;

  • установки системных устройств;

  • и др.

Butane может быть запущен из образа контейнера при помощи podman или docker, из репозитория пакетов или загружен как независимый двоичный файл, подробнее в подразделе «Конфигурация Ignition» раздела «Установка» Документа «Руководство по установке» продукта Platform V SberLinux OS Core (SLC).

Развертывание Butane#

Запустите Butane с помощью Docker:

docker run --rm -it <image_path>

Где:

  • --rm - автоматически удаляет контейнер после завершения работы;

  • -it - запускает контейнер в интерактивном режиме с доступом к командной строке внутри него.

Или запустите 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

Где опции:

  • --interactive - позволяет взаимодействовать c контейнером через стандартный ввод;

  • --security-opt label=disable - применяет к контейнеру настройки безопасности, отключающие разделение меток;

  • --volume - управляет объемами данных;

  • --workdir - позволяет установить другое значение по умолчанию для рабочего каталога.

  • --pretty - форматирует файл в формат JSON;

  • --strict - выдает ошибку и прерывает выполнение команды при любом предупреждении;

  • <your_config.bu> - файл Butane в формате YAML.

Сценарии использования#

Добавление псевдонима#

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

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

Добавление скрипта оболочки#

Для добавления скрипта оболочки по адресу ~/.local/bin/butane используйте команду:

#!/bin/sh
exec podman run --rm --interactive         \
     --security-opt label=disable          \
     --volume "${PWD}":/pwd --workdir /pwd \
     quay.io/coreos/butane:release         \
     "${@}"

Написание и использование конфигураций Butane#

Для того чтобы задать ssh-ключ у основного пользователя машины, используйте следующую настройку файла:

variant: <OS>
version: <version>
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc...

Где:

  • <OS> - наименование операционной системы;

  • <version> - версия операционной системы.

Полученный файл передайте на машину с помощью команды:

$ ./bin/amd64/butane example.bu

{"ignition":{"config":{"replace":{"source":null,"verification":{}}},"security":{"tls":{}},"timeouts":{},"version":"3.0.0"},"passwd":{"users":[{"name":"core","sshAuthorizedKeys":["ssh-rsa ssh-rsa AAAAB3NzaC1yc..."]}]},"storage":{},"systemd":{}}

В результате выполнения команды сконфигурированный файл пересоздается в формате JSON. Утилита Ignition совершит обработку файла с последующей настройкой машины.

Пользователи и группы#

Создание пользователей#

Следующая конфигурация файла предоставляет пользователю core возможность встроить ключ key1:

variant: <OS>
version: <version>
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - key1

Добавление пользователей в группы#

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

variant: <OS>
version: <version>
passwd:
  users:
    - name: <user>
      ssh_authorized_keys:
        - key1
      home_dir: /home/<user>
      no_create_home: true
      groups:
        - <group1>
        - <group2>
      shell: /bin/bash

Где:

  • <user> - имя пользователя;

  • <group1>, <group2> - наименования групп.

Использование аутентификации по паролю#

Следующая конфигурация позволяет установить хеш-пароль для одного или нескольких локальных пользователей, для генерации хеш-пароля используйте менеджер паролей:

variant: <OS>
version: <version>
passwd:
  users:
    - name: <user>
      ssh_authorized_keys:
        - key1
      password_hash: $y$j9T$aUmgEDoFIDPhGxEe2FUjc/$C5A...
      home_dir: /home/<user>
      no_create_home: true
      groups:
        - <group1>
        - <group2>
      shell: /bin/bash