■OSにログインするたびに「LC_CTYPE: cannot change locale」のようなエラーが表示される
Trouble.txt の同項目を参照。
Ansibleで無効化する方法は、このファイル内の「ロケールの作成」を参照。
■MySQLの起動失敗
初回構築時にMySQLのユーザやデータベースも作成しようとするとエラーになってMySQLが起動しない。
notifyでの再起動は最後にまとめて1回行われる仕様みたい。
MySQL以外も含めたすべてのタスクが完了してから、まとめて再起動が行われる。
つまり、MySQLの再起動を行う前にデータベースやユーザを作ろうとするためエラーになるみたい。
Ansible: notify と handlers の使い方について調べた - CUBE SUGAR CONTAINER
https://blog.amedama.jp/entry/2015/09/01/214912
対策に
- name: restart mysql
service: name=mariadb state=restarted
で再起動はできるが、必ず再起動してしまう問題がある。
そもそも、データベース作成とユーザ作成はAnsibleの管轄外とする方がいいか。
Deployerで「setup」のようなタスクを用意して、MySQLにユーザとDBを作成して、トップページのサンプルも更新するか。
もしくはこれは単なるデータ登録だしパスワードも含むので、特にコード管理する必要は無いか。
gitからのPULLやそのための鍵登録などもその際に行うか。
DeployerでLaravelをデプロイする - Qiita
https://qiita.com/shalman/items/c09eb23137a9d5269f10
Deployer自体のインストールはtargetではなくcontrollerにインストールするので、Deployer自体のインストールは問題ないはず。
以下のコマンドでMySQLを削除できる。データベースのインストールだけ再度試す場合に。
# rpm -qa | grep aria
# yum remove mariadb-libs-5.5.60-1.el7_5.x86_64
Ansibleの事例とちょっとしたTips - Qiita
https://qiita.com/volanja/items/d38fe0678848bae6902f
MySQLのバージョンは関係ないと思うが一応。
AnsibleでMySQLの新しいバージョンをインストールしてDB・ユーザ作成する時の注意点 - Qiita
https://qiita.com/bboobbaa/items/d2288724bdefeff1c550
■MySQLのユーザを手動で作る
MySQLのユーザを手動で作る場合、targetサーバのMySQLにrootでパスワードなしでログインして以下を実行する。
$ mysql -u root
>CREATE USER vagrant@localhost IDENTIFIED BY 'abcd1234';
データベースも作成する場合、以下を実行する。
>CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;
以下のコードで、PHPからMySQLに接続できる。
<?php
try {
$pdo = new PDO(
'mysql:dbname=test;host=localhost',
'vagrant',
'abcd1234'
);
$stmt = $pdo->query('SELECT NOW() AS now;');
$data = $stmt->fetch(PDO::FETCH_ASSOC);
echo "<p>MySQL=" . $data['now'] . "</p>\n";
$pdo = null;
} catch (PDOException $e) {
exit($e->getMessage());
}