24. Ansible के साथ Ubuntu Server सेटअप को स्वचालित करना: एक व्यावहारिक मार्गदर्शिका

परिचय

सर्वर को मैन्युअल रूप से सेट अप और प्रबंधित करना एक थकाऊ और त्रुटि-प्रवण प्रक्रिया हो सकती है, विशेष रूप से कई सर्वर वाले वातावरणों में या दोहराए जाने वाले कॉन्फ़िगरेशन कार्यों में। Ansible, एक शक्तिशाली ओपन-सोर्स IT ऑटोमेशन टूल, सर्वर प्रोविज़निंग, कॉन्फ़िगरेशन और प्रबंधन को आसानी से स्वचालित करने में सक्षम बनाकर इस प्रक्रिया को सुव्यवस्थित करता है। इस मार्गदर्शिका “24. Ansible के साथ Ubuntu Server सेटअप को स्वचालित करना: एक व्यावहारिक मार्गदर्शिका” में, हम आपको Ansible का उपयोग करके Ubuntu Server के सेटअप और कॉन्फ़िगरेशन को स्वचालित करने की मूल बातों से अवगत कराएँगे। अंत तक, आप सामान्य सर्वर कार्यों को सरल बनाने, दक्षता सुधारने और अपने पूरे बुनियादी ढाँचे में स्थिरता सुनिश्चित करने के लिए Ansible प्लेबुक लिखना और चलाना सीख जाएँगे।


पिछले लेख:

01. Ubuntu Server का परिचय – SysOSX: AI & Cloud

02. अपना पहला Ubuntu Server कैसे सेट अप करें: शुरुआती मार्गदर्शिका – SysOSX: AI & Cloud

03. Ubuntu Server के लिए Linux कमांड लाइन में महारत – SysOSX: AI & Cloud

04. Ubuntu Server पर उपयोगकर्ता और अनुमतियाँ प्रबंधित करना: एक व्यापक मार्गदर्शिका – SysOSX: AI & Cloud

05. Ubuntu Server के लिए नेटवर्किंग की मूल बातें: एक व्यापक मार्गदर्शिका – SysOSX: AI & Cloud

06. Ubuntu Server पर सॉफ़्टवेयर इंस्टॉल और प्रबंधित करना: एक संपूर्ण मार्गदर्शिका – SysOSX: AI & Cloud

07.Ubuntu Server को पैच करना और अपडेट करना: एक व्यापक मार्गदर्शिका – SysOSX: AI & Cloud

08. अपने Ubuntu Server को सुरक्षित करें: हार्डनिंग और सुरक्षा के व्यावहारिक चरण – SysOSX: AI & Cloud

09. Ubuntu सर्वर ऑडिटिंग और लॉगिंग

10. Ubuntu Server के लिए सिस्टम मॉनिटरिंग टूल: एक व्यापक मार्गदर्शिका – SysOSX: AI & Cloud

11. Ubuntu सर्वर के लिए केंद्रीकृत लॉगिंग: अवश्य पढ़ने योग्य मार्गदर्शिका – SysOSX: AI & Cloud

12. Ubuntu Server के लिए ऑडिट और अनुपालन: सर्वोत्तम प्रथाएँ – SysOSX: AI & Cloud

13. होस्टिंग और वेब एप्लिकेशन के लिए अपना Ubuntu Server सेट अप करें: अंतिम मार्गदर्शिका – SysOSX: AI & Cloud

14. एक Ubuntu Server पर कई वेबसाइट होस्ट करें: उपयोगी टिप्स – SysOSX: AI & Cloud

15. Ubuntu Server पर स्टोरेज और डिस्क प्रबंधित करना: सरल मार्गदर्शिका – SysOSX: AI & Cloud

16. Ubuntu Server पर फ़ाइल साझाकरण सेवाएँ सेट अप करें: एक संपूर्ण मार्गदर्शिका – SysOSX: AI & Cloud

17. Ubuntu पर सुरक्षित डेटाबेस सर्वर सेट अप करें: MySQL बनाम MariaDB – SysOSX: AI & Cloud

18. Ubuntu Server पर LVM को कॉन्फ़िगर और उपयोग कैसे करें: एक व्यापक मार्गदर्शिका – SysOSX: AI & Cloud

