Vyhledávání na webu

Jak opravit chybu „Sdílené připojení k x.x.xx uzavřeno“ Ansible Error


V tomto krátkém článku si vysvětlíme, jak vyřešit: „module_stderr“: „Sdílené připojení k x.x.x.x uzavřeno.\r\n“, „module_stdout“: „/bin/sh: /usr/ bin/python: Žádný takový soubor nebo adresář\r\n“, při spouštění příkazů Ansible.

Následující snímek obrazovky ukazuje chybu modulu Ansible. Na tuto chybu jsme narazili při spouštění příkazu Ansible k provádění příkazů na dvou nově nasazených serverech CentOS 8.

Podle podrobností o chybě se připojení nezdařilo, protože shell(y) ve vzdáleném systému nemohly najít interpret Python (/usr/bin/python), jak je uvedeno řádek: „module_stdout“: „/bin/sh: /usr/bin/python: Žádný takový soubor nebo adresář\r\n“.

Po kontrole vzdálených hostitelů jsme zjistili, že systémy nemají nainstalovaný Python 2.

Ve výchozím nastavení mají nainstalovaný Python 3 a jeho binární soubor je /usr/bin/python3.

Podle dokumentace Ansible funguje Ansible (2.5 a vyšší) pouze s Pythonem verze 3 a vyšší. Ansible má také automaticky detekovat a používat Python 3 na mnoha platformách, které jsou s ním dodávány.

Pokud se to však nepodaří, můžete interpret Python 3 explicitně nakonfigurovat nastavením proměnné inventáře ansible_python_interpreter na úrovni skupiny nebo hostitele na umístění interpretu Pythonu 3, jak je popsáno níže.

Předání Python Interpreteru Ansible na příkazovém řádku

Chcete-li výše uvedenou chybu dočasně opravit, můžete použít příznak -e k předání interpretu Pythonu 3 do Ansible, jak je znázorněno.

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

Nastavení Python Interpreter pro Ansible v inventáři

Chcete-li chybu trvale opravit, nastavte proměnnou inventáře ansible_python_interpreter v inventáři /etc/ansible/hosts. Můžete jej otevřít pro úpravy pomocí textového editoru v/im nebo nano, jak je znázorněno.

sudo vim /etc/ansible/hosts
OR
vim /etc/ansible/hosts

Ke každému hostiteli nebo hostitelům ve skupině připojte následující řádek:

ansible_python_interpreter=/usr/bin/python3

Takže definice vašich hostitelů mohou vypadat takto:

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

Případně nastavte stejný interpret Pythonu pro skupinu hostitelů, jak je znázorněno.

[prod_servers]
192.168.10.1		
192.168.10.20		

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

Nastavení výchozího interpretu Pythonu v konfiguraci Ansible

Chcete-li nastavit výchozí interpret Pythonu, můžete nastavit proměnnou inventáře ansible_python_interpreter v hlavním konfiguračním souboru Ansible /etc/ansible/ansible.cfg.

sudo vim /etc/ansible/ansible.cfg

Přidejte následující řádek pod sekci [výchozí].

ansible_python_interpreter=/usr/bin/python3

Uložte soubor a zavřete jej.

Nyní zkuste spustit příkaz Ansible ještě jednou:

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

Další informace o tomto tématu najdete v tématu podpora Pythonu 3 v oficiální dokumentaci Ansible.