SSD Nodes Learn Hosting plans →
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-07

Linux सर्वर मैनेज करने के लिए सबसे अच्छे टूल्स

SSH config, tmux, Ansible और Zabbix जैसे टूल्स का उपयोग करके अपने सर्वर मैनेज करें। सर्वर की संख्या के आधार पर सही टूल चुनें, सेटअप समय जानें और हर टूल की मुख्य तकनीकी समस्या समझें।

आप क्या बना रहे हैं

यह कोई एक टूल नहीं, बल्कि एक छोटा स्टैक है, जिसे आपके पास मौजूद सर्वर की संख्या के आधार पर चुना गया है। सर्वर की वह संख्या ही एकमात्र महत्वपूर्ण इनपुट है, और यही वह बात है जिसे "Linux server management tools" की हर सूची नजरअंदाज कर देती है। सबसे आम गलती चार VPS के लिए 200 सर्वर वाला समाधान अपनाना है, जिसमें आप सर्वर के बजाय टूल को मैनेज करने में ही पूरा महीना बिता देते हैं। दूसरी आम गलती यह है कि अठारह सर्वर वाला व्यक्ति अभी भी हर एक सर्वर पर मैन्युअल रूप से SSH कर रहा है और "एक ही" बदलाव को अठारह अलग-अलग तरीकों से लागू कर रहा है।

इसलिए, यह गाइड सर्वर की संख्या के आधार पर व्यवस्थित है: 2 से 5 सर्वर, 5 से 20 सर्वर, और 20 से अधिक सर्वर। इसके साथ ही इसमें वह महत्वपूर्ण परत भी शामिल है जो हर स्तर पर लागू होती है और जिसे कोई नहीं लिखता: एक इन्वेंट्री, कीज़ (keys) की स्वच्छता, प्रवेश का एक निश्चित तरीका, और ऐसे बैकअप जिन्हें आपने वास्तव में रिस्टोर करके देखा है। प्रत्येक टूल के लिए आपको तीन चीजें मिलेंगी: यह किसका स्थान लेता है, सेटअप में लगने वाला समय (मिनटों में), और वह एक तकनीकी समस्या जो वास्तव में परेशान करती है। मैंने पंद्रह वर्षों तक एक VPS होस्ट चलाया है; नीचे दी गई सूची वही है जो रात के 2 बजे आने वाली आउटेज (outage) के दौरान भी काम करती है, न कि वह जो केवल डेमो में अच्छी दिखती है।

पूर्व-आवश्यकताएँ और व्यावहारिक सावधानियाँ

आपको प्रत्येक सर्वर पर key-based SSH को पहले से ही कार्यशील रखना होगा (यदि आप अभी भी पासवर्ड टाइप कर रहे हैं, तो पहले उसे ठीक करें; इसमें दस मिनट लगते हैं और नीचे दी गई हर चीज़ keys पर आधारित है), एक sudo user जो root न हो, और ऐसे सर्वर जो वर्तमान OS वर्ज़न पर चल रहे हों। यहाँ दिए गए commands Ubuntu 24.04 के लिए हैं, लेकिन apt को छोड़कर कोई भी चीज़ विशेष रूप से Ubuntu तक सीमित नहीं है।

टूल्स के उपयोग से पहले दो ईमानदार चेतावनियाँ। पहली, टूल्स का अत्यधिक फैलाव (tool sprawl) स्वयं में एक प्रबंधन समस्या है: आपके द्वारा इंस्टॉल किया गया प्रत्येक agent हर सर्वर पर patch करने के लिए एक अतिरिक्त daemon बन जाता है, इसलिए किसी नए टूल को जोड़ने का आधार यह होना चाहिए कि "यह उस मैन्युअल काम को बदलता है जो मैंने इस सप्ताह किया है," न कि यह कि "यह उपयोगी लग रहा है।" दूसरी, यहाँ दी गई हर चीज़ free software है और वास्तविक लागत setup में लगने वाला समय है, इसीलिए प्रत्येक टूल के साथ मिनटों में एक अनुमान दिया गया है; जहाँ अनुमान में एक दोपहर (afternoon) लिखा हो, उस पर विश्वास करें।

