Перейти к содержимому

Справочник конфига

Ключ Тип По умолчанию Значение
version целое Версия формата конфига. Сейчас 1. Конфиг с большей версией отвергается, а не читается наугад.
settings словарь см. ниже Куда писать, куда бэкапить, что сбрасывать.
include список строк ["zones/*.yaml", "zones/*.hosts"] Шаблоны файлов-зон относительно каталога конфига. Без ключа берутся значения по умолчанию; пустой список не подключает ничего.
groups список групп [] Группы, лежащие в основном конфиге. Группы из зон сюда не пишутся.
Ключ Тип По умолчанию Значение
target путь /etc/hosts, либо $HOSTSCTL_TARGET, если ключа нет Файл, в который рендерится управляемый блок. --target перебивает его на один запуск. $HOSTSCTL_TARGET только подставляет значение по умолчанию, поэтому на выписанный ключ он уже не влияет — а hostsctl init его выписывает.
backup_dir путь /var/db/hostsctl/backups (macOS), /var/lib/hostsctl/backups (Linux) Куда пишутся снимки.
keep_backups целое 20 Сколько снимков хранить. 0 отключает чистку.
flush_dns булево true Сбрасывать DNS-кеш после успешной записи. Попытка делается только если цель — настоящий /etc/hosts.
Ключ Тип По умолчанию Значение
name строка Уникально по всем файлам, сравнение без учёта регистра.
enabled булево true Выключенная группа сохраняет записи и не рендерится.
description строка Рендерится шапкой группы внутри блока.
entries список записей [] Локальные записи. На практике взаимоисключающи с source.
source словарь Удалённый блоклист, см. ниже. Записи такой группы берутся из кеша, а не из entries.
Ключ Тип По умолчанию Значение
ip строка или список строк Один или несколько адресов. Единственный адрес пишется обратно скаляром.
hostnames список строк Одно или несколько имён. Каждый адрес получает строку со всем набором.
enabled булево true Выключенная запись остаётся в конфиге и не рендерится.
comment строка Дописывается к строке после #.
- ip: 10.0.0.7
hostnames: [api.local, web.local]
enabled: true
comment: staging box
Ключ Тип По умолчанию Значение
url строка http:// или https://. Обычный HTTP принимается, но с предупреждением: список можно подменить по дороге.
rewrite_ip строка Заменяет адрес у всех записей списка. Обычно 0.0.0.0.
allow список строк [] Имена, выбрасываемые из скачанного списка.
last_fetch строка Пишется hostsctl после успешного обновления. Информационное поле.

.yaml-зона принимается в трёх формах:

# 1. обёрнутая
groups:
- name: work
entries: []
# 2. голый список
- name: work
entries: []
# 3. одна группа, имя из имени файла
description: Work stands
entries:
- ip: 10.0.0.7
hostnames: [stand.local]

Неизвестный ключ в третьей форме — ошибка, а не молча пустой файл: group: вместо groups: стоит ловить.

.hosts-зона — обычный hosts-синтаксис ровно с одной группой. Имя берётся из имени файла без ведущих цифр, дефисов и подчёркиваний (10-local.hostslocal). Строка # hostsctl: disabled в шапке помечает группу выключенной — единственное, что этот формат иначе выразить не может.

Переменная Что делает
HOSTSCTL_CONFIG Путь к конфигу; сильнее $XDG_CONFIG_HOME и ~/.config.
HOSTSCTL_CACHE Каталог кеша блоклистов.
HOSTSCTL_TARGET Целевой файл для конфига, в котором он не указан. Конфиг от hostsctl init его указывает, так что переменная полезна в основном для урезанного вручную конфига.
XDG_CONFIG_HOME, XDG_CACHE_HOME Учитываются, кроме запуска под sudo, где указывают на окружение root.
VISUAL, EDITOR Используются hostsctl edit в этом порядке, иначе vi.
NO_COLOR, TERM=dumb Отключают цвет. Цвета нет и когда stdout не tty.