x.x.xx-ലേക്കുള്ള പങ്കിട്ട കണക്ഷൻ അടച്ചു അൻസിബിൾ പിശക് എങ്ങനെ പരിഹരിക്കാം


ഈ ചെറിയ ലേഖനത്തിൽ, എങ്ങനെ പരിഹരിക്കാമെന്ന് ഞങ്ങൾ വിശദീകരിക്കും: module_stderr: x.x.x.x-ലേക്കുള്ള പങ്കിട്ട കണക്ഷൻ അടച്ചു. ”, “module_stdout”: “/bin/sh: /usr/bin/python: അത്തരം ഫയലോ ഡയറക്ടറിയോ ഇല്ല ”, അൻസിബിൾ കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുമ്പോൾ.

ഇനിപ്പറയുന്ന സ്ക്രീൻഷോട്ട് അൻസിബിൾ മൊഡ്യൂൾ പിശക് കാണിക്കുന്നു. പുതുതായി വിന്യസിച്ചിരിക്കുന്ന രണ്ട് CentOS 8 സെർവറുകളിൽ കമാൻഡുകൾ എക്സിക്യൂട്ട് ചെയ്യുന്നതിനായി ഒരു Ansible കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നതിനിടെ ഞങ്ങൾക്ക് ഈ പിശക് നേരിട്ടു.

module_stdout: /bin/sh:/എന്ന വരിയിൽ സൂചിപ്പിച്ചിരിക്കുന്നതുപോലെ റിമോട്ട് സിസ്റ്റത്തിലെ ഷെല്ലിന് (/usr/bin/python) പൈത്തൺ ഇന്റർപ്രെറ്റർ കണ്ടെത്താൻ കഴിയാത്തതിനാൽ, പിശക് വിശദാംശങ്ങളിൽ നിന്ന്, കണക്ഷൻ പരാജയപ്പെട്ടു. usr/bin/python: അത്തരം ഫയലോ ഡയറക്ടറിയോ ഇല്ല .

റിമോട്ട് ഹോസ്റ്റുകൾ പരിശോധിച്ച ശേഷം, സിസ്റ്റങ്ങളിൽ പൈത്തൺ 2 ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെന്ന് ഞങ്ങൾ കണ്ടെത്തി.

അവർ പൈത്തൺ 3 സ്ഥിരസ്ഥിതിയായി ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ട്, അതിന്റെ ബൈനറി /usr/bin/python3 ആണ്.

Ansible ഡോക്യുമെന്റേഷൻ അനുസരിച്ച്, Ansible (2.5 ഉം അതിനുമുകളിലും) പൈത്തൺ പതിപ്പ് 3-ലും അതിനുമുകളിലും മാത്രം പ്രവർത്തിക്കുന്നു. കൂടാതെ, അൻസിബിൾ സ്വയമേവ പൈത്തൺ 3 കണ്ടെത്തുകയും അതിനൊപ്പം ഷിപ്പ് ചെയ്യുന്ന പല പ്ലാറ്റ്uഫോമുകളിലും ഉപയോഗിക്കുകയും ചെയ്യും.

എന്നിരുന്നാലും, ഇത് പരാജയപ്പെട്ടാൽ, താഴെ വിവരിച്ചിരിക്കുന്നതുപോലെ ഒരു പൈത്തൺ 3 ഇന്റർപ്രെറ്ററിന്റെ സ്ഥാനത്തേക്ക് ഒരു ഗ്രൂപ്പിലോ ഹോസ്റ്റ് തലത്തിലോ ansible_python_interpreter ഇൻവെന്ററി വേരിയബിൾ സജ്ജീകരിച്ചുകൊണ്ട് നിങ്ങൾക്ക് ഒരു പൈത്തൺ 3 ഇന്റർപ്രെറ്റർ വ്യക്തമായി കോൺഫിഗർ ചെയ്യാം.

കമാൻഡ് ലൈനിൽ അൻസിബിളിന് പൈത്തൺ ഇന്റർപ്രെറ്റർ കൈമാറുന്നു

