#はじめに
Ansibleを使用してMySQLインストールを行う際の手順を記述します
サンプルアプリケーションはgithubになります
##前提事項
Ansibleセットアップ手順はREADMEを参照ください
アプリケーション環境構築イメージはアプリケーション環境構築(Ansible)を参照ください
#MySQLインストール(Ansible)
MySQLインストールを行うplaybookを定義します
ファイル | 内容 |
---|---|
変数ファイル | MySQLのユーザやDB等の変数を定義します |
タスクファイル | MySQL関連のパッケージのインストールやユーザ及びDB作成等を定義します |
##MySQL関連のパッケージインストール
MySQL関連のパッケージをインストールします
- name: MySQL関連のパッケージインストール
apt:
force_apt_get: yes
state: latest
name:
- mysql-server-5.7
- mysql-client-5.7
- python-mysqldb
各項目の説明は以下のとおり
項目 | 内容 |
---|---|
force_apt_get | 警告を回避するためにapt-get使用を指定します ※詳細は#56832を参照ください |
state | latestを指定して最新バージョンをインストールします |
name | mysqlサーバ等の必要なパッケージ名を指定します |
##rootユーザのパスワード設定
rootユーザのパスワード設定を行います
- name: rootユーザのパスワード設定
mysql_user:
login_user: "{{ admin_user_name }}"
login_password: "{{ admin_user_password }}"
name: "{{ admin_user_name }}"
password: "{{ admin_user_password }}"
check_implicit_admin: yes
state: present
各項目の説明は以下のとおり
項目 | 内容 |
---|---|
login_user | MySQL接続時のユーザ名(root)を指定します |
login_password | MySQL接続時のパスワードを指定します |
name | ユーザ名(root)を指定します |
password | パスワードを指定します |
check_implicit_admin | パスワードなしでログイン可能かをチェックします ※MySQLインストール直後はrootユーザのパスワードはないためチェックを行います |
state | presentを指定してパスワード変更済の場合はスキップします |
##匿名ユーザ削除
セキュリティを強化するため匿名ユーザを削除します
- name: 匿名ユーザ削除
mysql_user:
login_user: "{{ admin_user_name }}"
login_password: "{{ admin_user_password }}"
name: ''
host_all: yes
state: absent
各項目の説明は以下のとおり
項目 | 内容 |
---|---|
login_user | MySQL接続時のユーザ名(root)を指定します |
login_password | MySQL接続時のパスワードを指定します |
name | 匿名ユーザを指定します |
host_all | 全ホストを対象にします |
state | 該当ユーザが存在する場合は削除します |
##文字コード設定変更
MySQLの文字コードを変更します
- name: MySQL接続時の文字コードセット
lineinfile:
path: /etc/mysql/conf.d/mysql.cnf
insertafter: '\[mysqld\]'
line: 'default-character-set=utf8mb4'
- name: サーバ起動時の文字コードセット
lineinfile:
dest: /etc/mysql/mysql.conf.d/mysqld.cnf
insertafter: '\[mysqld\]'
line: "character-set-server=utf8mb4"
各項目の説明は以下のとおり
項目 | 内容 |
---|---|
path | 変更ファイルのパスを指定します |
insertafter | 文字列の挿入先を指定します |
line | 挿入する文字列を指定します |
##DB作成
MySQLのDBを作成します
- name: DB作成
mysql_db:
login_user: "{{ admin_user_name }}"
login_password: "{{ admin_user_password }}"
name: "{{ db_name }}"
state: present
encoding: utf8mb4
各項目の説明は以下のとおり
項目 | 内容 |
---|---|
login_user | mysql接続時のユーザ名(root)を指定します |
login_password | mysql接続時のパスワードを指定します |
name | DB名を指定します |
state | 該当DBが存在する場合はスキップします |
encoding | DBの文字コードを指定します |
##ユーザ追加
MySQLのユーザを作成します
- name: ユーザ追加
mysql_user:
login_user: "{{ admin_user_name }}"
login_password: "{{ admin_user_password }}"
name: "{{ user_name }}"
password: "{{ user_password }}"
priv: '{{ db_name }}.*:ALL'
state: present
各項目の説明は以下のとおり
項目 | 内容 |
---|---|
login_user | MySQL接続時のユーザ名(root)を指定します |
login_password | MySQL接続時のパスワードを指定します |
name | ユーザ名を指定します |
password | パスワードを指定します |
priv | DBの権限付与を指定します |
state | 該当ユーザが存在する場合はスキップします |
##MySQLサービス再起動
MySQLサービスを再起動します
- name: mysqlサービス再起動
service:
name: mysql
enabled: yes
state: restarted
各項目の説明は以下のとおり
項目 | 内容 |
---|---|
name | mysqlを指定します |
enabled | yesを指定してサーバ起動時にサービスの起動を行います |
state | restartedを指定して再起動を行います |
#参考情報