Как устроено меню¶
Проект разделяет исходный код репозитория и установленное на сервер меню.
Ключевые пути на сервере¶
| Что | Путь |
|---|---|
| Каталог меню | /root/vm_menu |
| Точка входа | /root/vm_menu/menu.sh |
| Удобная ссылка | /root/menu.sh |
| Пользовательские переменные | /root/.env.menu |
| Бэкапы меню | /root/backup_vm_menu |
Как формируется конфигурация¶
Runtime-конфигурация складывается из двух уровней:
- дефолты из
vm_menu/bash_scripts/config.sh; - переопределения из
/root/.env.menu, если файл существует.
Именно поэтому значения в установленном окружении могут отличаться от дефолтов репозитория. Например:
- в
config.shв репозитории могут быть одни значения; - в
.env.menu.exampleи на вашем сервере другие.
Из каких частей состоит проект¶
Основные каталоги и файлы:
vm_menu/bash_scripts/config.sh- дефолтные переменные;vm_menu/bash_scripts/functions.sh- диалоги меню и сбор ввода;vm_menu/bash_scripts/actions.sh- вызовыansible-playbookи системных команд;vm_menu/helpers- вспомогательные shell/perl/php-скрипты;vm_menu/ansible/playbooks- реальное применение изменений на сервере.
Как мыслить о потоке выполнения¶
Почти каждый пункт меню проходит одинаковую цепочку:
functions.shпоказывает вопросы пользователю;- значения кладутся в shell-переменные;
actions.shзапускает соответствующий playbook;- playbook меняет конфиги и службы на сервере.
Это полезно помнить, если вы хотите:
- понять, откуда берется конкретный prompt;
- найти playbook, который отвечает за действие;
- доработать пункт меню под свои нужды.
Что видно в главном меню¶
На верхнем уровне есть:
- операции с сайтами и сертификатами;
- PHP, SMTP, FTP;
- подменю расширений и security;
- системные действия вроде update и reboot.
Кроме видимых пунктов есть и сервисные команды:
update_menu- обновление меню;