この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
バンクーバーの塩谷です。
端末(Mac)からEC2インスタンスにインストールされているMySQLにAnsibleを使用してdatabaseを作成しようとしたところ、エラーが発生しました。対処に少しハマってしまったのでメモします。
エラー内容
fatal: [Instance1]: FAILED! => {"changed": false, "msg": "The MySQL-python module is required."}
fatal: [Instance1]: FAILED! => {"changed": false, "msg": "The MySQL-python module is required."}
PLAY [Instance1] *****************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************
ok: [Instance1]
TASK [create mysql database] *****************************************************************************************************
fatal: [Instance1]: FAILED! => {"changed": false, "msg": "The MySQL-python module is required."}
PLAY RECAP ***********************************************************************************************************************
Instance1 : ok=1 changed=0 unreachable=0 failed=1
Playbook側の動きとしては、 ・MySQLのインストール ・MySQL-Pythonのインストール ・データベースの作成 です。
ansibleのバージョンは2.4.3.0。
対処
MySQL-pythonモジュールが必須ですよ、とのエラーですがplaybook側でもちゃんとインストールする様に指定しているし、EC2インスタンス側でもMySQL-pythonは入っているのに何でだろう。。。と思っていたら、
Playbook(一部抜粋)
- name: Install MySQL-Python module
yum: name=MySQL-python
EC2インスタンス
# yum list installed | grep python
MySQL-python26.x86_64 1.2.3-11.14.amzn1 @amzn-main
# yum install -y MySQL-python
Loaded plugins: priorities, update-motd, upgrade-helper
Package MySQL-python26-1.2.3-11.14.amzn1.x86_64 already installed and latest version
Nothing to do
バージョン違いが原因でしたー!
EC2インスタンスで(Amazon Linuxです)、pythonのバージョンを確認すると
# python --version
Python 2.7.9
pythonのバージョンが2.7.9なのに対して、MySQL-python26が入っていました。
# yum list installed | grep python
MySQL-python26.x86_64 1.2.3-11.14.amzn1 @amzn-main
そのため、MySQL-python27をインストールします。
# yum install MySQL-python27
# yum list installed | grep python
MySQL-python26.x86_64 1.2.3-11.14.amzn1 @amzn-main
MySQL-python27.x86_64 1.2.3-11.14.amzn1 @amzn-main ★入った
Playbook側でも、MySQL-python27をインストールするように変更。
- name: Install MySQL-Python module
yum: name=MySQL-python27
playbookを実行し、エラーなく完了しました。
PLAY [Instance1] *****************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************
ok: [Instance1]
TASK [create mysql database] *****************************************************************************************************
changed: [Instance1]
TASK [create mysql user] *********************************************************************************************************
changed: [Instance1]
PLAY RECAP ***********************************************************************************************************************
Instance1 : ok=3 changed=2 unreachable=0 failed=0
以上でーす。