我研究了 Ansible 來設定新伺服器,效果很好。我的遊戲安裝了 MySQL、Nginx 等。現在我想知道將它用作配置管理工具的最佳方法是什麼。
我們在每台伺服器上運行多個網站。對我來說,這意味著每台伺服器上的常規 Nginx 設定以及每個網站/網域所需的特定配置。我認為,當我需要時(例如新的見解或安全性),我可以使用 Ansible 獨立更新常規設定和特定配置。
在這種情況下我需要做什麼?這是否需要我保留一個變數來保存所有網站以及它們位於哪個網站?或者,有更好的選擇嗎?
答案1
模板的一個功能是它的模板功能,您可以利用該功能來實現此目的。
這範本模組可讓您為每個主機部署具有唯一值的檔案。目前正在使用的主機的名稱保存在 inventory_hostname 和 inventory_hostname_short 變數中(後者是主機名稱的第一個點部分)。
您可以將主機特定變數儲存在 group_vars/all 的字典中。例如:
www_sites: {
host1: "www.mysite1.com",
host2: "www.mysite2.com",
}
然後 nginx conf 檔案的範本可以包含以下內容:
server {
listen 80;
server_name {{ www_sites[inventory_hostname_short] }};
access_log logs/{{ www_sites[inventory_hostname_short] }}.access.log main;
Ansible 使用的 Jinja2 範本語言的文檔可以找到這裡。
答案2
我使用變數對相關主機執行特定操作。我的建議是盡可能將主機分組並使用群組變數。請記住,Ansible playbook 對於 git 或 SVN 中的版本控制非常有用,因此您可以追蹤您的變更。
可能對您有用的方法是使用vars_prompt
,特別是如果您不運行在 cron 上安排的劇本。
希望這可以幫助!