Configuration-Management

如何使用 Ansible 管理具有多網站配置的多伺服器?

  • October 15, 2015

我研究了 Ansible 來提供新的伺服器,這很好用。我的遊戲安裝了 MySQL、Nginx 和其他所有東西。現在我想知道將它用作配置管理工具的最佳方式是什麼。

我們在每台伺服器上執行多個網站。對我來說,這意味著每個伺服器上的通用 Nginx 設置以及每個站點/域所需的特定配置。我記得我可以在需要時使用 Ansible 獨立更新正常設置和特定配置(比如說新的見解或安全性)。

在這種情況下我需要做什麼?這是否需要我保留一個變數來保存所有站點以及它們在哪個站點上?或者,有沒有更好的選擇?

模板的一個特性是它的模板功能,你可以使用它來實現這個目的。

模板模組允許您為每個主機部署具有唯一值的文件。目前正在處理的主機名保存在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 模板語言的文件可以在這裡找到。

引用自:https://serverfault.com/questions/729018