2015-09-19 40 views
1

我希望分發一些可靠的部署腳本,客戶只需描述其基礎架構並將一些重要值放入清單文件即可。有時,單個角色可能需要多次應用於單個主機。爲了使客戶不必進行修改的劇本本身,我想爲他們能夠描述的基礎設施類似以下內容:Ansible:在單個主機上多次運行單個播放

inventory_file

[servers:children] 
servers-a 
servers-b 

[servers-a] 
host1 server_port=1337 

[servers-b] 
host1 server_port=1335 

劇本。陽明海運

--- 

- name: Set up Servers 
    hosts: servers 
    roles: 
    - role: server_setup 

我知道了allow_duplicates的一個角色 meta值它爲示例的「服務器」角色啓用。看起來這個角色只會在上面的劇本和後面定義的變量中應用一次。

我知道一個解決方案,它將爲主機創建其他主機名別名。

是否有人熟悉更好的解決方案?

回答

1

如果我理解正確的問題,有時的值應該是13351337

我不會推薦以這種方式創建廣告資源,因爲它具有誤導性。 如果服務器端口的值總是13351337,我會defaults\main.yml下配置在server_setup一個缺省值:

# server_setup\defaults\main.yml 
server_port: 1335 

如果任何其他的值應該被配置可以執行劇本如下:

ansible-playbook playbook.yml --limit=host1 --extra-vars "server_port=1337" 

在這種情況下,客戶可以根據需要多次運行劇本。

+0

我問的問題是如何將角色應用到服務器兩次,使用兩個不同的端口號,而不管默認設置是什麼。 – caylorme

相關問題