2 से 5 सर्वर: ~/.ssh/config वह सबसे कम आंका गया टूल है जो आपके पास पहले से मौजूद है

यह किसका स्थान लेता है: IP addresses की टेक्स्ट फाइल, shell-history की छानबीन (ssh 203.0 फिर Ctrl-R और प्रार्थना), और हमेशा -p 2222 -i ~/.ssh/other_key टाइप करना। सेटअप लागत: 15 मिनट, केवल एक बार। समस्या: पुराने multiplexing sockets, जिसके बारे में नीचे बताया गया है।

इस स्तर पर आपको किसी अतिरिक्त सॉफ्टवेयर की आवश्यकता नहीं है; आपको बस उस क्लाइंट की आवश्यकता है जो आपके पास पहले से है, जिसे सही ढंग से कॉन्फ़िगर करने की जरूरत है। ~/.ssh/config हर सर्वर को एक शब्द के नाम में बदल देता है और राउटिंग को इस तरह एन्कोड करता है कि आपको इसके बारे में दोबारा सोचने की जरूरत नहीं पड़ेगी:

Host *
    ServerAliveInterval 30
    ControlMaster auto
    ControlPath ~/.ssh/cm-%r@%h-%p
    ControlPersist 10m

Host bastion
    HostName 10.0.0.10
    User matt

Host web1
    HostName 10.8.0.11
    User matt
    ProxyJump bastion

Host db1
    HostName 10.8.0.12
    User matt
    Port 2222
    ProxyJump bastion

तीन सेटिंग्स यह काम करती हैं। ProxyJump कनेक्शन को एक हॉप में बैशन (bastion) के माध्यम से रूट करता है, इसलिए कैफे से ssh db1 पारदर्शी रूप से bastion के माध्यम से टनल हो जाता है। इसमें agent forwarding की आवश्यकता नहीं है, न ही ProxyCommand जैसे जटिल कमांड्स की, और प्राइवेट सर्वर्स को कभी भी पब्लिक SSH पोर्ट्स की आवश्यकता नहीं होती (इस पर क्रॉस-कटिंग सेक्शन में अधिक जानकारी दी गई है)। ControlMaster auto और ControlPersist के साथ, कनेक्शन एक ही TCP सेशन पर multiplex होते हैं, इसलिए उसी होस्ट के लिए दूसरा और उसके बाद का हर ssh, scp, या rsync तुरंत कनेक्ट हो जाता है। इसे दोबारा नेगोशिएट करने की आवश्यकता नहीं होती, और जब Ansible का उपयोग होता है तो यह अंतर बहुत महत्वपूर्ण हो जाता है। और चूंकि scp, rsync, और Ansible सभी इसी फाइल को पढ़ते हैं, इसलिए यहाँ परिभाषित हर नाम हर जगह काम करता है।

समस्या: मास्टर कनेक्शन अपनी उपयोगिता से अधिक समय तक जीवित रह सकता है, और विफलता के दो तरीके अलग-अलग दिखते हैं। जब सर्वर रीबूट होता है या आपका Wi-Fi डिस्कनेक्ट होता है, तो मास्टर प्रोसेस एक मृत TCP सेशन को पकड़े रहता है जिसे उसने अभी तक पहचाना नहीं है, और अगला ssh web1 एक ऐसे सॉकेट पर चुपचाप हैंग हो जाता है जो कहीं नहीं जाता। इसके अलावा, sshd प्रति कनेक्शन 10 सेशन की सीमा तय करता है (sshd_config में MaxSessions), इसलिए एक ही होस्ट के लिए ग्यारहवां multiplexed सेशन यह प्रिंट करता है:

mux_client_request_session: session request failed: Session open refused

दोनों का समाधान एक ही है: ssh -O exit web1 मास्टर को समाप्त कर देता है, और अगला कनेक्शन एक नया सेशन शुरू करता है। आप कभी-कभी ControlSocket ~/.ssh/cm-matt@web1-22 already exists, disabling multiplexing भी देख सकते हैं, यह हानिरहित है: दो सेशन्स के बीच रेस हुई, और कनेक्शन अभी भी काम करता है, बस बिना multiplexing के।

