GH GambleHub

एंसिबल: कॉन्फ़िगरेशन और तैनात करें

(धारा: प्रौद्योगिकी और बुनियादी ढांचा)

संक्षिप्त सारांश

वीएम/होस्ट, सेवाओं और अनुप्रयोगों के बार-बार कॉन्फ़िगरेशन के लिए एक घोषणात्मक कॉन्फ़िगरेशन और ऑर्केस्ट्रेशन टूल आदर्श है। सफलता की कुंजी: मॉड्यूलर संरचना (भूमिकाएं/संग्रह), सख्त पहचान, रहस्य (तिजोरी), गतिशील सूची, परीक्षण और GitOps अनुशासन के साथ साफ काम।

कब उपयुक्त है (और यह टेराफॉर्म के साथ कैसे फिट होता है)

Terraform - संसाधन बनाता है (VPC, समूह, डेटाबेस)।

एंसिबल - ओएस/सॉफ्टवेयर कॉन्फ़िगर करता है, संस्करणों को रोल आउट करता है, माइग्रेशन करता है, फ़ाइलों और सेवाओं को संपादित करता है।

लिंक: कलाकृतियों के लिए Terraform आउटपुट 'इन्वेंट्री '/IP/रहस्य, Anible उन्हें एक सीडी चरण में पढ़ ता है।

भंडार संरचना (अनुशंसित टेम्पलेट)


ansible/
inventories/
prod/
inventory. ini # or inventory. yaml group_vars/
all. yml web. yml db. yml host_vars/
web-01. yml stage/
...
roles/
webapp/
defaults/main. yml vars/main. yml tasks/main. yml handlers/main. yml templates/.j2 files/
meta/main. yml hardening/
...
playbooks/
site. yml deploy_webapp. yml hardening. yml collections/requirements. yml ansible. cfg
असंभव। cfg (न्यूनतम):
ini
[defaults]
inventory = inventories/stage/inventory. ini stdout_callback = yaml callbacks_enabled = timer, profile_tasks interpreter_python = auto retry_files_enabled = False forks = 25 host_key_checking = True

आविष्कार: स्थिर और गतिशील

स्थिर (ini):
ini
[web]
web-01 ansible_host=10. 0. 1. 10 web-02 ansible_host=10. 0. 1. 11

[db]
db-01 ansible_host=10. 0. 2. 10

[all:vars]
ansible_user=ansible ansible_ssh_common_args='-o ProxyJump=bastion@1. 2. 3. 4'

गतिशील

होस्ट टैग करने के लिए क्लाउड प्लगइन (या अपनी स्वयं की स्क्रिप्ट) का उपयोग करें वातावरण/टैग चर → 'समूह _ vars'।

भूमिकाएँ और संग्रह

भूमिका = स्वतंत्र पुन: उपयोग मॉड्यूल (कार्य, फ़ाइलें, टेम्पलेट, हैंडलर)।

संग्रह - भूमिकाओं/प्लगइन/मॉड्यूल का एक सेट। संस्करण पिन को 'संग्रह/आवश्यकताओं में ठीक करें। yml '।

yaml collections/requirements. yml collections:
- name: community. general version: ">=8. 0. 0,<9. 0. 0"
- name: ansible. posix

प्लेबुक: आइडेम्पोटेंट स्क्रिप्ट

सामान्य प्लेबुक का उदाहरण:
yaml playbooks/site. yml
- hosts: all gather_facts: true become: true roles:
- hardening

- hosts: web become: true roles:
- webapp
'वेबप' रोल (टुकड़े):
yaml roles/webapp/tasks/main. yml
- name: Install packages:
name: ["nginx", "python3-venv"]
state: present

- name: Template configuration template:
src: nginx. conf. j2 dest: /etc/nginx/nginx. conf mode: "0644"
notify: Restart nginx

- name: unarchive artifact deploy:
src: "{{ webapp_package_url }}"  # артефакт из CI dest: /opt/webapp remote_src: true creates: /opt/webapp/current

- name: Link to the current version of file:
src: "/opt/webapp/releases/{{ release_id }}"
dest: /opt/webapp/current state: link notify: Reload webapp
हैंडलर:
yaml roles/webapp/handlers/main. yml
- name: Restart nginx service: { name: nginx, state: restarted }

- name: Reload webapp systemd: { name: webapp, state: reloaded, daemon_reload: true }

Jinja2 टैम्प्लेट और वेरिएबल्स

डिफ़ॉल्ट वेरिएबल्स को 'तयशुदा/मुख्य' में भंडारित क yml ', संवेदनशील - तिजोरी में।

फ़िल्टर इस्तेमाल करें (' b64encode', ' default') और 'जब' शर्तें.

उदाहरण 'nginx। कन्फर्म। j2 ':
jinja2 worker_processes auto;
http {
server {
listen 80;
server_name {{ inventory_hostname }};
location / {
proxy_pass http://127. 0. 0. 1:{{ webapp_port }};
}
}
}

