Quando eu uso ansible module expect, eu recebo esta msg: O módulo pexpect python é necessário

1

Algum código do arquivo yml:

- name: --- run /opt/installer/bin/install.sh ---
  expect:
      command: /opt/installer/bin/install.sh
      responses:
        'Are you installing the application at the central data center? [yes/no default: yes]? [yes]': "\n"
        'What is the code of central data center [default: 01]? [01]': "\n"
        'What is ip or hostname of your server [default: localhost]? [localhost]': 'portal'

e instalei pexpect 3.3 modules nos dois servidores ( ansible e target machines ).

[root@portal pexpect-3.3]# python setup.py install
running install
running build
running build_py
running install_lib
running install_egg_info
Removing /usr/lib/python2.7/site-packages/pexpect-3.3-py2.7.egg-info
Writing /usr/lib/python2.7/site-packages/pexpect-3.3-py2.7.egg-info

quando executo o manual, recebo este erro:

TASK [ansible-portal : --- run /opt/installer/bin/install.sh ---] *************************************************************************
fatal: [portal]: FAILED! => {"changed": false, "msg": "The pexpect python module is required"}

Mais informações:

[root@ansible ansible]# ansible --version
ansible 2.4.2.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
    
por pyramid13 06.07.2018 / 15:41

1 resposta

0

Como é típico em alguns dos módulos em ansible você precisa instalar certos módulos do Python no lado do servidor remoto.

Você pode usar o módulo pip para facilitar isso através do seu ansible playbook da seguinte forma:

- name install pexpect
  pip:
    name: pexpect
  become: yes

Sua distro também pode estar disponível como arquivos DEB ou RPM. Se assim for, você pode querer instalar este módulo Python usando o gerenciador de pacotes da distro.

No seu caso, é provável que o Python em que você instalou o módulo pexpect não seja o mesmo que o ansible está usando. Neste caso, eu usaria o gerenciador de pacotes do sistema para instalar o pexpect .

via gerenciadores de pacotes

em sistemas Debian / Ubuntu o DEB é:

$ sudo apt-get install python-pexpect

Em distribuições Redhat (Fedora / CentOS):

$ sudo yum install -y pexpect

Referências

por 06.07.2018 / 16:27