首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LAMP DB -不可知的创建DB堆栈的方法

问LAMP DB -不可知的创建DB堆栈的方法
EN

Unix & Linux用户
提问于 2019-01-16 02:32:53
回答 1查看 57关注 0票数 0

是否有LAMP-MySQL (或等效的)不可知论的方法来创建一个DB堆栈,包括:

  1. DB-用户和相关密码
  2. 与用户同名的DB。
  3. 为DB设置主机(例如,localhost)
  4. 授予用户所有特权

我需要这样一种方式或方法的原因是,当使用不同的LAMP-MySQL (或类似的) DB程序作为LAMP的一部分时,会有更轻松的生活。

例如,并不是所有的LAMP堆栈都有特别的MySQL或MariaDB,对于每个MySQL变体,SQL语法或DB (Bash)扩展语法可能略有不同,因此我寻求以LAMP-RDBMS无关的方式进行标准化。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-01-23 11:46:42

我不确定是否已经存在任何东西(即银河系统),但是Ansible无疑提供了所有的构建块来实现这一点。之所以没有这样做,或者至少没有公开发布,是因为没有一种方法来配置数据库,更不用说一种商定的方法,即任何DB技术都应该进行一般配置。所以我猜你需要自己动手。

至于如何做到这一点,我可能会研究一种方法:

  • 编写一个通用DB角色,该角色期望向其传递一系列公共参数(即DB技术、默认用户、默认DB)
  • 为每种DB技术类型编写一个角色,该角色只能传递公共参数。然后,该角色将运行特定于DB技术的任务,以提供实例。
  • 将角色依赖项添加到常规DB角色中,条件是DB技术类型

一个伪例子:

playbook.yml

代码语言:javascript
复制
---

# Apply the 'db' role to DB hosts
- hosts: db_hosts
  roles:
    - db

角色/db/默认值/main.yml

代码语言:javascript
复制
---

# Provide a default tech so one does not have to be passed at run time
db_technology: postgresql

角色/db/meta/main.yml

代码语言:javascript
复制
---

# 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

代码语言:javascript
复制
---

# Do tasks that are common to all DB types here

角色/postgresql/任务/main.yml

代码语言:javascript
复制
---

# Do postgresql specific tasks here

角色/mysql/任务/main.yml

代码语言:javascript
复制
---

# Do mysql specific tasks here

最后,可以通过以下方式运行:

代码语言:javascript
复制
ansible-playbook -e "db_technology=mysql, db_params={'users': {'someuser': 'somepassword'}, 'dbs': ['some_db_name', 'another_db_name']" playbook.yml

请注意,这是一个非常普遍的,非常不完整的例子,给你一个结构的想法,你可以用来解决这个问题。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/494711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档