മുകളിലുള്ള പിശക് താൽക്കാലികമായി പരിഹരിക്കുന്നതിന്, കാണിച്ചിരിക്കുന്നതുപോലെ പൈത്തൺ 3 ഇന്റർപ്രെറ്ററിനെ അൻസിബിളിലേക്ക് കൈമാറാൻ നിങ്ങൾക്ക് -e ഫ്ലാഗ് ഉപയോഗിക്കാം.

$ ansible prod_servers  -e 'ansible_python_interpreter=/usr/bin/python3' -a "systemctl status firewalld" -u root

ഇൻവെന്ററിയിൽ അൻസിബിളിനായി പൈത്തൺ ഇന്റർപ്രെറ്റർ സജ്ജീകരിക്കുന്നു

പിശക് ശാശ്വതമായി പരിഹരിക്കുന്നതിന്, നിങ്ങളുടെ ഇൻവെന്ററി /etc/ansible/hosts-ൽ ansible_python_interpreter ഇൻവെന്ററി വേരിയബിൾ സജ്ജമാക്കുക. കാണിച്ചിരിക്കുന്നത് പോലെ v/im അല്ലെങ്കിൽ നാനോ ടെക്സ്റ്റ് എഡിറ്റർ ഉപയോഗിച്ച് നിങ്ങൾക്ക് എഡിറ്റ് ചെയ്യുന്നതിനായി ഇത് തുറക്കാവുന്നതാണ്.

$ sudo vim /etc/ansible/hosts
OR
# vim /etc/ansible/hosts

ഒരു ഗ്രൂപ്പിലെ ഓരോ ഹോസ്റ്റ് അല്ലെങ്കിൽ ഹോസ്റ്റുകൾക്കും ഇനിപ്പറയുന്ന വരി കൂട്ടിച്ചേർക്കുക:

ansible_python_interpreter=/usr/bin/python3

അതിനാൽ, നിങ്ങളുടെ ഹോസ്റ്റുകളുടെ നിർവചനങ്ങൾ ഇതുപോലെയാകാം:

[prod_servers]
192.168.10.1			ansible_python_interpreter=/usr/bin/python3
192.168.10.20			ansible_python_interpreter=/usr/bin/python3.6

പകരമായി, കാണിച്ചിരിക്കുന്നതുപോലെ ഒരു കൂട്ടം ഹോസ്റ്റുകൾക്കായി അതേ പൈത്തൺ ഇന്റർപ്രെറ്റർ സജ്ജമാക്കുക.

[prod_servers]
192.168.10.1		
192.168.10.20		

[prod_servers:vars]
ansible_python_interpreter=/usr/bin/python3

അൻസിബിൾ കോൺഫിഗറേഷനിൽ ഡിഫോൾട്ട് പൈത്തൺ ഇന്റർപ്രെറ്റർ സജ്ജീകരിക്കുന്നു

ഡിഫോൾട്ട് പൈത്തൺ ഇന്റർപ്രെറ്റർ സജ്ജീകരിക്കുന്നതിന്, നിങ്ങൾക്ക് Ansible-ന്റെ പ്രധാന കോൺഫിഗറേഷൻ ഫയലായ /etc/ansible/ansible.cfg-ൽ ansible_python_interpreter ഇൻവെന്ററി വേരിയബിൾ സജ്ജമാക്കാൻ കഴിയും.

$ sudo vim /etc/ansible/ansible.cfg

[defaults] വിഭാഗത്തിന് കീഴിൽ ഇനിപ്പറയുന്ന വരി ചേർക്കുക.

ansible_python_interpreter=/usr/bin/python3

ഫയൽ സംരക്ഷിച്ച് അത് അടയ്ക്കുക.

ഇപ്പോൾ ഒരിക്കൽ കൂടി Ansible കമാൻഡ് പ്രവർത്തിപ്പിക്കാൻ ശ്രമിക്കുക:

$ ansible prod_servers -a "systemctl status firewalld" -u root

ഈ വിഷയത്തെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, ഔദ്യോഗിക അൻസിബിൾ ഡോക്യുമെന്റേഷനിലെ പൈത്തൺ 3 പിന്തുണ കാണുക.