रहस्य: एनीबल वॉल्ट और सीक्रेट मैनेजर्स

वेरिएबल फ़ाइलों को गोपित करने के लिए तिजोरी ('group _ vars/all. तिजोरी। yml ')।

इसी मॉड्यूल के माध्यम से बाहरी प्रबंधकों (केएमएस/सीक्रेट मैनेजर/एसएसएम) से रहस्यों को पढ़ ना बेहतर है और वॉल्ट में केवल लिंक/एआरएन को स्टोर करना है।

एनक्रिप्टेड फ़ाइल (उदाहरण संरचना):
yaml group_vars/all. vault. yml (ansible-vault encrypted)
webapp_db_password: "..."
jwt_signing_key: "..."
सिफारिशें:
  • साझा पहुँच: डेवलपर्स dev/stage, prod - केवल CI देखते हैं।
  • गुप्त घुमाव और पहुँच ऑडिटिंग सक्षम करें।

पहचान और सही परिवर्तन

'shell/command' के बजाय मॉड्यूल ('पैकेज', 'उपयोक्ता', 'lineinfile', 'template', 'systemd') इस्तेमाल करें.

मार्क "शोर" कार्यों को बदल दिया _ कब: झूठा 'वे कुछ भी नहीं बदलते हैं।

सपोर्ट चेक मोड ('--check') और भूमिकाओं के लिए diff.

अस्थिर कार्यों के लिए: 'पुनरावृत्ति', 'देरी', 'जब तक'।

उदाहरण:
yaml
- name: Wait for HTTP uri availability:
url: "http://localhost/health"
status_code: 200 register: health retries: 10 delay: 5 until: health. status == 200

प्रदर्शन: बड़े खेतों और चोटियों

कांटे: संगामिति बढ़ाएं (सावधानी: अधिभार लक्ष्य न करें)।

रणनीति = पड़ोसियों की प्रतीक्षा किए बिना मुक्त-निष्पादित कार्य।

Pipelining = true 'anible। cfg 'RTT को कम करता है।

gather_facts: झूठ जहां तथ्य अनावश्यक हैं।

दीर्घकालिक कार्यों के लिए असीनक/सर्वेक्षण; तैनात तरंगों के लिए थ्रॉटल/धारावाहिक।

delegate_to और run_once एकल कार्यों के लिए (उदाहरण के लिए, डेटाबेस प्रवास)।

शून्य डाउनटाइम पैटर्न

रोलिंग तैनाती (20% प्रत्येक)

yaml
- hosts: web serial: "20%"
max_fail_percentage: 10 roles: [webapp]

कैनरी

'-- limit वेब-कैनरी' (समूह का एक सबसेट) के साथ प्लेबुक चलाएं, मेट्रिक्स की जाँच करें, फिर पूरे समूह में रोल आउट करें।

ब्लू-ग्रीन

दो मेजबान समूह 'वेब _ ब्लू' और 'वेब _ ग्रीन'; प्लेबुक के साथ एक नई लहर तैयार करें, फिर 'सामुदायिक कार्य' के साथ ट्रैफिक (डीएनएस/एलबी) स्विच करें। सामान्य। affiliate_lb'/API आपका संतुलन।

सुरक्षा और सख्ती

सख्त भूमिका: SSH नीतियां, बैनर, NOPASSWD के बिना 'sudo', फ़ायरवॉल, ऑडिट/rsyslog, टाइम-NTP, 'फेल2ban'।

SELinux/AppArmor सक्षम करें, मॉड्यूल के माध्यम से नीतियों का प्रबंधन करें।

Bastion: SSH को केवल जंप-होस्ट के माध्यम से लक्ष्य करने के लिए प्रतिबंधित करें ('ProxyJump' देखें)।

न्यूनतम करें 'बन जाओ: सही'; इन्वेंट्री स्तर पर RBAC को आकर्षित करें (जो प्लेबुक चला सकते हैं)।

विंडोज और नेटवर्क हार्डवेयर

विंडोज़: मॉड्यूल 'विन _', WinRM कनेक्शन, PowerShell स्क्रिप्ट - अंतिम तर्क के रूप में।

नेटवर्क: 'network _ cli '/' httpapi', मॉड्यूल फॉर Cisco/Juniper/F5; 'सेव _ कब: बदला' के माध्यम से परमाणुता।

परीक्षण और गुणवत्ता

एंसिबल-लिंट + yamllint в CI।

अणु: स्थानीय/कंटेनर भूमिका परीक्षण, पहचान जांच (डबल रन अपरिवर्तित)।

सैंडबॉक्स: व्यक्तिगत वीएम अस्थायी सूची/छवियाँ।

उदाहरण अणु (टुकड़ा):
yaml provisioner:
name: ansible verifier:
name: ansible scenario:
name: default