19. KVM के साथ वर्चुअलाइज़ेशन का परिचय: Ubuntu Server के लिए शुरुआती मार्गदर्शिका – SysOSX: AI & Cloud

20. Ubuntu Server पर Docker कैसे इंस्टॉल करें: कंटेनरीकरण के लिए चरण-दर-चरण मार्गदर्शिका – SysOSX: AI & Cloud

21. LXD के साथ शुरुआत: आसानी से कंटेनर इंस्टॉल करें + चीट शीट – SysOSX: AI & Cloud

22. Ubuntu Server पर Podman के साथ शुरुआत: एक संपूर्ण मार्गदर्शिका – SysOSX: AI & Cloud

23. क्लाउड में Ubuntu Server परिनियोजित करना: चरण-दर-चरण मार्गदर्शिका – SysOSX: AI & Cloud


विषय-सूची


सर्वर ऑटोमेशन के लिए Ansible का उपयोग क्यों करें?

Ansible अपनी सरलता और शक्ति के कारण सर्वर ऑटोमेशन के लिए व्यापक रूप से उपयोग किया जाता है। यह शीर्ष विकल्प क्यों है, इसके कारण इस प्रकार हैं:

  • एजेंटलेस: Ansible को लक्ष्य सर्वर पर किसी एजेंट सॉफ़्टवेयर को इंस्टॉल करने की आवश्यकता नहीं है। यह संचार के लिए SSH का उपयोग करता है।
  • घोषणात्मक सिंटैक्स: Ansible प्लेबुक YAML का उपयोग करते हैं, जो मानव-पठनीय सिंटैक्स है, जिससे वांछित स्थिति को परिभाषित करना आसान हो जाता है।
  • पुन: प्रयोज्य कॉन्फ़िगरेशन: प्लेबुक एक बार लिखें और उन्हें कई सर्वर पर पुनः उपयोग करें।
  • आइडेम्पोटेंट: Ansible सुनिश्चित करता है कि कार्य केवल आवश्यकता पड़ने पर ही निष्पादित हों, जिससे अनावश्यक संचालन से बचा जा सके।
  • विस्तारशीलता: Ansible पैकेज इंस्टॉलेशन, फ़ाइल प्रबंधन और सेवा कॉन्फ़िगरेशन जैसे कार्यों को संभालने के लिए मॉड्यूल की एक विस्तृत श्रृंखला का समर्थन करता है।

पूर्वापेक्षाएँ

Ansible के साथ Ubuntu Server सेटअप को स्वचालित करने में उतरने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित हैं:

  1. नियंत्रण नोड: एक मशीन (आपकी स्थानीय प्रणाली या एक समर्पित सर्वर) जहाँ Ansible इंस्टॉल है।
  2. लक्ष्य सर्वर: Ubuntu सर्वर (ऑन-प्रिमाइसेस या क्लाउड में) जिन्हें आप कॉन्फ़िगर करना चाहते हैं।
  3. SSH पहुँच: सुनिश्चित करें कि नियंत्रण नोड और लक्ष्य सर्वर के बीच बिना पासवर्ड वाली SSH पहुँच सेट अप है।

चरण 1: Ansible इंस्टॉल करें

1.1 नियंत्रण नोड पर Ansible इंस्टॉल करें

अपने नियंत्रण नोड (जैसे, Ubuntu चलाने वाली आपकी स्थानीय मशीन) पर Ansible इंस्टॉल करें:

sudo apt update  
sudo apt install ansible -y  

1.2 इंस्टॉलेशन सत्यापित करें

यह सुनिश्चित करने के लिए Ansible के इंस्टॉल किए गए संस्करण की जाँच करें कि यह सही ढंग से इंस्टॉल हुआ है:

ansible --version  

उदाहरण आउटपुट:

