डेबियन 7.1 पर Ansible AWX स्थापित करें

हमने FreeBSD पर सर्वर के एक छोटे समूह के प्रशासन को किसी तरह सरल बनाने का निर्णय लिया। ऐसा लगता है कि इनमें से एक ही सर्वर के कई सर्वर नहीं हैं, लेकिन फिर भी अक्सर एक ही कार्य को एक ही बार में पूरा करना आवश्यक है।
उन्होंने एक लंबे समय के लिए सोचा, चुना, तुलना की, और फिर भी विकल्प प्रणाली स्थापित करने के लिए विकल्प पर आए। और स्पष्टता के लिए, AWX नाम के साथ एक वेब-थूथन को जकड़ें।
लेकिन यहाँ दुर्भाग्य है, हमारे पास FreeBSD पर सर्वर है, और डेबियन को "काम करने वाला" लिनक्स के रूप में चुना गया है। Ansible AWX आधिकारिक आरएचईएल / फेडोरा और उबंटू के रूप में समर्थन करता है।
जैसा कि हम सभी याद करते हैं, उबंटू ने डेबियन को छोड़ दिया, जिसका अर्थ है कि यह पूर्वज को याद रखना चाहिए। हम यह पता लगाएंगे कि डेबियन पर AWX कैसे स्थापित करें।
प्रारंभिक डेटा: शामिल कॉन्फ़िगरेशन विकल्पों "एसएसएच सर्वर" और "सिस्टम यूटिलिटीज" के साथ नए सिरे से स्थापित डेबियन 7.1 व्हीजी।

AWX इंस्टॉलर एक sh स्क्रिप्ट है (इसके बारे में थोड़ा और नीचे), लेकिन इस स्क्रिप्ट को चलाने वाली एकमात्र चीज़ ansible के लिए playbook चलाती है, जिसका अर्थ है कि आपको इस स्क्रिप्ट को चलाने से पहले ansible को इंस्टॉल करना होगा।
root@awx:~# apt-get install ansible   …        …  E:     ansible 


लेकिन यहां मट्ठा में एक अप्रत्याशितता है यह वहां नहीं है, इसलिए आपको परीक्षण रिपॉजिटरी को कनेक्ट करना होगा। मैं यैंडेक्स दर्पण का उपयोग करता हूं, इसलिए मैंने अपनी /etc/apt/sources.list फ़ाइल में लाइन जोड़ी है)
 deb http://mirror.yandex.ru/debian/ testing main contrib non-free 


अगला, पैकेज सूचियों को अपडेट करें:
 root@awx:~# apt-get update 


और हम अपने आप को आवश्यक निर्भरता के साथ खुद को रख देते हैं:
 root@awx:~# apt-get install ansible 


हम उन सभी चीजों से सहमत हैं, जिनके साथ हम पर आरोप लगाए गए हैं और स्थापना पूर्ण होने की प्रतीक्षा कर रहे हैं। जिसके बाद हम awx डाउनलोड करते हैं, दुर्भाग्य से यह संकुल में नहीं है।
 wget http://ansibleworks.com/releases/awx/setup/awx-setup-latest.tar.gz 


उद्धरण
 root@awx:~# tar xzvf awx-setup-latest.tar.gz 


हम देखते हैं कि हमें क्या करना है।
 root@awx:~/awx-setup-1.3.1# ls group_vars myhosts README.md roles setup.sh site.yml 


README.md फ़ाइल को पढ़ने के बाद, हमें पता चलता है कि हमें Group_vars / सभी फ़ाइल में PostgreSQL के लिए प्रमाणीकरण डेटा बदलने की आवश्यकता है, साथ ही एक चेतावनी है कि pg_hba.conf और supervisord.conf को अधिलेखित किया जाएगा। इसलिए, यदि आप एक स्वच्छ प्रणाली पर नहीं डालते हैं, तो आपको उपयुक्त बैकअप बनाना चाहिए।

जबकि सब कुछ स्पष्ट है, अब विचार करें कि इंस्टॉलर जिसके बारे में पहले ही उल्लेख किया गया है, उसमें निम्न शामिल हैं:
 root@awx:~/awx-setup-1.3.1# cat setup.sh #!/bin/bash getopts "e:" EXTRA_ARGS if [ "$OPTARG" != "" ]; then echo "Running with extra args: ${OPTARG}" sudo ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -v -e "$OPTARG" site.yml else sudo ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -v site.yml fi 


