Что делает этот модуль #
Каждый раз при запуске сервера нужно привести базу в порядок: установить ожидающие обновления, выбрать язык, на котором говорят программы, задать правильный часовой пояс, дать имя машине и убедиться, что часы идут верно. Это мелкие, но повторяющиеся задачи, и у каждой свой собственный Linux-команда со своим синтаксисом.
Модуль os собирает их все за единым согласованным интерфейсом. Обновляет систему (или только часть, связанную с безопасностью) и сообщает, нужна ли перезагрузка; включает автоматические установки, чтобы обновления безопасности применялись сами; идемпотентно задаёт локаль, часовой пояс и hostname; и управляет синхронизацией NTP, чтобы время никогда не сбивалось. Каждое действие безопасно повторять: если нужное состояние уже достигнуто, модуль ничего не трогает.
Подкоманды, которые меняют что-либо (обновить, задать локаль, часовой пояс, hostname или NTP), пишут в систему и требуют привилегий root: запускайте их с sudo. Те, что только читают (status, list, check), этого не требуют.
Типовые задачи #
Выберите, что хотите сделать. В каждом рецепте команда уже готова — просто замените примерные значения на свои и нажмите Копировать.
1
Посмотреть и применить обновления
Проверьте, что ожидает установки, и обновитесь за мгновение.
Сначала посмотрите общее состояние и какие обновления ожидают:
$ imaxe os status
$ imaxe os checkПримените ожидающие. Если нужны только обновления безопасности и перезагрузка при необходимости, добавьте флаги:
$ sudo imaxe os update --security-only --reboot-if-neededimaxe os reboot-required (код 0 = да, нужна).2
Оставить обновления безопасности на автомате
Чтобы обновления безопасности применялись сами, без вашего участия.
Включите автоматические установки. Это сгенерирует конфигурацию unattended-upgrades за вас:
$ sudo imaxe os autoupdate enableУбедитесь, что они активны, и когда будет следующий запуск:
$ imaxe os autoupdate statussudo imaxe os autoupdate disable.3
Задать часовой пояс и время
Установите свою зону IANA и убедитесь, что часы синхронизируются по NTP.
Если не помните точное название своей зоны, сначала отфильтруйте её:
$ imaxe os timezone list EuropeЗадайте зону (это идемпотентно) и включите синхронизацию времени:
$ sudo imaxe os timezone set Europe/Madrid
$ sudo imaxe os timesync enableimaxe os timesync status.4
Установить язык системы
Определите LANG и сгенерируйте локаль, если её ещё нет.
Задайте язык системы. Команда генерирует локаль и устанавливает пакет locales, если его нет:
$ sudo imaxe os locale set es_ES.UTF-8Нужно больше доступных языков без смены LANG? Сгенерируйте их отдельно:
$ sudo imaxe os locale generate es_ES.UTF-8 en_US.UTF-8imaxe os locale status.5
Изменить имя машины
Задайте понятный hostname и держите /etc/hosts согласованным.
/etc/hosts согласованным.Назначьте hostname. Допускаются только буквы, цифры и дефисы, до 63 символов:
$ sudo imaxe os hostname set web-01/etc/hosts обновлён в соответствии с ним. Проверьте через imaxe os hostname status.Если экземпляром управляет cloud-init, он может переписывать hostname при каждой загрузке. Поэтому os.yml по умолчанию оставляет поле hostname пустым: задавайте его, только если уверены, что cloud-init его не перезапишет.
Синопсис #
imaxe os <subcomando> [<acción>] [<argumento>...] [flags]Подкоманды, которые меняют систему (обновить, автоматические установки, локаль, часовой пояс, hostname, NTP), требуют привилегий root (используйте sudo). Добавьте --json к любому status или check, чтобы получить машиночитаемый вывод, пригодный для скриптинга.
Подкоманды #
| Подкоманда | Что делает | Действия / флаги |
|---|---|---|
| status | Сводка состояния обновлений системы. | --json |
| update | Применяет сейчас ожидающие обновления. | --security-only, --reboot-if-needed |
| check | Выводит список ожидающих обновлений, не применяя их. | --json |
| reboot-required | Указывает, ожидает ли перезагрузка (exit 0 = да, 1 = нет). | --json |
| autoupdate | Управляет автоматическими необслуживаемыми обновлениями. | enable · disable · status |
| locale | Управляет локалью системы (генерирует и устанавливает необходимое). | status · list · set · generate |
| timezone | Показывает или меняет часовой пояс системы. | status · list · set |
| hostname | Показывает или меняет hostname (согласованно с /etc/hosts). | status · set |
| timesync | Управляет синхронизацией времени (NTP). | status · enable · disable |
Аргументы и флаги #
| Аргумент / флаг | Тип | Где применяется | Описание |
|---|---|---|---|
| --json | bool | status · check | Выдаёт результат в виде структурированного JSON в stdout, пригодного для скриптинга. |
| --security-only | bool | update | Применяет только обновления безопасности. |
| --reboot-if-needed | bool | update | Автоматически перезагружает, если система требует этого после обновления. |
| <locale> обяз. | string… | locale set · locale generate | Локаль в формате es_ES.UTF-8. В set — одна (LANG системы); в generate — одна или несколько для генерации. |
| <zona> обяз. | string | timezone set | Часовой пояс IANA, напр. Europe/Madrid. |
| <filtro> | string | timezone list | Необязательный фильтр для сужения списка зон (напр. Europe). |
| <nuevo> обяз. | string | hostname set | Новый hostname: строчные a-z, цифры 0-9 и дефисы, максимум 63 символа. |
Файлы и пути #
| Путь | Содержимое |
|---|---|
| /etc/imaxe/os.yml | Конфигурация модуля: автоматические установки, политика обновлений, локаль, часовой пояс, hostname и NTP. |
| /var/log/imaxe/os.log | Структурированный лог каждого обновления и изменения конфигурации системы. |
| /etc/apt/apt.conf.d/20auto-upgrades | Конфиг, сгенерированный autoupdate enable, который включает автоматические установки. |
| /etc/apt/apt.conf.d/50unattended-upgrades | Правила unattended-upgrades (что обновляется, окно перезагрузки, список исключений). |
Пример os.yml:
unattended:
enabled: true
security_only: true
automatic_reboot: false
automatic_reboot_time: "03:00"
blacklist: []
update:
default_security_only: false
locale:
lang: es_ES.UTF-8
generate: [es_ES.UTF-8, en_US.UTF-8]
timezone: Europe/Madrid
hostname: ""
ntp:
enabled: trueПустые поля ("") означают «не трогать»: модуль оставляет эту настройку такой, какая она есть. Поэтому hostname идёт пустым — экземпляром обычно управляет cloud-init.
Коды возврата и логи #
Каждый запуск возвращает код, который можно проверить через echo $? — удобно для цепочек в скриптах:
reboot-required использует код возврата в качестве ответа: 0 означает «да, нужна перезагрузка», а 1 означает «нет». Так вы можете напрямую встроить его в скрипт без разбора текста.
Следите за логом в реальном времени во время отладки:
$ sudo tail -f /var/log/imaxe/os.logУстранение неполадок #
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Выходит USAGE (код 2) | Отсутствует обязательный аргумент (локаль, зона или hostname) либо формат недопустим. | Проверьте таблицу аргументов: hostname допускает только a-z0-9 и дефисы (≤63). |
| Hostname снова меняется после перезагрузки | cloud-init переписывает hostname при каждой загрузке. | Отключите управление hostname в cloud-init или оставьте поле в os.yml пустым и не задавайте его вручную. |
locale set тормозит или падает | Пакета locales нет, его нужно установить/сгенерировать. | Повторите с системой в актуальном состоянии (imaxe os update); модуль устанавливает locales и сам генерирует локаль. |
| Время по-прежнему сбито | Синхронизация NTP отключена. | Включите её через sudo imaxe os timesync enable и проверьте через imaxe os timesync status. |
| Автоматические установки не применяются | Автоматические установки на этой машине никогда не включались. | Запустите sudo imaxe os autoupdate enable и подтвердите через imaxe os autoupdate status. |
Застряли с модулем Система?
Напишите нам, приложив вывод «imaxe <module> status --json», и мы быстро ответим.