Перед запуском скрипта сообщества на узле Proxmox: пять вещей, которые стоит прочитать
Скрипты сообщества несут настоящий опыт и экономят настоящие часы. Их также обычно запускают от root на единственной машине, которую нельзя потерять, из одной вставленной строки, которую никто не читал. Решение не в том, чтобы их избегать, а в том, чтобы их читать.
AtlasPVE ·
Эта статья отвечает на
- безопасны ли скрипты сообщества proxmox
- proxmox community scripts
- установить helper script proxmox
- риск curl bash скрипта
- установка скрипта на узел proxmox
Скрипты сообщества действительно хороши. Они несут знание, за которое кто-то заплатил потерянными вечерами, обрабатывают неприятные случаи, на которые вы наткнулись бы в полночь, и для многих задач скрипт лучше того, что написали бы вы сами. Эта статья не выступает против них.
Речь об одном конкретном разрыве. Установка пакетом и вставленный однострочный скрипт выглядят на экране одинаково буднично, и это совсем не одно и то же.
Что даёт пакет и не даёт вставленная строка
Подпись. Пакеты подписаны, и подпись проверяется. Адрес проверяется только против вашего предположения, что адрес верный.
Версия. Вы можете сказать, какая у вас версия, и помогающий вам тоже. «Скрипт из README, пару недель назад» это не версия.
Путь удаления. Пакеты записывают, что положили, и умеют это убрать. Скрипт часто кладёт файлы в шесть мест и не помнит об этом.
Отношения с сопровождающим. Когда пакет меняет поведение, есть журнал изменений. Скрипт может измениться по тому же адресу, не оставив ничего для чтения.
Ничто из этого не делает скрипты плохими. Это делает их другим видом вещи, заслуживающим другой привычки.
Пять вещей для прочтения
Не весь скрипт и не построчно. Эти пять ответов обычно видны за один проход.
① Что он трогает за пределами своего каталога? Скрипт, пишущий только в свою папку, легко охватить. Тот, что правит файлы в системных каталогах настроек, вносит изменения, которые его переживут.
② Добавляет ли он репозиторий или ключ? В большинстве скриптов это строка с самыми тяжёлыми последствиями, и она пролетает за секунду. Добавить источник пакетов значит, что каждое будущее обновление на этой машине доверится новой стороне. Это может быть совершенно разумно и должно быть решением, а не побочным эффектом.
③ Трогает ли он загрузку, ядро или сеть? Это три вещи, способные оставить узел недоступным или незагружающимся, а на гипервизоре это значит, что уйдёт всё, что на нём. Скрипту, который ставит веб-приложение, нечего делать в конфигурации загрузчика, и если он туда лезет, это стоит понять до запуска.
④ Есть ли путь назад? Ищите процедуру удаления или хотя бы список того, что он создал. Если нет ни того, ни другого, ваш путь назад это снимок, сделанный заранее, а значит его надо сделать.
⑤ Что будет, если запустить дважды? Многие скрипты написаны под чистую машину, и второй проход дублирует записи, сбрасывает настройки, которые вы правили, или падает на середине, оставляя половинчатое состояние. Вы когда-нибудь запустите его дважды, обычно потому что первый раз показался неудачным.
Отдельно о вставленной строке
У приёма «скачать скрипт и сразу направить в оболочку» есть свойство, которое стоит назвать: вы не можете прочитать то, что выполнили. Не «не прочитали», а не можете, потому что это никогда не было файлом.
Есть и более тонкий вариант. Прочитать скрипт в браузере и выполнить команду «скачать и направить» это два разных запроса. Ничто не гарантирует, что они вернули одни и те же байты.
Исправление стоит одного лишнего шага. Скачайте файл, посмотрите на него, затем запустите локальную копию. Теперь вы знаете, что выполнялось, можете позже запустить идентичное, и если что-то сломается, у вас есть настоящий текст, а не воспоминание о веб-странице.
Гипервизор не место для проб
Именно это отделяет узел Proxmox от ноутбука. Всё остальное на машине лежит ниже него. Скрипт, оставивший ноутбук в странном состоянии, стоит вам вечера; тот же скрипт на узле уносит с собой каждую виртуальную машину.
Две привычки делают почти всё это безопасным:
Сначала запустите в виртуальной машине, если это правдоподобно возможно. Большинству скриптов, устанавливающих службу, вообще не нужно быть на узле. Это не обходной путь, обычно это правильное место.
Если он действительно должен работать на узле, сначала снимок. Не потому что скрипт подозрителен, а потому что «просто попробую» это ровно та фраза, что предшествует нужде в пути назад.
Чем эта статья не является
Это не повод не доверять сообществу. Скрипты, которыми делятся люди, одно из лучшего в этой экосистеме, и авторы обычно аккуратнее тех, кто их запускает.
Это не повод читать каждую строку. Пяти вопросов за один проход достаточно, чтобы поймать тот класс сюрпризов, который действительно бьёт больно.
Что делает Atlas
Atlas делает снимок перед операциями, меняющими состояние узла, так что путь назад существует без того, чтобы вы помнили о его создании. Это закрывает четвёртый пункт списка выше, тот самый, который пропускают.
Журнал аудита записывает, кто что запустил, когда, над чем и с каким результатом, превращая «во вторник что-то изменилось» в читаемый ответ вместо расследования.
Цепочка ресурсов помогает скорее после, чем в момент решения: если после установки что-то ведёт себя иначе, карта показывает, как машина выглядит на самом деле сейчас, от гостей до физических дисков.
А там, где Atlas ставит программы сам, через каталог приложений, версия зафиксирована, источник фиксирован, и точка восстановления делается до начала установки. Это намеренно узкий и отобранный путь, и он не заменяет скрипты сообщества. Это просто те же пять вопросов, отвеченные заранее для приложений, которые он несёт.
Источники
Собственная документация Proxmox. На английском, и последнее слово в этом вопросе за ней.