അൻസിബിൾ മാനേജ്ഡ് നോഡുകൾ എങ്ങനെ കോൺഫിഗർ ചെയ്യാം, അഡ്-ഹോക്ക് കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുക - ഭാഗം 3
ഈ സെറ്റിംഗ് അൻസിബിൾ കൺട്രോൾ നോഡിന്റെ മുമ്പത്തെ രണ്ട് ലേഖനങ്ങളിൽ. ഈ ഭാഗം 3 ൽ, റിമോട്ട് ഹോസ്റ്റുകളിൽ അഡ്-ഹോക്ക് കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുന്നതിന് നിങ്ങൾക്ക് എങ്ങനെ അൻസിബിൾ മാനേജ് ചെയ്ത നോഡുകൾ കോൺഫിഗർ ചെയ്യാമെന്ന് ഞങ്ങൾ കാണിക്കും.
അൻസിബിൾ നിയന്ത്രിത നോഡുകളിലേക്ക് പാസ്uവേഡ് ഇല്ലാത്ത SSH പ്രാമാണീകരണം സജ്ജീകരിക്കുക
ഞങ്ങളുടെ അവസാന വിഷയത്തിന്റെ ഒരു റീക്യാപ്പ് എന്ന നിലയിൽ, Ansible ഉപയോഗിച്ച് റിമോട്ട് ഹോസ്റ്റുകൾ കൈകാര്യം ചെയ്യുന്നതിന് Ansible കൺട്രോൾ നോഡിനും മാനേജ് ചെയ്ത ഹോസ്റ്റുകൾക്കുമിടയിൽ പാസ്uവേഡ് ഇല്ലാത്ത SSH പ്രാമാണീകരണം സജ്ജീകരിക്കേണ്ടതുണ്ട്. അൻസിബിൾ കൺട്രോൾ നോഡിൽ ഒരു കീ ജോഡി (പബ്ലിക്, പ്രൈവറ്റ് എസ്എസ്എച്ച് കീ ജോഡി) ജനറേറ്റുചെയ്യുന്നതും എല്ലാ റിമോട്ട് ഹോസ്റ്റുകളിലേക്കും പബ്ലിക് കീ പകർത്തുന്നതും ഇതിൽ ഉൾപ്പെടുന്നു. ഇത് മുന്നോട്ട് പോകുന്ന ഒരു നിർണായക ചുവടുവെയ്പ്പായിരിക്കും കൂടാതെ നിങ്ങളുടെ ജോലി വളരെ എളുപ്പമാക്കുകയും ചെയ്യും.
നിയന്ത്രിത നോഡുകളിൽ പ്രിവിലേജ് എസ്കലേഷൻ കോൺഫിഗർ ചെയ്യുക
ഒരു സാധാരണ ഉപയോക്താവായി ലോഗിൻ ചെയ്യുമ്പോൾ, നിയന്ത്രിത നോഡുകളിൽ ഉയർന്ന പ്രത്യേകാവകാശങ്ങളോ റൂട്ട് പ്രത്യേകാവകാശങ്ങളോ ആവശ്യമായ ചില ജോലികൾ നിങ്ങൾ ചെയ്യേണ്ടതായി വന്നേക്കാം. ഈ ടാസ്ക്കുകളിൽ പാക്കേജ് മാനേജ്മെന്റ് ഉൾപ്പെടുന്നു, പുതിയ ഉപയോക്താക്കളെയും ഗ്രൂപ്പുകളെയും ചേർക്കുന്നു, കൂടാതെ കുറച്ച് മാത്രം പരാമർശിക്കുന്നതിനായി സിസ്റ്റം കോൺഫിഗറേഷനുകൾ പരിഷ്ക്കരിക്കുന്നു. ഇത് നേടുന്നതിന്, റിമോട്ട് ഹോസ്റ്റുകളിൽ ഒരു പ്രത്യേക ഉപയോക്താവായി ടാസ്uക്കുകൾ പ്രവർത്തിപ്പിക്കുന്നതിന് നിങ്ങൾ പ്ലേബുക്കിൽ ചില നിർദ്ദേശങ്ങൾ നൽകേണ്ടതുണ്ട്.
നിലവിൽ ലോഗിൻ ചെയ്uതിരിക്കുന്നതിൽ നിന്ന് വ്യത്യസ്uതമായി നിയന്ത്രിത നോഡിൽ മറ്റൊരു ഉപയോക്താവായി മാറാൻ Ansible നിങ്ങളെ അനുവദിക്കുന്നു. become:yes
നിർദ്ദേശം നിങ്ങളുടെ പ്രത്യേകാവകാശങ്ങൾ ഉയർത്തുകയും ഇൻസ്റ്റാളുചെയ്യൽ പോലുള്ള റൂട്ട് പ്രത്യേകാവകാശങ്ങൾ ആവശ്യമുള്ള ജോലികൾ ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുകയും ചെയ്യുന്നു. പാക്കേജുകൾ പുതുക്കുകയും സിസ്റ്റം റീബൂട്ട് ചെയ്യുകയും ചെയ്യുന്നു.
കാണിച്ചിരിക്കുന്നതുപോലെ അപ്പാച്ചെ വെബ്uസെർവർ ഇൻസ്റ്റാൾ ചെയ്യുകയും ആരംഭിക്കുകയും ചെയ്യുന്ന ഒരു പ്ലേബുക്ക് httpd.yml
പരിഗണിക്കുക:
--- - name: install and start Apache webserver hosts: webservers tasks: - name: install httpd yum: name=httpd state=latest become: yes - name: check httpd status service: name=httpd state=started
റിമോട്ട് ഹോസ്റ്റിൽ ഒരു റൂട്ട് ഉപയോക്താവായി കമാൻഡുകൾ എക്സിക്യൂട്ട് ചെയ്യാൻ ആകുക: അതെ
നിർദ്ദേശം നിങ്ങളെ അനുവദിക്കുന്നു.
മറ്റൊരു ഉപയോക്താവാകാൻ നിങ്ങൾക്ക് ഉപയോഗിക്കാവുന്ന മറ്റൊരു നിർദ്ദേശം become_user ആണ്. ലോഗിൻ ചെയ്യുമ്പോൾ റിമോട്ട് ഹോസ്റ്റിലെ ഒരു സുഡോ ഉപയോക്താവിലേക്ക് മാറാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു, നിങ്ങൾ ലോഗിൻ ചെയ്യുന്ന ഉപയോക്താവിനെയല്ല.
ഉദാഹരണത്തിന്, റിമോട്ടിൽ tecmint ഉപയോക്താവായി ഒരു കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നതിന് കാണിച്ചിരിക്കുന്നതുപോലെ നിർദ്ദേശം ഉപയോഗിക്കുക.
- name: Run a command as the apache user command: somecommand become: yes become_user: tecmint
സാധാരണയായി sudo ആയി സജ്ജീകരിച്ചിരിക്കുന്ന ansible.cfg ഫയലിൽ സജ്ജീകരിച്ചിട്ടുള്ള ഡിഫോൾട്ട് രീതിയെ ഈ നിർദ്ദേശം അസാധുവാക്കും.
ഇവ പ്ലേ അല്ലെങ്കിൽ ടാസ്uക് ലെവലിൽ ഉപയോഗിക്കുന്നു, ഉദാഹരണത്തിന് ഷെൽ നോലോഗിൻ ആയി സജ്ജീകരിക്കുമ്പോൾ ഒരു ഉപയോക്താവിലേക്ക് മാറേണ്ടി വരുമ്പോൾ.
ഉദാഹരണത്തിന്,
- name: Run a command as nobody command: somecommand become: true become_method: su become_user: nobody become_flags: '-s /bin/sh'
പ്രിവിലേജ് എസ്കലേഷനിലെ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ
കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുമ്പോൾ നിങ്ങളുടെ പ്രത്യേകാവകാശങ്ങൾ ഉയർത്താൻ നിങ്ങൾക്ക് ഉപയോഗിക്കാവുന്ന ചില കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ നോക്കാം:
--ask-become-pass
,-K
– നിങ്ങൾ കണക്uറ്റ് ചെയ്യാൻ ശ്രമിക്കുന്ന റിമോട്ട് സിസ്റ്റത്തിലെ സുഡോ ഉപയോക്താവിന്റെ പാസ്uവേഡിനായി ഇത് നിങ്ങളെ പ്രേരിപ്പിക്കുന്നു.< /ലി>
$ ansible-playbook myplaybook.yml --ask-become-pass
--become
,-b
- ഒരു പാസ്uവേഡ് ആവശ്യപ്പെടാതെ തന്നെ ഒരു റൂട്ട് ഉപയോക്താവായി ടാസ്uക് പ്രവർത്തിപ്പിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.
$ ansible-playbook myplaybook.yml --become
--become-user=BECOME_USER
- മറ്റൊരു ഉപയോക്താവായി ടാസ്uക്കുകൾ പ്രവർത്തിപ്പിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.
$ ansible-playbook myplaybook.yml --become-user=tecmint
Ad-Hoc Ansible കമാൻഡുകൾ ഉപയോഗിച്ച് ഒരു വർക്കിംഗ് കോൺഫിഗറേഷൻ സാധൂകരിക്കുക
ചിലപ്പോൾ, ഒരു പ്ലേബുക്ക് സൃഷ്uടിക്കാതെ തന്നെ അൻസിബിളിലെ റിമോട്ട് ഹോസ്റ്റുകളിലോ സെർവറുകളിലോ വേഗമേറിയതും ലളിതവുമായ ജോലികൾ ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിച്ചേക്കാം. അങ്ങനെയെങ്കിൽ, നിങ്ങൾ ഒരു ad-hoc കമാൻഡ് പ്രവർത്തിപ്പിക്കേണ്ടതുണ്ട്.
പ്ലേബുക്കുകൾ സൃഷ്uടിക്കാതെ തന്നെ ലളിതമായ ടാസ്uക്കുകൾ ലളിതവും കാര്യക്ഷമവുമായ രീതിയിൽ നിർവ്വഹിക്കാൻ നിങ്ങളെ സഹായിക്കുന്ന ഒരു വൺ-ലൈൻ കമാൻഡ് ആണ് അൻസിബിൾ അഡ്-ഹോക്ക് കമാൻഡ്. അത്തരം ജോലികളിൽ ഹോസ്റ്റുകൾക്കിടയിൽ ഫയലുകൾ പകർത്തുക, സെർവറുകൾ റീബൂട്ട് ചെയ്യുക, ഉപയോക്താക്കളെ ചേർക്കുകയും നീക്കം ചെയ്യുകയും ചെയ്യുക, ഒരൊറ്റ പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യുക എന്നിവ ഉൾപ്പെടുന്നു.
ഈ ട്യൂട്ടോറിയലിൽ, ഞങ്ങൾ Ansible Ad-Hoc കമാൻഡുകളുടെ വിവിധ ആപ്ലിക്കേഷനുകൾ പര്യവേക്ഷണം ചെയ്യുന്നു. ഒരു പ്രകടനത്തിനായി ഞങ്ങൾ താഴെയുള്ള ഇൻവെന്ററി ഫയൽ ഉപയോഗിക്കാൻ പോകുന്നു.
[webservers] 173.82.115.165 [database_servers] 173.82.202.239
Ansible-Adhoc കമാൻഡുകളുടെ ഏറ്റവും അടിസ്ഥാനപരമായ ഉപയോഗം ഒരു ഹോസ്റ്റ് അല്ലെങ്കിൽ ഒരു കൂട്ടം ഹോസ്റ്റുകൾ പിംഗ് ചെയ്യുക എന്നതാണ്.
# ansible -m ping all
മുകളിലുള്ള കമാൻഡിൽ, -m
പാരാമീറ്റർ മൊഡ്യൂൾ ഓപ്ഷനാണ്. Ping എന്നത് adhoc കമാൻഡ് ആണ്, രണ്ടാമത്തെ പാരാമീറ്റർ എല്ലാം ഇൻവെന്ററി ഫയലിലെ എല്ലാ ഹോസ്റ്റുകളെയും പ്രതിനിധീകരിക്കുന്നു. കമാൻഡിന്റെ ഔട്ട്പുട്ട് താഴെ കാണിച്ചിരിക്കുന്നു:
ഹോസ്റ്റുകളുടെ ഒരു പ്രത്യേക ഗ്രൂപ്പ് പിംഗ് ചെയ്യുന്നതിന്, ഗ്രൂപ്പിന്റെ പേര് ഉപയോഗിച്ച് 'എല്ലാം' പാരാമീറ്റർ മാറ്റിസ്ഥാപിക്കുക. ചുവടെയുള്ള ഉദാഹരണത്തിൽ, വെബ്സെർവർ ഗ്രൂപ്പിന് കീഴിലുള്ള ഹോസ്റ്റുകളുമായുള്ള കണക്റ്റിവിറ്റി ഞങ്ങൾ പരിശോധിക്കുന്നു.
# ansible -m ping webservers
കൂടാതെ, ഇരട്ട ഉദ്ധരണി ചിഹ്നങ്ങളിൽ സാധാരണ ലിനക്സ് കമാൻഡുകൾ വ്യക്തമാക്കുന്നതിന് നിങ്ങൾക്ക് -a
ആട്രിബ്യൂട്ട് ഉപയോഗിക്കാം. ഉദാഹരണത്തിന്, റിമോട്ട് സിസ്റ്റങ്ങളുടെ സിസ്റ്റം പ്രവർത്തനസമയം പരിശോധിക്കാൻ, പ്രവർത്തിപ്പിക്കുക:
# ansible -a "uptime" all
റിമോട്ട് ഹോസ്റ്റുകളുടെ ഡിസ്ക് ഉപയോഗം പരിശോധിക്കാൻ റൺ ചെയ്യുക.
# ansible -a "df -Th" all
നിങ്ങൾക്ക് Adhoc കമാൻഡ് ഉപയോഗിച്ച് ഉപയോഗിക്കാനാകുന്ന നൂറുകണക്കിന് നൂറുകണക്കിന് മൊഡ്യൂളുകൾ ഉണ്ട്. മൊഡ്യൂളുകളുടെ മുഴുവൻ ലിസ്റ്റും അവയുടെ വിവരണങ്ങളോടൊപ്പം കാണുന്നതിന്, താഴെയുള്ള കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.
# ansible-doc -l
ഒരു പ്രത്യേക മൊഡ്യൂളിനെക്കുറിച്ചുള്ള വിശദമായ വിവരങ്ങൾ കാണുന്നതിന്, കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.
# ansible-doc module_name
ഉദാഹരണത്തിന്, yum മൊഡ്യൂൾ റണ്ണിനെക്കുറിച്ചുള്ള കൂടുതൽ വിശദാംശങ്ങൾക്കായി തിരയാൻ:
# ansible-doc yum
yum, apt പാക്കേജ് മാനേജർമാർ ഉപയോഗിച്ച് പാക്കേജുകൾ ഇൻസ്റ്റാളുചെയ്യുന്നതിനും നീക്കം ചെയ്യുന്നതിനും Ansible adhoc കമാൻഡുകൾ ഉപയോഗിക്കാം.
ഇൻവെന്ററി ഫയലിലെ വെബ്uസെർവേഴ്uസ് ഗ്രൂപ്പിന് കീഴിലുള്ള CentOS 7 ഹോസ്റ്റിൽ Apache വെബ് സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:
# ansible webservers -m yum -a "name=httpd state=present"
അപ്പാച്ചെ വെബ് സെർവറിന്റെ ഇൻസ്റ്റാളേഷൻ പരിശോധിക്കുന്നതിന്, റിമോട്ട് ക്ലയന്റിലേക്ക് ലോഗിൻ ചെയ്uത് പ്രവർത്തിപ്പിക്കുക.
# rpm -qa | grep httpd
അപ്പാച്ചെ അൺഇൻസ്റ്റാൾ ചെയ്യാൻ, നിലവിലുള്ളതിൽ നിന്ന് ആഭാസത്തിലേക്ക് മാറ്റുക.
# ansible webservers -m yum -a "name=httpd state=absent"
വീണ്ടും, httpd റൺ നീക്കം ചെയ്യുന്നത് സ്ഥിരീകരിക്കാൻ.
# rpm -qa | grep httpd
നിരീക്ഷിച്ചതുപോലെ, അപ്പാച്ചെ വെബ് സെർവർ പാക്കേജുകൾ ശുദ്ധീകരിച്ചു.
ഉപയോക്താക്കളെ സൃഷ്ടിക്കുമ്പോൾ, 'ഉപയോക്തൃ' മൊഡ്യൂൾ ഉപയോഗപ്രദമാകും. ക്ലയന്റ് സിസ്റ്റം database_server-ൽ redhat പാസ്uവേഡ് ഉപയോഗിച്ച് ഒരു പുതിയ യൂസർ ജെയിംസ് സൃഷ്uടിക്കുന്നതിന്, കമാൻഡ് നൽകുക.
# ansible database_server -m user -a "name=james password=redhat"
പുതിയ ഉപയോക്താവിന്റെ സൃഷ്ടി സ്ഥിരീകരിക്കുന്നതിന്, കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:
# ansible database_servers -a "id james"
ഉപയോക്താവിനെ നീക്കംചെയ്യുന്നതിന്, കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:
# ansible database_servers -m user -a "name=james state=absent"
നിങ്ങൾ ഒരു സാധാരണ ഉപയോക്താവ് എന്ന നിലയിലാണ് അൻസിബിൾ പ്രവർത്തിപ്പിക്കുന്നതെങ്കിൽ, റൂട്ട് പ്രത്യേകാവകാശങ്ങൾ നേടുന്നതിന് --become
ഓപ്ഷനും പാസ്uവേഡ് ആവശ്യപ്പെടുന്നതിന് -k
-ഉം ഉപയോഗിച്ച് റിമോട്ട് ഹോസ്റ്റുകളിൽ Ansible പ്രിവിലേജ് എസ്കലേഷൻ നൽകുന്നു.
ഉദാഹരണത്തിന്, 'netstat -pnltu' എന്ന പ്രിവിലേജഡ് ഓപ്uഷൻ ഉപയോഗിച്ച് Ansible adhoc കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നതിന് –-become
കൂടാതെ കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നതിന് റൂട്ട് ഉപയോക്താവിന്റെ പാസ്uവേഡ് ആവശ്യപ്പെടുന്നതിന് -K
ഓപ്ഷനും. .
$ ansible webservers -m shell -a 'netstat -pnltu' --become -K
റൂട്ട് അല്ലാതെ മറ്റൊരു ഉപയോക്താവാകാൻ, --become-user
ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുക.
ഉദാഹരണത്തിന് റിമോട്ട് ഹോസ്റ്റുകളിൽ 'df -Th' tecmint ഉപയോക്താവായി പ്രവർത്തിപ്പിക്കുന്നതിനും പാസ്uവേഡ് റൺ ചെയ്യുന്നതിനായി ആവശ്യപ്പെടുന്നതിനും:
$ ansible all -m shell -a 'df -Th' --become-user tecmint -K
ഒരു സിസ്റ്റത്തെക്കുറിച്ചുള്ള വിശദമായ വിവരങ്ങളെയാണ് വസ്തുതകൾ സൂചിപ്പിക്കുന്നത്. ഇതിൽ IP വിലാസം, സിസ്റ്റം ആർക്കിടെക്ചർ, മെമ്മറി, CPU എന്നിവയെക്കുറിച്ചുള്ള വിവരങ്ങൾ ഉൾപ്പെടുന്നു.
റിമോട്ട് ഹോസ്റ്റുകളെക്കുറിച്ചുള്ള വിവരങ്ങൾ വീണ്ടെടുക്കുന്നതിന്, കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:
$ ansible all -m setup
അൻസിബിൾ കൺട്രോളിൽ നിന്ന് ഒന്നിലധികം റിമോട്ട് ഹോസ്റ്റുകളിലേക്ക് ഫയലുകൾ സുരക്ഷിതമായി പകർത്താൻ അൻസിബിൾ മൊഡ്യൂൾ കോപ്പി ഉപയോഗിക്കുന്നു.
ഒരു കോപ്പി ഓപ്പറേഷന്റെ ഒരു ഉദാഹരണം ചുവടെ:
# ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"
കമാൻഡ് അൻസിബിൾ കൺട്രോൾ നോഡിലെ /var/log/secure ഫയൽ /tmp ഡെസ്റ്റിനേഷനിലെ വെബ്സെർവർ ഗ്രൂപ്പിലെ റിമോട്ട് ഹോസ്റ്റുകളിലേക്ക് പകർത്തുന്നു.
അനുമതികളും ഫയൽ ഉടമസ്ഥതയും മാറ്റാൻ നിങ്ങൾക്ക് ഫയൽ മൊഡ്യൂൾ ഉപയോഗിക്കാം.
# ansible webservers -m file -a "dest=/tmp/secure mode=600"
കൂടാതെ, കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങൾക്ക് ഉടമയെയും ഗ്രൂപ്പ് ആർഗ്യുമെന്റുകളും ചേർക്കാം:
# ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"
കാണിച്ചിരിക്കുന്നതുപോലെ mkdir -p
എന്നതിന് സമാനമായ രീതിയിൽ നിങ്ങൾക്ക് ഡയറക്ടറികൾ സൃഷ്ടിക്കാനും കഴിയും.
$ ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"
ഉദാഹരണത്തിന്,
$ ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"
ഈ ലേഖനത്തിൽ, റിമോട്ട് ഹോസ്റ്റുകൾ മാനേജുചെയ്യുന്നതിന് അൻസിബിൾ അഡ്-ഹോക്ക് കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുന്നതിന് നിയന്ത്രിത നോഡുകൾ എങ്ങനെ കോൺഫിഗർ ചെയ്യാം എന്നതിനെക്കുറിച്ച് ഞങ്ങൾ വെളിച്ചം വീശുന്നു. നിങ്ങൾക്ക് ഇത് ഉപയോഗപ്രദമാണെന്ന് ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു. ഒരു ഷോട്ട് നൽകൂ, അത് എങ്ങനെ സംഭവിച്ചുവെന്ന് ഞങ്ങളെ അറിയിക്കൂ.