ansible 2.10.8
  config file = None
  configured module search path = ['/home/uadmin/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.10.12 (main, Feb  4 2025, 14:57:36) [GCC 11.4.0]


चरण 2: SSH पहुँच सेट अप करें

Ansible SSH पर लक्ष्य सर्वर के साथ संचार करता है। आपको नियंत्रण नोड से लक्ष्य सर्वर तक बिना पासवर्ड वाली SSH पहुँच सेट अप करनी होगी।

2.1 SSH कुंजी युग्म बनाएँ

यदि आपके पास पहले से SSH कुंजी युग्म नहीं है, तो एक बनाएँ:

ssh-keygen -t rsa -b 2048  

2.2 SSH कुंजी को लक्ष्य सर्वर पर कॉपी करें

अपनी सार्वजनिक कुंजी को लक्ष्य सर्वर पर कॉपी करने के लिए निम्नलिखित कमांड का उपयोग करें:

ssh-copy-id ubuntu@<target-server-ip>  

SSH पहुँच का परीक्षण करें ताकि यह सुनिश्चित हो सके कि यह बिना पासवर्ड के काम करती है:

ssh ubuntu@<target-server-ip>  


चरण 3: अपनी इन्वेंटरी परिभाषित करें

Ansible प्रबंधित किए जाने वाले लक्ष्य सर्वर को परिभाषित करने के लिए इन्वेंटरी फ़ाइल का उपयोग करता है।

3.1 इन्वेंटरी फ़ाइल बनाएँ

अपनी कार्यशील निर्देशिका में फ़ाइल बनाएँ। फ़ाइल का नाम: inventory है।

nano inventory  

लक्ष्य सर्वर के IP पते या होस्टनेम जोड़ें। उदाहरण के लिए:

[ubuntu_servers]  
192.168.50.42  
192.168.50.145

फ़ाइल सहेजें और बाहर निकलें (Ctrl+O, फिर Ctrl+X)।

3.2 कनेक्टिविटी का परीक्षण करें

मॉड्यूल का उपयोग करके लक्ष्य सर्वर से कनेक्टिविटी का परीक्षण करें। मॉड्यूल: ping ।

ansible -i inventory ubuntu_servers -m ping  

उदाहरण आउटपुट:

192.168.50.145 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
192.168.50.42 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}


चरण 4: अपना पहला Ansible प्लेबुक लिखें

Ansible प्लेबुक YAML फ़ाइलें हैं जो उन कार्यों को परिभाषित करती हैं जिन्हें आप स्वचालित करना चाहते हैं। आइए Ubuntu Server के सेटअप को स्वचालित करने के लिए एक प्लेबुक बनाएँ।

4.1 प्लेबुक फ़ाइल बनाएँ

फ़ाइल बनाएँ। फ़ाइल का नाम: setup.yml है।

nano setup.yml  

4.2 प्लेबुक परिभाषित करें

प्लेबुक में निम्नलिखित सामग्री जोड़ें:

---  
- name: Configure Ubuntu Server  
  hosts: ubuntu_servers  
  become: true  

  tasks:  
    - name: Update and upgrade apt packages  
      apt:  
        update_cache: yes  
        upgrade: dist  

    - name: Install common packages  
      apt:  
        name:  
          - curl  
          - wget  
          - git  
          - build-essential  
        state: present  

    - name: Enable UFW and allow SSH  
      ufw:  
        rule: allow  
        name: OpenSSH  
        state: enabled  

    - name: Create a new user  
      user:  
        name: devuser  
        password: "{{ 'password123' | password_hash('sha512') }}"  
        state: present  
        groups: sudo  

कार्यों की व्याख्या

  1. पैकेज अपडेट और अपग्रेड करें: सुनिश्चित करता है कि सर्वर में नवीनतम अपडेट और सुरक्षा पैच हैं।
  2. सामान्य पैकेज इंस्टॉल करें: जैसे आवश्यक टूल इंस्टॉल करता है: curl, wget और git।
  3. UFW सक्षम करें: SSH पहुँच की अनुमति देने के लिए फ़ायरवॉल कॉन्फ़िगर करता है।
  4. नया उपयोगकर्ता बनाएँ: sudo विशेषाधिकारों के साथ नया उपयोगकर्ता जोड़ता है।
  5. होस्टनेम सेट करें: सर्वर का होस्टनेम कॉन्फ़िगर करता है।

फ़ाइल सहेजें और बाहर निकलें।


चरण 5: प्लेबुक चलाएँ

कॉन्फ़िगरेशन लागू करने के लिए प्लेबुक चलाएँ:

ansible-playbook -i inventory setup.yml  

Ansible प्रत्येक कार्य की प्रगति लॉग करेगा। यदि सभी कार्य सफलतापूर्वक पूरे हो जाते हैं, तो आपका Ubuntu Server पूरी तरह कॉन्फ़िगर हो जाएगा।

