
我正在考慮擁有一個劇本,當伺服器位於群組中時運行某個任務,而當伺服器不在群組中時運行另一個任務。
假設我有一個包含所有伺服器的 office1,並且有一個主 DHCP 伺服器:
[office1]
server1
server2
server3
[dhcp]
server2
我想確保我只有一台 DHCP 伺服器:
- include: tasks/add-dhcp.yml
when: inventory_hostname in dhcp
- include: tasks/remove-dhcp.yml
when: inventory_hostname not in dhcp
這樣,當我將 DHCP 更改為 server3 時,它將安裝在 3 上並從 2 上刪除。
有什麼想法嗎?這是一個壞主意嗎?你會如何解決這個問題?
答案1
如果這種方法對您有用,那就採用它。定義配置的方式沒有什麼好壞之分。除此之外,您還可以使用變數。
然而,條件應該如下所示:
- include_tasks: tasks/remove-dhcp.yml
when: `dhcp` not in group_names
group_names
是一個魔法變數其中包含執行目標所屬的所有群組的清單。