CI/CD और GitOps के साथ एकीकरण

विशिष्ट पाइपलाइन:

1. लिंट → सिंटैक्स जाँच → अणु।

2. बिल्डिंग एप्लिकेशन कलाकृतियों।

3. तैनाती: 'एंसिबल-प्लेबुक -i इन्वेंटरी/प्रोड साइट। yml --limit वेब --tags तैनात '।

4. परिवर्तित होस्ट, लॉग की कलाकृति पर रिपोर्ट करें।

उदाहरण चरण (अवधारणा):
bash ansible-galaxy collection install -r collections/requirements. yml ansible-lint ansible-playbook playbooks/deploy_webapp. yml \
-i inventories/prod/inventory. ini \
-e release_id=${GIT_SHA} --diff

अवलोकन और लेखा परीक्षा

कनेक्ट करें कॉलबैक प्लगइन (json/yaml/timer/profile_tasks) - समय पर रिपोर्ट और परिवर्तन।

प्लेबुक लॉग को केंद्रीकृत भंडारण में सहेजें।

लेबल 'टैग: ' चयनात्मक रन के लिए कार्य और जांच में तेजी लाएं।

आईगेमिंग के लिए अक्सर व्यंजनों

वेब/एपीआई नोड: Nginx + सिस्टम-यूनिट, हेल्थ-चेक, मैनेजर से रहस्य, रोल-रिस्टार्ट।

खेल सेवाएँ: 'समूह _ vars' के माध्यम से क्षेत्र/किरायेदारों द्वारा कॉन्फिग टेम्पलेट

भुगतान कनेक्टर: कुंजियों के लिए सख्त, सूचना द्वारा पुनः प्रारंभ, समापन बिंदुओं की जांच के बाद।

ईटीएल जॉब्स: 'क्रॉन' मॉड्यूल, आइडेम्पोटेंट लॉक फ़ाइल के साथ क्रोनजॉब स्क्रिप्ट तैनात करना।

निगरानी: एजेंटों की स्थापना (node_exporter/otelcol), निगरानी में ऑटो-पंजीकरण।

एंटीपैटर्न

जहाँ मॉड्यूल है वहाँ 'शेल/कमांड' का उपयोग कर रहा है।

'हैंडलर्स' के बिना प्लेबुक - अनावश्यक रीस्टार्ट और सर्विस जिटर।

सार्वजनिक 'समूह _ vars' में रहस्यों का भंडारण।

'सेरियल '/' मैक्स _ फेल _ प्रतिशत' ड्यूरिंग प्रोडक्शन वेव डिक्लेशन की अनुपस्थिति।

वैश्विक 'इकट्ठा करें तथ्य: सही' और 'बन जाओ: सही' अनावश्यक।

अणु परीक्षण के बिना और '-- चेक' समर्थन के बिना भूमिकाएँ।

पूरी लहर को अवरुद्ध करने वाले 'एसिंक/पोल' के बिना लंबे आदेश।

कार्यान्वयन जाँच सूची

1. भंडार ढांचे और नामकरण सम्मेलनों पर सहमति।

2. गतिशील सूची और गढ़ कॉन्फ़िगर करें।

3. भूमिकाएँ बनाएं (वेबप/सख्त/निगरानी) और संग्रह के पिन संस्करण।

4. गुप्त प्रबंधक के साथ तिजोरी और/या एकीकरण सक्षम करें।

5. पहचान सुनिश्चित करें, '--check/--diff', हैंडलर और टैग.

6. एंसिबल-लिंट, यामलिंट, अणु को सीआई से कनेक्ट करें।

7. तैनात पैटर्न (रोलिंग/कैनरी/ब्लू-ग्रीन) और 'सेरियल' सीमाओं का वर्णन करें।

8. कॉलबैक प्लगइन जोड़ें, लॉग संग्रह, रिपोर्ट बदलें।

9. दस्तावेज़ रोलबैक रनबुक और घटना क्रियाएं।

10. नियमित रूप से गेम-डे रखें: एसएसएच ब्रेक, नोड ड्रॉप, संस्करण रोलबैक।

परिणाम

एनीबल ने बनाए गए बुनियादी ढांचे और काम करने वाली बिक्री के बीच "अंतिम मील" को बंद कर दिया: कॉन्फ़िगरेशन और रिलीज़ के लिए त्वरित, सुरक्षित और अनुमानित परिवर एक न्यूनतम पुन: उपयोग इकाई, गतिशील इन्वेंट्री, सही गुप्त हैंडलिंग और सत्यापित शून्य-डाउनटाइम पैटर्न के रूप में भूमिका के साथ, Anible iGaming टीमों को टाइम-टू-डिप्लॉय को कम करने, रात की घटनाओं को कम करने में मदद करता है।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

Telegram
@Gamble_GC
इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।