یک کار زمانبندیشده که بدون VPN اجرا شد، سالم به نظر میرسد
وضعیت موفقیت میگوید و دادهها غایباند. هر اجرا را به اتصال دقیق مشروط کنید و ردشدنها را جداگانه ثبت کنید، نه اینکه به زمانبندی اعتماد کنید.
وضعیت کار موفقیت میگوید، گزارش یک اجرای کامل را نشان میدهد، و دادهها کهنه یا غایباند. این ترکیب معمولاً یعنی کار زمانبندیشده بدون مسیری که لازم داشت شروع شده است، و چیزی در پایین دست شکست را بلعیده است. زمانبندیای که سر وقت فعال میشود چیزی درباره آماده بودن شبکه نمیگوید. شکاف میان این دو واقعیت همان جایی است که این شکست در آن زندگی میکند.
پذیرش به اجرا تعلق دارد، نه به وجود یک فایل cron.
اجرای سبز یک کار کاملشده نیست
زمانبند متوجه میشود که فرایندی شروع و بعداً خارج شده است؛ او هیچ ایدهای ندارد که آن فرایند به منبعی که برایش وجود دارد رسیده است یا نه. اسکریپتی که اتصال ناموفق را نتیجه خالی میگیرد، یا خطایی را میگیرد و با صفر خارج میشود، همیشه سالم به نظر میرسد. نشانه یک وضعیت قرمز نیست؛ یک وضعیت باورپذیر است که به کار غایب چسبیده است.
پیش از تصمیم درباره چگونگی بررسی، نام ببرید که اجرا واقعاً به چه چیزی نیاز دارد. یک نسخه پشتیبان ممکن است به DNS خصوصی و یک نقطه پایانی احرازشده نیاز داشته باشد، نه صرفاً یک فرایند تونل.
اتصال را بررسی کنید، نه نام رابط را
رابطی به نام tun0 میتواند بدون نشست مهم وجود داشته باشد، و اتصال دیگری میتواند مالک آن نام باشد. شیء مشخصی را که کار به آن وابسته است بررسی کنید: یک هویت پروفایل، یک نمونه سرویس، یا یک عملیات کوچک تأییدشده علیه منبع. بررسی را از نظر زمانی محدود نگه دارید، و اعتبارنامهها را بیرون از آرگومانهای فرایند و گزارشهای تشخیصی نگه دارید.
نتیجه قطع اتصال را هم تعریف کنید. یک ردشدن عادی، یک تلاش مجدد در پنجرهای کوتاه و یک مهلت ازدسترفته قابل مشاهده برای اپراتور سه پاسخ متفاوتاند، و یک زمانبندی تکرارشونده میان آنها انتخاب نمیکند.
ردشدنها و شکستها نتایج متفاوتی هستند
[Service] Type=oneshot User=worker ExecCondition=/usr/local/libexec/check-office-path ExecStart=/usr/local/bin/private-task
در یک استقرار systemd، ExecCondition= آن بررسیکننده را پیش از بار کاری اجرا میکند. رفتار خروج آن مشخص است: صفر ادامه میدهد، کدهای یک تا 254 دستورهای شروع باقیمانده را بدون علامتگذاری واحد بهعنوان شکستخورده رد میکنند، و 255 یا خاتمه غیرعادی آن را شکست میدهد. این سه سیگنال متمایز میدهد، که تنها اگر قرارداد بررسیکننده آگاهانه به آنها نگاشت شود مفید است. تنظیماتی که موفقیت را بازتعریف میکنند میتوانند تصویر را تغییر دهند، پس نگاشت را مستند کنید.
ثبت ردشدنها همان چیزی است که طراحی را صادق میکند. اجرای ردشدهای که هیچجا ظاهر نمیشود از اجرایی که موفق شده قابل تشخیص نیست، و برخورد با هر خطای بررسیکننده بهعنوان یک ردشدن آرام، یک استقرار خراب را بهطور نامحدود پنهان میکند.
کل اجرا را محافظت کنید، نه فقط شروع را
یک بررسی آمادگی جهان را پیش از راهاندازی مشاهده میکند؛ بعد از آن هر سوکتی را پلیس نمیکند. وقتی مسیر مستقیم هرگز برای این کار قابل قبول نیست، یک سیاست خروج تأییدشده پیوست کنید که بهطور پیوسته اعمال شود و DNS، IPv6 و انتقال خود تونل را پوشش دهد. تغییر وضعیت سراسری IPv6 میزبان جایگزین یک سیاست محدود به کار نیست.
تصمیم بگیرید که آیا یک رویداد جدید میتواند با کار در حال اجرا همپوشانی داشته باشد، آن قاعده را نزد مالک بار کاری نگه دارید، و تلاش مجدد را برای عملیات داده ایمن کنید. توقف یک کار هنگام قطع اتصال کار را محدود میکند بدون اینکه چیزی درباره ترافیک جایگزین تضمین کند.
گردش کار را در سه حالت بپذیرید: مسیر آماده، مسیر ناموجود، و از دست رفتن در میانه اجرا. هر چیزی کمتر از این، زمانبندی را میآزماید نه کار را.