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

この記事は公開されてから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

以上でーす。