2015年12月15日火曜日

[ansible] Amazon Linux でAnsibleのMySQLモジュールを使う (CentOS,Ubuntuも対応)


ども。 なのまるです!

AnsibleでMySQLのユーザーアカウント管理ができると知り。
Ansibleでmysqlユーザー追加したい!とか思ってやってみたんですけど。

ハマったので、メモです!


もくじ



エラーが出る。。。

Ansibleが実行される対象のサーバー(セットアップされる側)にPythonモジュールが入っていないと、うまく動かないみたいでした・・・
TASK: [mysql | conf mysql] ***********************************************
failed: [192.168.XXX.XXX] => {"failed": true}
msg: the python mysqldb module is required
 
FATAL: all hosts have already failed -- aborting
このメッセージですね!
the python mysqldb module is required

解決方法

  • Amazon Linuxの場合
python --version
Python 2.6.9
sudo yum install MySQL-python
Amazon Linuxは検索してみると、
  • MySQL-python26
  • MySQL-python27
があるんですが、自動的に「MySQL-python26」が、入るようです!

これで、大丈夫でした~

Ubuntuの場合

ちなみに、Ubuntuの場合は
sudo apt-get install python-mysqldb
で、入るらしいっすよ!


おまけ:Ansibleでやる場合

taskの例を書いておきます。
  • state
  • environment
は、お好みで!
- name: install package
  yum: name={{ item }} state=latest
  with_items:
    - MySQL-python
  #environment: proxy_env
  when: when: (ansible_os_family == "RedHat")
  tags: python-mysqldb

- name: install package
  apt: name={{ item }} state=latest
  with_items:
    - python-mysqldb
  #environment: proxy_env
  when: (ansible_distribution == "Ubuntu")
  tags: python-mysqldb  

まとめ

  • Amazon Linuxなら、「MySQL-python」
  • Ubuntuなら、「python-mysqldb」
  • RHEL/CentOSなら、「MySQL-python」

mysql_user - Adds or removes a user from a MySQL database. — Ansible Documentation

Zenback