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)]
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