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

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

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

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

Ansible

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

Q&A

解決済

1回答

1146閲覧

Ansibleで複数のサーバに対してDBユーザを作成したい

nyonyosuke

総合スコア73

MySQL

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

Ansible

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

0グッド

0クリップ

投稿2020/07/29 04:26

複数のMySQLサーバを運用中でそれぞれのサーバに対して一律に複数のDBユーザを作成したいと考えています。

以下のようなロールを作成して
login_host: MYSQLサーバA
の部分にサーバ名を直接入れると正常にユーザが作成されることを確認しています。

- name: MySQLユーザの作成と権限の付与 mysql_user: login_user: "{{ db_vars.admin.username }}" login_password: "{{ db_vars.admin.password }}" login_host: MYSQLサーバA name: "{{ item.name }}" host: '%' priv: >- {%- if item.db_admin -%} *.*:SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,RELOAD,PROCESS,REFERENCES,INDEX,ALTER,SHOW DATABASES,CREATE TEMPORARY TABLES,LOCK TABLES,EXECUTE,REPLICATION SLAVE,REPLICATION CLIENT,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,CREATE USER,EVENT,TRIGGER {%- else -%} *.*:SELECT {%- endif -%} password: "{{ item.dbpass }}" check_implicit_admin: yes state: "{{ item.dbuser_state }}" with_items: "{{ user_vars.aws.iam.users }}"

次にサーバが複数あるため別のvarsファイルを作成してそちらを読み込ませて(login_hostの部分に下記に記したサーバ)サーバごとにループして同じユーザを作りたいのですがどのようにすれば宜しいでしょうか。

db_vars: hosts_loop: db_host1: hostname: xxxxx.xxxx.xxxxx username : root password: password db_host2 hostname: yyyyy.yyyy.yyy username : root password: password

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

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

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

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

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

guest

回答1

0

ベストアンサー

修正

次の記法で実現できそうです:

with_nested/with_cartesian | Loops — Ansible Documentation
cartesian – returns the cartesian product of lists — Ansible Documentation

元の回答

次のどちらかで実現できそうです:

with_subelements の記法の例はわかりにくいので、
次の例の方が理解しやすいかもしれません:

Answer: Double loop Ansible

投稿2020/07/29 04:50

編集2020/07/29 07:31
y_shinoda

総合スコア3272

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

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

nyonyosuke

2020/07/29 07:04

ご回答ありがとうざいます。 同じvarファイル内で入れ子の場合はwith_subelementsで出来たのですが今回varsファイルが分かれおり(サーバを記載したvarsとユーザを記載したvars)こちらをどのように合わせて入れ子のループにするかという部分で悩んでおります。
y_shinoda

2020/07/29 07:32

回答を修正しました 組み合わせ演算になるので、もし明確な親子関係があるとできないかもしれませんが、 全組み合わせで実行するのであれば役立つのではないかと思います
nyonyosuke

2020/07/30 04:42

ありがとうざいます!! 下記のwith_nestedで出来ました with_nested: - "{{ db_vars.hosts_loop }}" - "{{ user_vars.aws.iam.users }}"
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問