LAMP-MySQL(またはそれに対応するもの)はありますか?不可知論者データベーススタックを作成する方法は次のとおりです。
- DBユーザーと相対パスワード
- ユーザーと同じ名前のデータベース
- データベースのホストを設定します(例
localhost
:)。 - ユーザーにすべての権限を付与する
この方法やアプローチが必要な理由は、LAMPの一部として他のLAMP-MySQL(またはそれに対応する)データベースプログラムを使用するときの生活をより簡単にするためです。
たとえば、すべてのLAMPスタックに特にMySQLまたはMariaDBがあるわけではなく、各DB SQLバリアントにはわずかに異なるSQL構文またはDB-CLUI(Bash)拡張構文がある可能性があるため、LAMP-RDBMSに拘束されないように標準化を探すあります。
答え1
すでに存在するものがあるかどうかはわかりませんが(たとえば、Galaxyでは)、Ansibleはこれを行うためのすべてのコンポーネントを提供します。これが完了していないか、少なくとも公に公開されていない可能性が高いです。一つの理由は一つ合意された方法はもちろん、データベースの構成方法もどのDBテクノロジは通常設定する必要があります。だから自分でやってみるべきだと思います。
これを行う方法については、次の方法を調べてみることができます。
- 汎用パラメータセット(データベース技術、基本ユーザー、プライマリデータベースなど)が渡されることを期待する汎用データベースロールを作成します。
- 各データベース技術タイプに対して1つの役割を作成し、公開パラメータのみを渡します。その後、この役割はデータベース技術関連のタスクを実行してインスタンスを構成します。
- データベース技術の種類に基づいて、汎用データベースの役割に役割の依存関係を追加します。
偽の例:
script.yml
---
# Apply the 'db' role to DB hosts
- hosts: db_hosts
roles:
- db
ロール/db/defaults/main.yml
---
# Provide a default tech so one does not have to be passed at run time
db_technology: postgresql
役割/db/meta/main.yml
---
# Include the specific DB tech role, based on the value of 'db_technology'
dependencies:
- { role: postgresql, db_params: "{{ db_params }}", when: db_technology == 'postgresql' }
- { role: mysql, db_params: "{{ db_params }}", when: db_technology == 'mysql' }
ロール/db/タスク/main.yml
---
# Do tasks that are common to all DB types here
ロール/postgresql/tasks/main.yml
---
# Do postgresql specific tasks here
役割/mysql/tasks/main.yml
---
# Do mysql specific tasks here
最後に、次のコマンドを実行できます。
ansible-playbook -e "db_technology=mysql, db_params={'users': {'someuser': 'somepassword'}, 'dbs': ['some_db_name', 'another_db_name']" playbook.yml
これは、この問題を解決するために使用できる構造に関するアイデアを提供するための非常に一般的で不完全な例です。