質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

2回答

3117閲覧

ansible-role-mysqlのroleでdatabaseとuserを追加する方法が知りたい

kuriya

総合スコア35

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

0クリップ

投稿2017/03/09 01:33

編集2017/03/09 01:56

ansible-role-mysqlを使ってdatabaseとuserを追加したいのですが、方法が分かりません。

https://github.com/geerlingguy/ansible-role-mysql/blob/master/defaults/main.yml
こちらの

# Databases. mysql_databases: [] # - name: example # collation: utf8_general_ci # encoding: utf8 # replicate: 1 # Users. mysql_users: [] # - name: example # host: 127.0.0.1 # password: secret # priv: *.*:USAGE

この辺りのコメントを外して

# Databases. mysql_databases: [] - name: example collation: utf8_general_ci encoding: utf8 replicate: 1 # Users. mysql_users: [] - name: example host: 127.0.0.1 password: secret priv: *.*:USAGE

みたのですがエラーが出てダメでした。
エラーの内容は以下です。

ERROR! Syntax Error while loading YAML. The error appears to have been in 'ここはrootパス/roles/geerlingguy.mysql/defaults/main.yml': line 101, column 4, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: mysql_databases: [] - name: takeoec ^ here

そこで以下のようにしてみたところ

# Databases. mysql_databases: - name: example collation: utf8_general_ci encoding: utf8 replicate: 1 # Users. mysql_users: - name: example host: 127.0.0.1 password: secret priv: *.*:USAGE

以下のようなエラーが出ました。

The error appears to have been in 'ここはrootパス/roles/geerlingguy.mysql/defaults/main.yml': line 111, column 13, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: password: secret priv: *.*:USAGE ^ here

そこで

# Databases. mysql_databases: - name: example collation: utf8_general_ci encoding: utf8 replicate: 1 # Users. mysql_users: - name: example host: 127.0.0.1 password: secret priv: "example.*:ALL"

以下のようなエラーが出ました。

TASK [geerlingguy.mysql : Disallow root login remotely] ************************ failed: [default] (item=DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')) => {"changed": false, "cmd": ["mysql", "-NBe", "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')"], "delta": "0:00:00.008562", "end": "2017-03-09 01:21:59.108040", "failed": true, "item": "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')", "rc": 1, "start": "2017-03-09 01:21:59.099478", "stderr": "ERROR 1146 (42S02) at line 1: Table 'mysql.user' doesn't exist", "stdout": "", "stdout_lines": [], "warnings": []} to retry, use: --limit @ここはrootパス/lamp.retry

ここで手詰まりでどうしたら良いか分かりません。

ご教授願います。

環境は
vgrantで実装していて
centos6.7を使っています。
https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box
roleは他に
https://galaxy.ansible.com/geerlingguy/php/
https://galaxy.ansible.com/geerlingguy/apache/
を入れています。

今回のソースは以下です。
https://github.com/geerlingguy/ansible-role-mysql
https://galaxy.ansible.com/geerlingguy/mysql/

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

roleを実行するpalybookに変数を入れて実行することにしました。

--- - hosts: all become: true roles: - name: geerlingguy.mysql vars: mysql_databases: - name: example collation: utf8_general_ci encoding: utf8 replicate: 1 mysql_users: - name: example host: 127.0.0.1 password: secret priv: "example.*:ALL" tags: - mysql - name: geerlingguy.apache tags: - apache - name: geerlingguy.php tags: - php

これで治りました。

投稿2017/03/09 05:42

kuriya

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

普通にSQLが失敗しているだけですね。
ちなみにそのエラーはissue登録されてますのでご確認ください。
https://github.com/geerlingguy/ansible-role-mysql/issues/57

ローカルホスト以外からアクセス可能なrootアカウントを削除するだけのタスクっぽいので、当該タスクをデータベース作成後に実行すれば大丈夫な気がしますが、このプレイブックを利用したことがないのでなんとも言えないです・・・。

ちなみに第三者が作成したプレイブックを使用する場合は事前に内容を精査したほうが良いですよ!

投稿2017/03/09 02:42

編集2017/03/09 02:45
xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuriya

2017/03/09 04:35

ご回答ありがとうございます。 https://github.com/geerlingguy/ansible-role-mysql/issues/57を読んだのですが理解出来ませんでした涙 roleを実行するpalybookに変数を入れて実行することにしました。 ``` --- - hosts: all become: true roles: - name: geerlingguy.mysql vars: mysql_databases: - name: example collation: utf8_general_ci encoding: utf8 replicate: 1 mysql_users: - name: example host: 127.0.0.1 password: secret priv: "example.*:ALL" tags: - mysql - name: geerlingguy.apache tags: - apache - name: geerlingguy.php tags: - php ``` このようにしたところ ``` TASK [geerlingguy.mysql : Ensure MySQL is started and enabled on boot.] ******** fatal: [default]: FAILED! => {"changed": false, "failed": true, "msg": "MySQL Daemon failed to start.\nStarting mysqld: [FAILED]\r\n"} ``` という*ERROR*が出てしまいました。 どうすれば良いのでしょうか?
kuriya

2017/03/09 05:41

vagrant destroyしてvagrant upし直したところ治りました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問