यह सामग्री से देखा जा सकता है कि इस फ़ाइल का मुख्य और एकमात्र कार्य एक ही निर्देशिका से myhosts फ़ाइल (जिसमें केवल 127.0.0.1 होता है) में निर्दिष्ट नोड्स के समूह पर playbook site.yml को चलाना है। अगले -c स्थानीय पैरामीटर लक्ष्य मशीन को कमांड देने के लिए तंत्र को निर्दिष्ट करता है, हमारे मामले में, ansible और लक्ष्य मशीन समान हैं।

इसके अलावा, एक जिज्ञासु से, आप देख सकते हैं कि सूडो का उपयोग करने का सुझाव दिया गया है। लेकिन चूंकि हमारे पास डेबियन की एक साफ स्थापना है, यह सूडो है, उबंटू के विपरीत, यह शामिल नहीं है। इसलिए या तो हम कमांड डिलीट करते हैं, या हम sudo डिलीवर करते हैं।
मैंने sudo कॉल को हटा दिया और अधिक विस्तृत डीबगिंग के लिए दो और अक्षर "v" भी जोड़े।
मेरे संपादन के बाद फ़ाइल का प्रकार:
 getopts "e:" EXTRA_ARGS if [ "$OPTARG" != "" ]; then echo "Running with extra args: ${OPTARG}" ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -vvv -e "$OPTARG" site.yml else ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -vvv site.yml fi 


अब सबसे दिलचस्प फ़ाइल site.yml पर चलते हैं
 root@awx:~/awx-setup-1.3.1# cat site.yml --- # This playbook deploys the AWX application (database, web and worker) to a # single server. - hosts: all tasks: - name: group hosts by distribution group_by: key="{{ ansible_distribution }}-{{ ansible_distribution_version }}" - hosts: RedHat-6*:CentOS-6*:SL-6* user: root roles: - { role: packages_el6 } - { role: postgres, pg_hba_location: "/var/lib/pgsql/data/pg_hba.conf" } - { role: awx_install } - { role: supervisor, sup_init_name: "supervisord", sup_conf_location: "/etc/supervisord.conf" } - { role: httpd, httpd_init_name: "httpd" } - { role: iptables } - { role: misc } - hosts: Ubuntu-12*:Ubuntu-13* user: root roles: - { role: packages_ubuntu } - { role: postgres, pg_hba_location: "/etc/postgresql/9.1/main/pg_hba.conf" } - { role: awx_install } - { role: supervisor, sup_init_name: "supervisor", sup_conf_location: "/etc/supervisor/conf.d/awx.conf" } - { role: httpd, httpd_init_name: "apache2" } - { role: misc } 


डेबियन के लिए विकल्प दिखाई नहीं देता है, लेकिन पहले से ही स्क्रिप्ट के 2 तैयार संस्करण हैं, उन पर RHEL और उबंटू के आधार पर, और जैसा कि आप जानते हैं, उबंटू डेबियन का प्रत्यक्ष वंशज है। हम इसे इंस्टॉलेशन के Ubunt वर्जन के अनुसार बिल्कुल इंस्टॉल कर देंगे, इसके लिए हम इस प्लेबुक में अपने OS का उल्लेख करेंगे:
 - hosts: Ubuntu-12*:Ubuntu-13*:Debian* 


चूंकि postgresql हम संस्करण 9.3 स्थापित करेंगे, हम इसकी कॉन्फ़िगरेशन फ़ाइलों के लिए मार्ग को थोड़ा ठीक करेंगे
  - { role: postgres, pg_hba_location: "/etc/postgresql/9.3/main/pg_hba.conf" } 


अन्यथा, हमारे लिए यहां और अधिक दिलचस्प कुछ भी नहीं है।
आइए अलग-अलग भूमिकाओं के माध्यम से चलते हैं, और package_ubuntu पहला होगा
 root@awx:~/awx-setup-1.3.1# cat roles/packages_ubuntu/tasks/main.yml --- # Tasks to install required packages for awx - name: install ubuntu awx apt repository template: src=awx_repo.j2 dest=/etc/apt/sources.list.d/awx_repo.list - name: install python-pip package for ubuntu 12.04 apt: name=python-pip when: ansible_lsb.codename == "precise" - name: install django 1.5.4 via pip for ubuntu 12.04 pip: name=django version=1.5.4 when: ansible_lsb.codename == "precise" - name: install django via apt for ubuntu 12.10 or later apt: name=python-django when: ansible_lsb.codename != "precise" - name: install required packages via apt apt: name={{ item }} with_items: - apache2 - libapache2-mod-wsgi - postgresql - python-psycopg2 - python-setuptools - python-ldap - supervisor - git - subversion - mercurial - name: install awx package via apt apt: name=awx update_cache=yes force=yes state=latest 


