Скриптът snapshot_prep — подготвяне на сървъра за създаване на образ (image)
Какво представлява?
Скриптът snapshot_prep, който се намира на адрес /usr/local/cpanel/scripts/snapshot_prep, се използва, за да подготви сървъра за създаване на “deployment image” — тоест образ, който можеш да използваш за клониране или инсталиране на други сървъри със същата конфигурация.
Важно: Този скрипт не е съвместим с всички конфигурации на сървъра. Той проверява част от тях и ако открие някои несъвместимости — ще спре автоматично.
Конфигурации, които правят скрипта несъвместим:
Ако някое от следните неща е налице на сървъра ти, скриптът ще откаже да се изпълни:
- Използване на API tokens
- Наличен бекъп на сървъра или директория за бекъпи
- Активирана двуфакторна автентикация (2FA) за root потребителя
- Сървърът е свързан в кластър или линк с друг сървър
- Има настроени контакти в /etc/wwwacct.conf или /etc/wwwacct.conf.shadow
- Има активен отдалечен MySQL профил (през WHM » Database Services » Manage Database Profiles)
Това не е пълен списък. За пълна информация прегледай документацията Best Practices for cPanel Virtualization Templates.
Как се изпълнява?
Команда:
/usr/local/cpanel/scripts/snapshot_prep [опции]
Възможни опции:
| Опция | Какво прави | Пример |
| –no-post-service | Не инсталира услуга, която се стартира при първо пускане. Ще трябва ръчно да стартираш post_snapshot при първо пускане на инстанцията. | –no-post-service |
| –list-tasks | Показва списък с всички действия, които скриптът ще извърши. | –list-tasks |
| –skip | Изброява задачи, които да се пропуснат. Не се препоръчва! Може да доведе до непредвидено поведение. Не може да се комбинира с –only. | –skip=mysql,license |
| –only | Изпълнява само конкретни задачи, останалите се пропускат. Не се препоръчва! Не може да се комбинира с –skip. | –only=license |
| –instance-packages | Списък с пакети, които ще се инсталират при първо пускане на създадената инстанция. Това е полезно, ако пакетите генерират уникални данни и не искаш да ги включваш в самия образ. | –instance-packages=package1,package2 |
| –delete-saved-copies | Изтрива запазените копия на конфигурационни файлове, които скриптът е направил. Ако не ги изтриеш, те ще се включат в образа. | –delete-saved-copies |
| –help | Показва помощна информация за скрипта. | –help |
Създаване на приставка (plugin) за скрипта
Ако разработваш допълнителен (third-party) софтуер за сървъри с cPanel & WHM, можеш да направиш приставка, която да се изпълнява заедно със snapshot_prep. Така можеш да добавиш специални задачи към процеса по създаване на образ.
Пример:
Ако твоят софтуер използва уникален достъп токен, можеш да направиш приставка, която:
- Изчиства токена по време на snapshot_prep, за да не се включи в образа.
- Генерира нов токен при първото стартиране на инстанцията.
Важно: cPanel & WHM не създава приставки за теб — ти сам трябва да ги направиш.
Как работят приставките:
Скриптът използва .json файлове, за да разбере какво да изпълнява. Те трябва да се поставят в директорията:
/var/cpanel/snapshot_prep.d
Примерно съдържание на .json файл:
{
“name”: “exampleplugin”,
“type”: “non-repair only”,
“pre”: [“/var/cpanel/exampleplugin.py”, “–before”],
“post”: [“/var/cpanel/exampleplugin.py”, “–after”],
“description”: “Perform a task.\n”
}
Обяснение:
| Поле | Какво означава |
| name | Името на приставката (без .json в края). Може да съдържа само букви, цифри и долна черта. |
| type | Задължително трябва да е non-repair only. |
| pre | Скрипт, който се изпълнява преди основната операция. |
| post | Скрипт, който се изпълнява след операцията. |
| description | Кратко описание на това, което приставката прави. |