इस स्तर पर दो साथी उपयोगी हैं। हर सर्वर पर tmux का उपयोग nohup की जगह लेता है, जिससे Wi-Fi डिस्कनेक्ट होने पर काम खोने या "मैं अपना लैपटॉप बंद नहीं कर सकता, माइग्रेशन चल रहा है" जैसी समस्याओं से छुटकारा मिलता है। सेटअप लागत: sudo apt install -y tmux, दो मिनट, साथ ही tmux new -s work और tmux attach -t work की मसल मेमोरी। इसमें नेस्टिंग की समस्या है: tmux के अंदर tmux आपकी प्रीफिक्स की (prefix key) को दबा देता है, इसलिए इसे या तो सर्वर पर चलाएं या लैपटॉप पर, दोनों पर नहीं। यदि आप लंबे समय तक चलने वाले एजेंट सेशन चलाते हैं तो यह दोगुना महत्वपूर्ण हो जाता है, यह tmux में VPS पर Claude Code चलाने के समान पैटर्न है, जहां सेशन को SSH कनेक्शन से अधिक समय तक जीवित रहना पड़ता है।

एक साझा alias फाइल हर बॉक्स पर अपनी बारह पसंदीदा वन-लाइनर्स को दोबारा टाइप करने की आवश्यकता को खत्म करती है। एक .bash_aliases को git रिपॉजिटरी में रखें और इसे हर सर्वर पर पुल करें। समस्या: यदि आप इसे रिपॉजिटरी में अपडेट करने के बजाय सीधे किसी एक सर्वर पर एडिट करते हैं, तो यह सिंक से बाहर हो जाता है। यह आपको पहली बार अनुभव कराता है कि अगला टियर क्यों अस्तित्व में है।

5 से 20 सर्वर: कॉन्फ़िगरेशन को कोड के रूप में रखें, अन्यथा ड्रिफ्ट (drift) हावी हो जाएगा

पाँच सर्वर से अधिक होने पर, "मैं इसे हर बॉक्स पर खुद कर लूँगा" एक कार्यप्रणाली नहीं, बल्कि खुद से बोला गया झूठ बन जाता है। इस स्तर पर सभी टूल्स एक ही दुश्मन से लड़ते हैं: ड्रिफ्ट।

Ansible होस्टनेम के ऊपर शेल लूप, "नया सर्वर सेटअप" नाम के उस विकी पेज जो तीन कदम पुराना हो चुका है, और इस चिंता को खत्म करता है कि क्या web3 पर वास्तव में फिक्स लागू हुआ है या नहीं। सेटअप लागत: पहले वर्किंग प्लेबुक के लिए 30 मिनट, आपके लैपटॉप या मैनेजमेंट बॉक्स पर sudo apt install -y ansible (apt आपको Ansible का पुराना वर्शन देता है, जो यहाँ सब कुछ के लिए ठीक है; ट्यूटोरियल का pipx रूट आपको वर्तमान वर्शन देता है), सर्वर पर कोई एजेंट नहीं, सब कुछ आपके द्वारा बनाए गए SSH कॉन्फ़िगरेशन पर चलता है। यह इस पेज का सबसे बड़ा अपग्रेड है, और पूरा वॉकथ्रू Ansible फर्स्ट-प्लेबुक ट्यूटोरियल में है; यहाँ उस इन्वेंट्री का स्वरूप है जो इसे काम करने योग्य बनाती है:

[web]
web1 ansible_host=10.8.0.11
web2 ansible_host=10.8.0.12

[db]
db1 ansible_host=10.8.0.21 ansible_port=2222

[all:vars]
ansible_user=matt
ansible_ssh_common_args='-o ProxyJump=bastion'

चूंकि Ansible OpenSSH बाइनरी का उपयोग करता है, इसलिए पिछले सेक्शन में लिखा गया ~/.ssh/config पहले से ही लागू होता है, web1 जैसे नामों की एक इन्वेंट्री बिना किसी vars के काम करेगी। ऊपर दिए गए vars इन्वेंट्री को आत्मनिर्भर बनाते हैं, जो उस दिन काम आता है जब आप इसे अपने लैपटॉप के अलावा किसी अन्य मशीन से चलाते हैं।

इसे ansible all -i inventory.ini -m ping के साथ टेस्ट करें; एक सही परिणाम हर होस्ट के लिए हरे रंग में "ping": "pong" प्रिंट करेगा। जो विफलता आपको सबसे पहले दिखेगी, वह ऐसी होगी:

