2018-09-24 Подстели Подушку Заранее При Опасных Операциях

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

правила_разработки:как_не_надо_делать:2018-09-24_подстели_подушку_заранее_при_опасных_операциях [24.09.2018 10:14]
nikolay_carbonsoft1 Approved(nikolay_carbonsoft1 2018/09/24 10:14)
правила_разработки:как_не_надо_делать:2018-09-24_подстели_подушку_заранее_при_опасных_операциях [20.05.2019 15:18]
Строка 1: Строка 1:
-**Нарушено правило:​** Выработать привычки при работе на продакшен-сервере (или на тестовом сервере,​ если восстанавливать его, в случае ошибки,​ долго). 
- 
-**Привычки:​** ​ 
-  * Перед изменениями сделай резервную копию. ​ 
-  * Не удаляй сразу временные данные,​ сделай move в каталог .delme. ​ 
-  * Предусматривай худшие случаи:​ отпадет консоль,​ пропадет сеть, зависнет сервер. 
-  * Проверь сначала на тестовом сервере. 
- 
-(TODO правило не сформулировано в opencarbon) 
- 
-//​**Ценой небольших трудозатрат мы минимизируем цену человеческой ошибки.**//​ 
- 
-**Ошибка:​** Изменение правил iptables на удаленном сервере без плана на случай ошибок. 
- 
-**Как надо делать:​** Если нужно добавить правило на удаленный сервер,​ нужно добавить отложенный вызов команды,​ удаляющей правило,​ например:​ 
-<code bash> 
-setsid bash -c "​iptables -I FORWARD -j DROP; echo '​Started';​ sleep 10; iptables -D FORWARD 1; echo '​Done'"​ &>/​tmp/​test_iptables & disown -a 
-tail -f /​tmp/​test_iptables 
-</​code>​ 
-Здесь через 10 секунд новое правило удалится из iptables даже если консоль отпадет. 
- 
-Другой способ:​ 
-<code bash> 
-setsid bash -c "sleep 120; reboot -f" &>/​dev/​null & disown -a 
-</​code>​ 
-Здесь Вам нужно успеть за 2 минуты провести изменения и убить процесс bash. В противном случае (если сеть стала недоступна,​ например) сервер перезагрузится. 
- 
-~~OWNERAPPROVE~~ 
-/*Не удаляйте эту строку и ниже!*/ 
-{(rater>​id=1|name=Прочитал_правила_разработки:​как_не_надо_делать:​2018-09-24_подстели_подушку_заранее_при_опасных_операциях|type=vote|trace=user|tracedetails=1)}