Apache-Httpd
與 LAMP DB 無關的方式來創建數據庫堆棧
是否有與 LAMP-MySQL(或等效)無關的方法來創建數據庫堆棧,其中包括:
- DB-user 和相關密碼
- 與使用者同名的數據庫
- 為數據庫設置主機(例如,
localhost
)- 授予使用者所有權限
我需要這種方式或方法的原因是在使用不同的 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
請注意,這是一個非常籠統、非常不完整的範例,讓您了解可以用來解決此問題的結構。