web1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: matt@10.8.0.11: Permission denied (publickey).",
    "unreachable": true
}

यह Ansible की समस्या नहीं है, साधारण ssh matt@10.8.0.11 भी इसी तरह विफल होता है। सबसे पहले SSH को ठीक करें; Ansible उतना ही स्वस्थ है जितना उसके नीचे की लेयर। इसके अलावा एक और बात: Ansible को दोनों सिरों पर Python की आवश्यकता होती है, इसलिए एक बहुत ही न्यूनतम इमेज /usr/bin/python3: not found का जवाब दे सकती है, एक apt install python3 और यह आपको फिर कभी परेशान नहीं करेगा।

unattended-upgrades आपको उस व्यक्ति के रूप में प्रतिस्थापित करता है जो N सर्वरों पर सुरक्षा पैच लागू करता है। स्टॉक Ubuntu Server 24.04 इसे पहले से इंस्टॉल करके भेजता है और सामान्यतः सुरक्षा अपडेट के लिए इसे सक्षम रखता है, इसलिए यहाँ काम इंस्टॉल करना नहीं, बल्कि सत्यापित करना है:

cat /etc/apt/apt.conf.d/20auto-upgrades

दोनों लाइनें "1" पर समाप्त होनी चाहिए। कुछ न्यूनतम और क्लाउड इमेज इसे बंद करके भेजती हैं, और यदि आपकी इमेज में ऐसा है तो sudo dpkg-reconfigure -plow unattended-upgrades उस फाइल को फिर से लिख देता है। सेटअप लागत: प्रति सर्वर जाँचने के लिए दो मिनट, या उन सभी के लिए एक Ansible टास्क। समस्या: डिफ़ॉल्ट रूप से यह कभी रीबूट नहीं होता है, इसलिए कर्नेल सुरक्षा अपडेट तब तक आधे-अधूरे लागू रहते हैं जब तक आप ऐसा नहीं करते, समर्पित unattended-upgrades गाइड स्वचालित रीबूट, पैचिंग के चयन और लॉग पढ़ने को कवर करती है।

केंद्रीकृत निगरानी (Centralized monitoring) ग्राहक से पता चलने की स्थिति को बदल देती है, जो अब तक की सबसे महंगी निगरानी प्रणाली है। दो टूल्स, कब उपयोग करें इसके लिए एक लाइन: Uptime Kuma "क्या यह चालू है?" का जवाब देता है, HTTP, TCP और पिंग चेक के साथ किसी भी चीज़ पर अलर्ट भेजता है, और Docker में दस मिनट लेता है; Zabbix "क्या यह गिरने वाला है?" का जवाब देता है, हर होस्ट पर एजेंट के माध्यम से डिस्क, मेमोरी और CPU ट्रेंड्स को ट्रैक करता है, और इसे सेटअप करने में एक दोपहर लग सकती है। Kuma से शुरुआत करें; जब "चालू है लेकिन धीमा है" आपके लिए नुकसानदेह होने लगे, तब Zabbix जोड़ें। दोनों के लिए समस्या प्लेसमेंट की है, और यह इतना महत्वपूर्ण है कि यह नीचे दिए गए गलतियों वाले सेक्शन में सबसे ऊपर है।

एक वेब पैनल, केवल यदि आवश्यक हो। Webmin यह याद रखने की आवश्यकता को खत्म करता है कि Ubuntu ने चीज़ें कहाँ रखी हैं, और मिश्रित-कौशल वाली टीम या ऐसे सर्वर के लिए जिसे आप साल में दो बार छूते हैं, यह वास्तव में उपयोगी है; सेटअप दस मिनट का है। समस्या यह है कि यह पोर्ट 10000 पर सुनने वाला एक रूट-समतुल्य वेब एप्लिकेशन है, और इंटरनेट लगातार इसे स्कैन करता रहता है। यदि आप इसे चलाते हैं, तो इसे localhost या VPN एड्रेस पर बाइंड करें, कभी भी पब्लिक इंटरफेस पर 0.0.0.0 पर न रखें। और यदि आप पैनल का उपयोग इसलिए कर रहे हैं क्योंकि SSH धीमा लगता है, तो पिछला सेक्शन फिर से पढ़ें; एक बार कॉन्फ़िगर हो जाने के बाद ~/.ssh/config और Ansible किसी भी पैनल से तेज़ हैं।