जिस पहली टेम्पलेट लाइन में हम रुचि रखते हैं: src = awx_repo.j2 dest = / etc / apt / source.list.d / awx_repo.list - रिपॉजिटरी कनेक्शन, फ़ाइल को देखें:
 root@awx:~/awx-setup-1.3.1# cat roles/packages_ubuntu/templates/awx_repo.j2 deb {{ aw_repo_url }}/deb {{ansible_lsb.codename}} non-free 




सब कुछ स्पष्ट लगता है, 2 चर, पहले मामले में group_vars / सभी फ़ाइल में निर्दिष्ट रिपॉजिटरी URL, दूसरे मामले में ऑपरेटिंग सिस्टम कोड नाम, हमारे पास whezzy है, लेकिन चूंकि घरघराहट में रिपॉजिटरी में कुछ भी नहीं है, इसलिए हम खुद को Ubuntu Raring रिंगटोन के रूप में प्रच्छन्न करेंगे।
"मास्किंग" के बाद फ़ाइल निम्न रूप लेती है।
 root@awx:~/awx-setup-1.3.1# cat roles/packages_ubuntu/templates/awx_repo.j2 deb {{ aw_repo_url }}/deb raring non-free 


अगला भाग जाँच करता है कि क्या सटीक पैंगोलिन हमारे साथ है:
 - name: install python-pip package for ubuntu 12.04 apt: name=python-pip when: ansible_lsb.codename == "precise" - name: install django 1.5.4 via pip for ubuntu 12.04 pip: name=django version=1.5.4 when: ansible_lsb.codename == "precise" - name: install django via apt for ubuntu 12.10 or later apt: name=python-django when: ansible_lsb.codename != "precise" 


चूँकि पुराने संस्करण के Django रिपॉजिटरी में उनका (Precise Pangolin) है, और AWX लेखकों ने नया (1.5.4) वैकल्पिक तरीका रखा है। इस समस्या से हमें कोई खतरा नहीं है, इसलिए कुछ भी नहीं बदला जा सकता है। हम http के लिए हैंडलर फ़ाइल में स्थिति भी बदलते हैं, उबुनू से डेबियन तक:
 root@awx:~/awx-setup-1.3.1# cat roles/httpd/handlers/main.yml --- # Handlers for common notifications. - name: restart httpd service: name=httpd state=restarted when: ansible_distribution in ["CentOS","RedHat"] - name: restart apache2 service: name=apache2 state=restarted when: ansible_distribution in ["Ubuntu"] 


उबंटू की अंतिम पंक्ति में हम डेबियन में बदलते हैं।
निम्नलिखित पोस्टग्रेज भूमिका के लिए इसी तरह के कार्यों को करने की आवश्यकता है:
 root@awx:~/awx-setup-1.3.1# cat roles/postgres/tasks/main.yml # Tasks for configuring PostgreSQL server. - name: init postgresql command: service postgresql initdb creates=/var/lib/pgsql/data/PG_VERSION when: ansible_distribution != "Ubuntu" tags: postgresql 


अपनी उंगलियों को पार करें और चलाएं
 root@awx:~/awx-setup-1.3.1# ./setup.sh PLAY RECAP ******************************************************************** 127.0.0.1 : ok=30 changed=12 unreachable=0 failed=0 


Apache सेटअप इंस्टॉलर फ़ोल्डर में रखता है
 root@awx:~/awx-setup-1.3.1# ls /etc/apache2/conf.d awx.conf awx-plain.conf 


इस फ़ोल्डर की सामग्री मुख्य अपाचे विन्यास में शामिल नहीं है, इसलिए हमें उन्हें स्थानांतरित करने की आवश्यकता है:
 mv /etc/apache2/conf.d/awx* /etc/apache2/sites-enabled/ 


फिर कुछ भी जटिल नहीं है, अपाचे को कॉन्फ़िगर करें, डुप्लिकेट मॉड्यूल कॉल हटाएं और इसका उपयोग करें।

Source: https://habr.com/ru/post/In203502/


All Articles