आउटपुट नीचे:

uadmin@u2204-001:~$ sudo ansible-playbook -i inventory setup.yml

PLAY [Configure Ubuntu Server] ***************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************
ok: [192.168.50.145]
ok: [192.168.50.42]

TASK [Update and upgrade apt packages] *******************************************************************************
^X^C [ERROR]: User interrupted execution
uadmin@u2204-001:~$ sudo nano setup.yml
uadmin@u2204-001:~$ sudo ansible-playbook -i inventory setup.yml

PLAY [Configure Ubuntu Server] ***************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************
ok: [192.168.50.145]
ok: [192.168.50.42]

TASK [Update and upgrade apt packages] *******************************************************************************
ok: [192.168.50.42]
ok: [192.168.50.145]

TASK [Install common packages] ***************************************************************************************
changed: [192.168.50.145]
changed: [192.168.50.42]

TASK [Enable UFW and allow SSH] **************************************************************************************
changed: [192.168.50.145]
changed: [192.168.50.42]

TASK [Create a new user] *********************************************************************************************
changed: [192.168.50.42]
changed: [192.168.50.145]

PLAY RECAP ***********************************************************************************************************
192.168.50.145             : ok=5    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
192.168.50.42              : ok=5    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0



चरण 6: कॉन्फ़िगरेशन सत्यापित करें

6.1 इंस्टॉल किए गए पैकेज जाँचें

किसी एक लक्ष्य सर्वर में लॉग इन करें और सत्यापित करें कि सामान्य पैकेज इंस्टॉल हो गए हैं:

curl --version  
git --version  

6.2 फ़ायरवॉल स्थिति जाँचें

सत्यापित करें कि फ़ायरवॉल सक्षम है:

sudo ufw status  

6.3 नया उपयोगकर्ता जाँचें

सुनिश्चित करें कि नया उपयोगकर्ता बनाया गया है:

cat /etc/passwd | grep devuser  


उन्नत उपयोग के मामले

एक बार जब आप बुनियादी प्लेबुक के साथ सहज हो जाएँ, तो आप अधिक उन्नत उपयोग के मामलों का पता लगा सकते हैं:

  • एप्लिकेशन परिनियोजित करना: वेब सर्वर (जैसे, Nginx, Apache) या डेटाबेस (जैसे, MySQL, PostgreSQL) इंस्टॉल और कॉन्फ़िगर करने के लिए Ansible का उपयोग करें।
  • कई वातावरण प्रबंधित करना: स्टेजिंग, उत्पादन और विकास वातावरणों के लिए अलग-अलग इन्वेंटरी फ़ाइलें बनाएँ।
  • रोल का उपयोग करना: जटिल सेटअप के लिए अपने प्लेबुक को पुन: प्रयोज्य रोल में व्यवस्थित करें।
  • CI/CD के साथ एकीकरण: अपनी CI/CD पाइपलाइन के हिस्से के रूप में सर्वर सेटअप स्वचालित करें।

संदर्भ:

Ansible दस्तावेज़ — Ansible समुदाय दस्तावेज़


निष्कर्ष

Ansible सर्वर सेटअप और कॉन्फ़िगरेशन को स्वचालित करने का एक शक्तिशाली टूल है। इस मार्गदर्शिका में, हमने निम्नलिखित शामिल किया:

  • नियंत्रण नोड पर Ansible इंस्टॉल करना।
  • लक्ष्य सर्वर पर SSH पहुँच सेट अप करना।
  • Ubuntu Server सेटअप को स्वचालित करने के लिए एक बुनियादी प्लेबुक लिखना और चलाना।

Ansible का लाभ उठाकर, आप समय बचा सकते हैं, त्रुटियाँ कम कर सकते हैं और अपने पूरे बुनियादी ढाँचे में स्थिरता सुनिश्चित कर सकते हैं। चाहे आप एक सर्वर प्रबंधित कर रहे हों या सैकड़ों, Ansible आधुनिक DevOps वर्कफ़्लो के लिए एक आवश्यक टूल है।

2 thoughts on “24. Automating Ubuntu Server Setup with Ansible: A Practical Guide”

टिप्पणी छोड़ें