20+ सर्वर: जहाँ यह गाइड वास्तव में समाप्त होती है

बीस सर्वर से अधिक होने पर आप एक फ्लीट (fleet) चला रहे होते हैं, और टूलचेन का स्वरूप बदल जाता है: Terraform या OpenTofu का उपयोग करें ताकि सर्वर reproducible हों, cloud-init या golden images का उपयोग करें ताकि एक बॉक्स को रिपेयर करने के बजाय उसे बदला जा सके, pull-based कॉन्फ़िगरेशन या CI पाइपलाइनों का उपयोग करें जो आपका Ansible चलाती हैं क्योंकि लैपटॉप से push करना अब स्केल नहीं होता, और वास्तविक secrets management का उपयोग करें। Ansible खुद बीस सर्वर पर विफल नहीं होता, कई संस्थान इसे सैकड़ों नोड्स पर चलाते हैं, लेकिन इसके आसपास की कार्यप्रणालियों को सख्त होना चाहिए, और यह इस साइट द्वारा लिखे गए लेख से भिन्न विषय है। यदि आप उस स्केल पर हैं, तो नीचे दिया गया अनुभाग अभी भी आपके लिए है, क्योंकि इन्वेंट्री, कीज़ (keys) और एक्सेस अनुशासन बिल्कुल वही चीजें हैं जिन्हें फ्लीट टूलिंग यह मानकर चलती है कि आपके पास पहले से मौजूद हैं।

वह परत जिसे कोई नहीं लिखता

चार अभ्यास हर फ्लीट आकार पर लागू होते हैं, और इन्हें छोड़ना ही वह कारण है कि सर्वर की संख्या वास्तव में जितनी है, उससे कहीं अधिक भारी महसूस होती है।

एक इन्वेंट्री फ़ाइल, यहाँ तक कि एक टेक्स्ट फ़ाइल भी। जिस क्षण आपके पास तीन सर्वर हों, लिख लें: नाम, IP, प्रदाता, उस पर क्या चलता है, और उसका अस्तित्व क्यों है। git repo में एक servers.md ठीक है; ऊपर दी गई Ansible इन्वेंट्री बेहतर है क्योंकि यह निष्पादन योग्य (executable) दस्तावेज़ीकरण है। यह किसे प्रतिस्थापित करती है: रात के 2 बजे उठने वाले सवाल "रुको, 10.0.0.40 क्या है?" को। सेटअप लागत: दस मिनट। समस्या: यह केवल तभी काम करती है जब सर्वर बनाना और लाइन जोड़ना एक ही कार्य हो, कभी भी दो अलग-अलग कार्य नहीं।

