我的設置包含「服務器對」,這意味着我的服務的每個「實例」都由(通常)不同主機上的兩臺服務器(如數據庫和Web)組成。也就是說,我沒有一個數據庫服務器可以與許多Web服務器進行通信 - 相反,每個Web服務器都會與自己的數據庫服務器通信。我想管理多個這樣的對,但我不知道使用Ansible對這些對進行建模的最佳方法。使用Ansible管理服務器對
Ansible中的主要組織工具似乎是團體和角色。但是,這些只能將同一種類的主機組合在一起。例如,我可以使用它在我的數據庫和Web服務器上設置必要的軟件。但是,我不認爲我可以使用組或角色來告訴每個Web服務器只使用一個數據庫服務器。
使用Ansible組對一對服務器進行建模也沒有意義,因爲我無法區分這些組中的兩個不同角色。
雖然我的設置由服務器對我也很有興趣建模n
至 - m
主機關係的多個實例(比如n
數據庫服務器和m
Web服務器)的總稱。
這有效,但相當麻煩:首先,我需要兩個方向的信息(例如允許從數據庫服務器上的Web服務器進行遠程訪問),所以我需要爲每個數據庫添加'webserver = ...'服務器,這是冗餘信息,使維護變得更加困難。其次,在Web和數據庫服務器(例如數據庫用戶名)之間共享變量沒有很好的方法,因爲變量是全局,每個組或每次播放定義的。 –
我想你可以通過使用'hostvars'來找到合適的網絡服務器來避免重複信息,而不必在清單中明確記錄這些信息(例如,搜索具有'dbserver = <此數據庫服務器>的網絡服務器)。您可以絕對地共享數據庫用戶名等信息,方法是將其聲明爲通用角色,並將其包含在您需要該信息的任何播放中。 – larsks
感謝您的更新。我結束了使用不同的方法(請參閱我的答案),但我很感激您的輸入! –