Ansibleでcreate databaseをしたときにでたエラーの対処

2019.01.17

バンクーバーの塩谷です。

端末(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

以上でーす。