की (Key) स्वच्छता: अभी रोटेशन करें, जब समस्या हो तो SSH CA का उपयोग करें। गणना करें कि आपकी कीज़ कहाँ रहती हैं (आपकी तरफ cat ~/.ssh/*.pub, प्रत्येक सर्वर की तरफ ~/.ssh/authorized_keys), पुराने लैपटॉप और पूर्व सहयोगियों को हटा दें, और किसी भी ऐसी पुरानी चीज़ को रोटेट करें जिसके बारे में आप यह नहीं कह सकते कि वह कहाँ-कहाँ रही है। एक SSH सर्टिफिकेट अथॉरिटी, स्थिर कीज़ के बजाय अल्पकालिक हस्ताक्षरित सर्टिफिकेट, एक परिपक्व समाधान है, लेकिन ईमानदार सलाह यह है कि दस सर्वर से नीचे, Ansible के माध्यम से अनुशासित authorized_keys प्रबंधन आपको 10% प्रयास में 90% लाभ देता है।

अंदर आने का एक रास्ता, बीस नहीं। प्रत्येक सार्वजनिक SSH पोर्ट हमले की सतह (attack surface) को N गुना बढ़ा देता है। जो पैटर्न स्केल होता है: एक बैशन होस्ट, या बेहतर, एक WireGuard VPN जिसे आप नियंत्रित करते हैं, और बाकी सभी सर्वरों का SSH केवल उनके निजी पते पर बाउंड होना चाहिए। ऊपर कॉन्फ़िगरेशन में ProxyJump लाइनें पहले से ही इस आकार को मानती हैं। जो कुछ भी सार्वजनिक रहना चाहिए, उस पर सामान्य प्रक्रिया के रूप में fail2ban होना चाहिए। सेटअप लागत: एक घंटा, केवल एक बार। समस्या: पोर्ट 22 को हर जगह बंद करने से पहले यह सत्यापित करें कि आपका बैकअप (प्रदाता का कंसोल एक्सेस) काम करता है, बाद में नहीं।

बैकअप जिन्हें रिस्टोर करके परखा गया हो। एक अपरीक्षित बैकअप केवल एक परिकल्पना है। आप जो भी तंत्र उपयोग करें, प्रदाता स्नैपशॉट, restic, या किसी दूसरे बॉक्स पर rsync, जो उपकरण वास्तव में मायने रखता है वह कैलेंडर प्रविष्टि है जहाँ आप एक सर्वर को एक नए VPS पर रिस्टोर करते हैं और पुष्टि करते हैं कि वह बूट होता है और सेवा प्रदान करता है। होस्टिंग के पंद्रह वर्षों में मैंने जो भी बैकअप की डरावनी कहानियाँ सुनी हैं, उनमें यह वाक्यांश शामिल है "हमारे पास बैकअप थे।"

गलतियाँ

मल्टी-सर्वर स्केल पर विफलता के कारण टूल की खराबी नहीं, बल्कि आदतें होती हैं। इनमें से चार आदतें लगभग हर समस्या के लिए जिम्मेदार हैं।

Snowflake सर्वर। प्रत्येक सर्वर को मैन्युअल रूप से कॉन्फ़िगर किया गया है, वे थोड़े अलग हैं, और कोई भी उन्हें फिर से नहीं बना सकता। आपको इसका पता डिस्क फेलियर के दौरान चलता है। इसका समाधान उबाऊ है: हर बदलाव Ansible के माध्यम से होना चाहिए, या कम से कम उस सर्वर के इन्वेंट्री दस्तावेज़ में जोड़ा जाना चाहिए। यदि आप आज दोपहर तक नोट्स से किसी सर्वर को फिर से नहीं बना सकते, तो वह एक ऐसा तकनीकी कर्ज (technical debt) है जिसकी समय-सीमा आप तय नहीं कर सकते।

"अस्थायी" फ़ायरवॉल होल। किसी चीज़ को डीबग करने के लिए ufw allow 5432 का उपयोग किया जाता है, और अठारह महीने बाद भी Postgres इंटरनेट पर खुला रहता है। प्रत्येक बॉक्स पर sudo ufw status numbered के साथ ऑडिट करें, या एक बार में ansible all -i inventory.ini -a "ufw status numbered" --become चलाएं, और ऐसी किसी भी चीज़ को हटा दें जिसका आपके पास वर्तमान कारण नहीं है। यदि कोई नियम वास्तव में अस्थायी है, तो उसे बंद करने से पहले संबंधित ufw delete को उसी tmux विंडो में रखें।

निगरानी (monitoring) उसी सर्वर पर होस्ट करना जिसकी निगरानी की जा रही है। यदि Uptime Kuma उसी सर्वर पर चलता है जिसकी वह निगरानी करता है, तो "सब कुछ डाउन है" वाला अलर्ट भी डाउन हो जाएगा। आपने दुनिया के सबसे कम कुशल डेटासेंटर का एक छोटा और हास्यास्पद संस्करण बना लिया है। मॉनिटरिंग को एक अलग विफलता डोमेन (failure domain) में रहना चाहिए: किसी अन्य प्रदाता पर एक सस्ता VPS इसका क्लासिक उत्तर है, या कम से कम एक बाहरी फ्री-टियर चेक जो 'वॉचर' की निगरानी करे।

हर जगह Root SSH। पूरे फ्लीट में एक साझा root key का मतलब है कि एक लीक हुआ लैपटॉप सब कुछ खतरे में डाल देता है, और कोई ऑडिट ट्रेल यह नहीं बताता कि किसने क्या किया। प्रत्येक होस्ट पर प्रति-व्यक्ति उपयोगकर्ता, sudo, और /etc/ssh/sshd_config में PermitRootLogin no का उपयोग करें। यह फिर से, टाइपिंग में शाम बिताने के बजाय केवल तीन लाइन का Ansible टास्क है।

जब फ्लीट कुछ सर्वरों से अधिक हो जाए, तो आपका पहला Ansible playbook दोहराव वाले कार्यों को स्वचालित कर देता है।

FAQ

कई Linux servers को manage करने के लिए सबसे अच्छा मुफ्त टूल कौन सा है?

2 से 5 servers के लिए, एक अच्छी तरह से लिखा गया ~/.ssh/config और tmux किसी भी अन्य install किए जाने वाले टूल से बेहतर है। लगभग पांच servers से ऊपर, Ansible मानक समाधान है: यह agentless है, मुफ्त है, आपके मौजूदा SSH पर चलता है, और server setup को git में फाइलों के रूप में बदल देता है। up/down अलर्टिंग के लिए Uptime Kuma जोड़ें; इस गाइड में बताए गए सभी टूल्स मुफ्त सॉफ्टवेयर हैं।

क्या मैं Ansible के बिना कई Linux servers को manage कर सकता हूँ?

हाँ, लगभग पांच servers से कम के लिए, एक अच्छा SSH config, एक साझा alias फाइल और अनुशासन पर्याप्त हैं, और बहुत से लोग वर्षों तक इसी तरह काम करते हैं। इससे आगे, Ansible का विकल्प "कुछ नहीं" नहीं है, बल्कि undocumented drift है: अठारह servers, जिनमें से प्रत्येक को हाथ से थोड़ा अलग तरीके से configure किया गया है। यदि Ansible भारी लगता है, तो एक ऐसे playbook से शुरुआत करें जो केवल authorized_keys और unattended-upgrades को manage करता है; केवल इतना ही सीखने की मेहनत को सार्थक बना देता है।

मैं एक ही समय में कई Linux servers पर एक ही command कैसे चलाऊं?

ansible all -i inventory.ini -a "uptime" इसका साफ-सुथरा समाधान है और इसके लिए किसी playbook की आवश्यकता नहीं है, बस inventory फाइल चाहिए। इंटरैक्टिव साइड-बाय-साइड काम के लिए, tmux setw synchronize-panes on के साथ हर pane में keystrokes broadcast कर सकता है, लेकिन इसे केवल एक ट्रिक मानें, क्योंकि production servers पर इंटरैक्टिव commands broadcast करना एक टाइपो को N गुना बड़ी खराबी में बदल सकता है।

क्या मुझे Linux servers को manage करने के लिए Webmin जैसे control panel की आवश्यकता है?

आवश्यकता नहीं है, क्योंकि जो काम एक पैनल करता है, SSH और Ansible उसे अधिक पुनरावृत्ति (reproducibly) के साथ करते हैं। Webmin तब उपयोगी होता है जब अलग-अलग कौशल स्तर के लोग एक ही बॉक्स को manage करते हैं, या जब आप किसी server को इतनी कम बार छूते हैं कि config paths को फिर से खोजना समय की बर्बादी बन जाता है। यदि आप इसे चलाते हैं, तो इसे root-equivalent वेब ऐप की तरह ही मानें: इसे localhost या VPN address पर bind करें, कभी भी public interface पर नहीं।

एक व्यक्ति वास्तव में कितने Linux servers को manage कर सकता है?

हाथ से administration करने पर, दस से कम servers पर ही गुणवत्ता गिरने लगती है। config as code, स्वचालित patching और केंद्रीकृत निगरानी के साथ, एक सतर्क व्यक्ति 20 से 50 servers को पार्ट-टाइम जॉब के रूप में चला सकता है; बाधा यह नहीं है कि routine देखभाल कितनी है, बल्कि यह है कि कुछ नया कितनी बार खराब होता है। जो संख्या मायने रखती है वह प्रति admin servers की संख्या नहीं, बल्कि प्रति admin 'snowflakes' (अद्वितीय/असंगत configurations) की संख्या है: इसे शून्य के करीब रखें और आप बहुत अधिक servers संभाल पाएंगे।