Apache-Httpd

與 LAMP DB 無關的方式來創建數據庫堆棧

  • January 23, 2019

是否有與 LAMP-MySQL(或等效)無關的方法來創建數據庫堆棧,其中包括:

  1. DB-user 和相關密碼
  2. 與使用者同名的數據庫
  3. 為數據庫設置主機(例如,localhost
  4. 授予使用者所有權限

我需要這種方式或方法的原因是在使用不同的 LAMP-MySQL(或等效)數據庫程序作為 LAMP 的一部分時,生活會更輕鬆。

例如,並非所有 LAMP 堆棧都具有特別的 MySQL 或 MariaDB,並且 SQL 語法或 DB-CLUI (Bash) 擴展語法對於每個 DB SQL 變體可能略有不同,因此我以 LAMP-RDBMS 不可知的方式尋求標準化。

我不確定是否已經存在任何東西(即在 Galaxy 中),但 Ansible 確實提供了所有建構塊來做到這一點。這很可能沒有完成,或者至少沒有公開發布的一個原因是,沒有一種配置數據庫的方法,更不用說通常應該配置**任何數據庫技術的公認方法。**所以我猜你需要自己滾動這個。

至於如何去做,我可能會研究一種方法:

  • 編寫一個通用的 DB 角色,期望將一系列通用參數傳遞給它(即 DB 技術、預設使用者、預設 DB)
  • 為每個 DB 技術類型編寫一個角色,該角色只能傳遞公共參數。然後,此角色將執行特定於數據庫技術的任務來配置您的實例
  • 將角色依賴項添加到您的正常數據庫角色中,具體取決於數據庫技術類型

一個偽例子:

劇本.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/tasks/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

請注意,這是一個非常籠統、非常不完整的範例,讓您了解可以用來解決此問題的結構。

引用自:https://unix.stackexchange.com/questions/494711