web-dev-qa-db-ja.com

ansible module expectを使用すると、次のメッセージが表示されます:pexpect python module is required

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'

とインストールしましたpexpect 3.3両方のサーバー上のモジュール(ansibleおよびターゲット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

プレイブックを実行すると、次のエラーが発生します。

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

詳しくは :

[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)]
2
pyramid13

ansibleの一部のモジュールでは一般的なように、特定のPythonモジュールをリモートサーバー側にインストールする必要があります。

pipモジュールを使用すると、次のようにansibleプレイブックを通じてこれを容易にすることができます。

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

ディストリビューションでは、これらをDEBまたはRPMファイルとしても利用できる場合があります。もしそうなら、代わりにディストリビューションのパッケージマネージャーを使用して、このPython=モジュールをインストールすることをお勧めします。

あなたの場合、Pythonをインストールしたpexpectモジュールは、ansibleが使用しているものと同じではない可能性があります。この場合、私はインストールするシステムのパッケージマネージャーpexpect

パッケージマネージャー経由

debian/Ubuntuシステムでは、DEBは次のとおりです。

$ Sudo apt-get install python-pexpect

Redhatディストリビューション(Fedora/CentOS)の場合:

$ Sudo yum install -y pexpect

参考文献

4
slm