LoginSignup
1
0

More than 5 years have passed since last update.

MAC環境にAnsible導入後、AWSサービス構築までの道〜番外編:DB構築(MySQL)〜

Posted at

番外編
Ansibleで新規データベース作成、新規ユーザー作成、データインポートを行う

やりたいこと

  1. 新規DB作成
  2. 新規ユーザー作成
  3. 既存DBよりデータdump
  4. 新規DBへデータインポート

事前準備

AnsibleよりMySQLを実行する際にMySQL-pythonが必要となる。
私の環境ではMySQL-python26では上手く動かず、MySQL-python27をインストールすることで動くようになりましたので、バージョンを指定しています。

MySQL-python26の際に出たエラー内容は「MySQL-pythonがない」というエラーでした。
MySQL-pythonがインストールされているにも関わらず、エラーになる場合はバージョンを変更して試してみるといいかもしれません。

sudo yum install MySQL-python27.x86_64

create_database.yml作成

変数化できる部分はvars_filesにまとめています。

create_database.yml
# MySQL関連のモジュールを利用する際のログインユーザー情報ファイルの作成
- name: Create .my.cnf
  template:
    src: templates/my.cnf.j2
    dest: /root/.my.cnf
    owner: root
    group: root
    mode: 0600

# 新規データベース作成
- name: Create Database
  mysql_db:
    login_host: "{{ db_host }}"
    login_user: "{{ db_root_user }}"
    login_password: "{{ db_root_pass }}"
    name: "{{ prefix }}_{{ project_name }}"
    encoding: utf8
    state: present

# 新規ユーザー作成
- name: Create User
  mysql_user:
    login_host: "{{ db_host }}"
    login_user: "{{ db_root_user }}"
    login_password: "{{ db_root_pass }}"
    host: '%'
    name: "{{ db_user }}"
    password: "{{ db_pass }}"   
    append_privs: yes
    priv: "{{ prefix }}_{{ project_name }}.*:ALL,GRANT"
    state: present

# 既存DBよりデータdump
# 既存DBからdumpするため、新規DBとは別hostを指定する
- name: Create Dump
  mysql_db:
    login_host: "{{ db_dump_host }}"
    login_user: "{{ db_dump_user }}"
    login_password: "{{ db_dump_pass }}"
    name: "{{ db_dump_name }}"
    target: /tmp/{{ db_dump_name }}_{{ now_date }}.sql
    encoding: utf8
    single_transaction: yes
    state: dump

# 新規DBへデータインポート
- name: Import Date
  mysql_db:
    login_host: "{{ db_host }}"
    login_user: "{{ db_user }}"
    login_password: "{{ db_pass }}"
    name: "{{ prefix }}_{{ project_name }}"
    target: /tmp/{{ db_dump_name }}_{{ now_date }}.sql
    encoding: utf8
    state: import

実行

以下コマンドにて実行。
「-vvv」をつけることで、詳細な実行ログが出力されます。
エラーが出ている際など、非常に助かるので常にオプション付与して実行しています!

ansible-playbook -vvv -i localhost, -c local create_database.yml

確認

新規データベースに作成したユーザーでアクセスできること。
インポートしたデータが確認できること。

感想

コマンドラインとあまり変わらない感じですが、自動化することで作業時間の短縮には繋がりました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0